From mboxrd@z Thu Jan 1 00:00:00 1970 From: eric.piel@tremplin-utc.net Date: Thu, 18 Dec 2003 16:44:02 +0000 Subject: High Resolution Timers on IA64 MIME-Version: 1 Content-Type: multipart/mixed; boundary="-MOQ1071765842e644c955937d5242812208d4912657f0" Message-Id: List-Id: To: linux-ia64@vger.kernel.org This message is in MIME format. ---MOQ1071765842e644c955937d5242812208d4912657f0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Hello, Here is the first version of IA64 support for the High Resolution Timers Project. Let me sum up briefly the project for those not familiar with it: The aim of the High Resolution Timers Project is to get rid of the current 1 jiffy resolution of the kernel for the timers (and sleeps) to reach a resolution closer to the one provided by the hardware. Grossly speaking, this feature is implemented by scheduling additional clock ticks exactly at the time the next high resolution timer is due to expire. For instance, on our 1Ghz IA64 we measured timers with a resolution a bit smaller than 10 microseconds (while for now it's around 1 millisecond). Interestingly, on a x86 with the same frequency we obtained a resolution around 30 microseconds. In order to try the patch you'll have to get a vanilla kernel 2.6.0-test5 and then apply in order those patches: *official ia64 patch *official HRT patch for 2.6.0-test5 (available at sourceforge.net/projects/high-res-timers, it doesn't apply cleanly, don't worry) *2.6.0-t5-hrt_syscalls.diff (it's available in the latest kernels, just correct some typos) *hrtimers-2.6.0-test5-compil-20031213.patch (an update for the official HRT patch) *hrtimers-ia64-2.6.0-test5-20031218.patch (the real thing) In the config you'll have to enable HRT and select ITC as the source clock. After the reboot you should get a HRT actived kernel :-) To use the feature from the kernel (in a driver for instance) you just create timers normally and modify a new field "sub_jiffies". This field contains a value between 0 and arch_cycles_per_jiffy - 1. On the userland side you access the high resolution timers through the new POSIX RT syscalls clock_*() and timer_*(), using the clock_id CLOCK_REALTIME_HR. As there isn't yet support for those syscalls in the glibc you have to link with a small special library. Get and apply hrtimers-support-2.5.62-1.0.patch (from sourceforge.net/projects/high-res-timers, don't worry about the old version number) and then apply hrtimers-support-ia64-2.6.0-t5-20031212.patch . Then you compile your code with -lposixtime . Note about this release: Please consider this code as alpha. It shouldn't do bad things on your machine but there is a known bug that causes some timers to still have a resolution around one jiffy, especially on CPUs other than the time-keeper. Any comment, reports of success or failure would be very welcome! Thanks to Nick Pollitt for the original work on 2.4 and Alexandre Hessemann for the current support. Eric Piel PS: All the attached patches can also be found at http://pieleric.free.fr/hrt/ . ---MOQ1071765842e644c955937d5242812208d4912657f0 Content-Type: application/octet-stream; name="hrtimers-2.6.0-test5-compil-20031213.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="hrtimers-2.6.0-test5-compil-20031213.patch" ZGlmZiAtdXJOIC1YIC9ob21lL2VyaWMvZG9udGRpZmYgLXggJyouZGcnIGxpbnV4LTIuNi4wLXRl c3Q1LWhydC5vcmlnL2FyY2gvaTM4Ni9rZXJuZWwvYXBpYy5jIGxpbnV4LTIuNi4wLXRlc3Q1LWhy dC9hcmNoL2kzODYva2VybmVsL2FwaWMuYwotLS0gbGludXgtMi42LjAtdGVzdDUtaHJ0Lm9yaWcv YXJjaC9pMzg2L2tlcm5lbC9hcGljLmMJMjAwMy0xMC0xNiAxODowMToxMC4wMDAwMDAwMDAgKzAy MDAKKysrIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC9hcmNoL2kzODYva2VybmVsL2FwaWMuYwkyMDAz LTExLTI3IDIxOjQ5OjQ0LjAwMDAwMDAwMCArMDEwMApAQCAtMTA1MSw3ICsxMDUxLDcgQEAKIAkJ CQkJCXBlcl9jcHUocHJvZl9jb3VudGVyLCBjcHUpOwogCQl9CiAKLQkJZGlzY2lwbGluZV90aW1l cihjcHUpOworCQlkaXNjaXBsaW5lX3RpbWVyKGNwdSk7IC8vWFhYIHRoaXMgYXJndW1lbnQgaXMg dmVyeSB3ZWlyZCwgdGhlIGZ1bmN0aW9uIGV4cGVjdHMgYSBudW1iZXIgb2YgY3ljbGVzIGVsYXBz ZWQhCiAKICNpZmRlZiBDT05GSUdfU01QCiAJCXVwZGF0ZV9wcm9jZXNzX3RpbWVzKHVzZXJfbW9k ZShyZWdzKSk7CmRpZmYgLXVyTiAtWCAvaG9tZS9lcmljL2RvbnRkaWZmIC14ICcqLmRnJyBsaW51 eC0yLjYuMC10ZXN0NS1ocnQub3JpZy9hcmNoL2kzODYva2VybmVsL3RpbWUuYyBsaW51eC0yLjYu MC10ZXN0NS1ocnQvYXJjaC9pMzg2L2tlcm5lbC90aW1lLmMKLS0tIGxpbnV4LTIuNi4wLXRlc3Q1 LWhydC5vcmlnL2FyY2gvaTM4Ni9rZXJuZWwvdGltZS5jCTIwMDMtMTAtMTYgMTg6MDE6MTAuMDAw MDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMC10ZXN0NS1ocnQvYXJjaC9pMzg2L2tlcm5lbC90 aW1lLmMJMjAwMy0xMi0xMiAyMzoyMzozOC4wMDAwMDAwMDAgKzAxMDAKQEAgLTMxOSw3ICszMTks NyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBJZiB0aW1lIGlzIGFscmVhZHkgcGFzc2VkLCBq dXN0IHJldHVybiBzYXlpbmcgc28uCiAgICAgICAgICAqLwotICAgICAgICBpZiAoc3ViX2ppZmZf b2Zmc2V0IDwgMCkKKyAgICAgICAgaWYgKHN1Yl9qaWZmX29mZnNldCA8PSAwKQogICAgICAgICAg ICAgICAgIHJldHVybiAxOwogCiAJX19sYXN0X3dhc19sb25nID0gYXJjaF9jeWNsZXNfcGVyX2pp ZmZ5ID09IHN1Yl9qaWZmaWVfaW47CkBAIC0zMzIsNyArMzMyLDcgQEAKIHsKICAgICAgICAgc3Rh cnRfUElUKCk7CiB9Ci0jZW5kaWYgLyogQ09ORklHX19BUE0gKi8KKyNlbmRpZiAvKiBDT05GSUdf QVBNICovCiAjZW5kaWYgLyogQ09ORklHX0hJR0hfUkVTX1RJTUVSUyAqLwogCiAKZGlmZiAtdXJO IC1YIC9ob21lL2VyaWMvZG9udGRpZmYgLXggJyouZGcnIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC5v cmlnL2FyY2gvaTM4Ni9rZXJuZWwvdGltZXJzL2hydGltZXJfcG0uYyBsaW51eC0yLjYuMC10ZXN0 NS1ocnQvYXJjaC9pMzg2L2tlcm5lbC90aW1lcnMvaHJ0aW1lcl9wbS5jCi0tLSBsaW51eC0yLjYu MC10ZXN0NS1ocnQub3JpZy9hcmNoL2kzODYva2VybmVsL3RpbWVycy9ocnRpbWVyX3BtLmMJMjAw My0xMC0xNiAxODowMToxMC4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4wLXRlc3Q1LWhy dC9hcmNoL2kzODYva2VybmVsL3RpbWVycy9ocnRpbWVyX3BtLmMJMjAwMy0xMi0xMiAxOTo0MTow Ny4wMDAwMDAwMDAgKzAxMDAKQEAgLTE4OSw3ICsxODksNiBAQAogI2lmbmRlZiBDT05GSUdfU01Q CiAJCQljcHVfa2h6ID0gY3B1ZnJlcV9zY2FsZShjcHVfa2h6X3JlZiwgCiAJCQkJCQlyZWZfZnJl cSwgZnJlcS0+bmV3KTsKLQkJfQogI2VuZGlmCiAJfQogCmRpZmYgLXVyTiAtWCAvaG9tZS9lcmlj L2RvbnRkaWZmIC14ICcqLmRnJyBsaW51eC0yLjYuMC10ZXN0NS1ocnQub3JpZy9hcmNoL2kzODYv a2VybmVsL3RpbWVycy9ocnRpbWVyX3RzYy5jIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC9hcmNoL2kz ODYva2VybmVsL3RpbWVycy9ocnRpbWVyX3RzYy5jCi0tLSBsaW51eC0yLjYuMC10ZXN0NS1ocnQu b3JpZy9hcmNoL2kzODYva2VybmVsL3RpbWVycy9ocnRpbWVyX3RzYy5jCTIwMDMtMTAtMTYgMTg6 MDE6MTAuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMC10ZXN0NS1ocnQvYXJjaC9pMzg2 L2tlcm5lbC90aW1lcnMvaHJ0aW1lcl90c2MuYwkyMDAzLTEyLTEyIDIyOjIwOjA4LjAwMDAwMDAw MCArMDEwMApAQCAtMTYsNyArMTYsNyBAQAogZXh0ZXJuIGludCB4ODZfdWRlbGF5X3RzYzsKIGV4 dGVybiBzcGlubG9ja190IGk4MjUzX2xvY2s7CiAKLQorc3RhdGljIGludCB1c2VfdHNjOwogCiAv KiBDYWNoZWQgKm11bHRpcGxpZXIqIHRvIGNvbnZlcnQgVFNDIGNvdW50cyB0byBtaWNyb3NlY29u ZHMuCiAgKiAoc2VlIHRoZSBlcXVhdGlvbiBiZWxvdykuCkBAIC0xNjMsNiArMTYzLDcgQEAKICNp Zm5kZWYgQ09ORklHX1NNUAogCQljcHVfa2h6X3JlZiA9IGNwdV9raHo7CiAjZW5kaWYKKwl9CiAK IAlpZigodmFsID09IENQVUZSRVFfUFJFQ0hBTkdFICYmIChmcmVxLT5vbGQgPCBmcmVxLT5uZXcp KSB8fAogCSAgICh2YWwgPT0gQ1BVRlJFUV9QT1NUQ0hBTkdFICYmIChmcmVxLT5vbGQgPiBmcmVx LT5uZXcpKSl7CkBAIC0xOTUsNyArMTk2LDYgQEAKIAkJCQkJCXJlZl9mcmVxLCBmcmVxLT5uZXcp OwogI2VuZGlmCiAJCX0KLQl9CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtdXJOIC1YIC9ob21lL2Vy aWMvZG9udGRpZmYgLXggJyouZGcnIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC5vcmlnL2luY2x1ZGUv YXNtLWkzODYvaHJ0aW1lLmggbGludXgtMi42LjAtdGVzdDUtaHJ0L2luY2x1ZGUvYXNtLWkzODYv aHJ0aW1lLmgKLS0tIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC5vcmlnL2luY2x1ZGUvYXNtLWkzODYv aHJ0aW1lLmgJMjAwMy0xMC0xNiAxODowMToxMC4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIu Ni4wLXRlc3Q1LWhydC9pbmNsdWRlL2FzbS1pMzg2L2hydGltZS5oCTIwMDMtMTItMTIgMjM6MjU6 MjYuMDAwMDAwMDAwICswMTAwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+ CiAjaW5jbHVkZSA8bGludXgvc2NfbWF0aC5oPgkvKiBzY2FsaW5nIG1hdGggcm91dGluZXMgKi8K ICNpbmNsdWRlIDxhc20vZGVsYXkuaD4KLSNpbmNsdWRlIDxhc20vc21wLmg+CisjaW5jbHVkZSA8 bGludXgvc21wLmg+CiAjaW5jbHVkZSA8bGludXgvdGltZXguaD4JLyogZm9yIExBVENIICovCiAj aW5jbHVkZSA8YXNtL3BlcmNwdS5oPgogLyoKQEAgLTE3NywxMCArMTc3LDYgQEAKIAogZXh0ZXJu IGludCBfc2NoZWR1bGVfbmV4dF9pbnQodW5zaWduZWQgbG9uZyBqaWZmaWVfZiwgbG9uZyBzdWJf amlmZmllX2luKTsKIGV4dGVybiBpbnQgX3NjaGVkdWxlX2ppZmZpZXNfaW50KHVuc2lnbmVkIGxv bmcgamlmZmllX2YpOwotZXh0ZXJuIHVuc2lnbmVkIGludCB2b2xhdGlsZSBsYXRjaF9yZWxvYWQ7 Ci0KLUVYVEVSTiBpbnQgamlmZmllc19pbnRyOwotCiAKIC8qCiAgKiBOb3cgZ28gYWhlYWQgYW5k IGluY2x1ZGUgdGhlIGNsb2NrIHNwZWNpZmljIGZpbGUgNTg2LzM4Ni9hY3BpCkBAIC0zNTIsNyAr MzQ4LDcgQEAKIAlzcGluX3VubG9jaygmaTgyNTNfbG9jayk7CiAJcmV0dXJuOwogfQotI2VuZGlm CQkJCS8vICAhIENPTkZJR19YODZfTE9DQUxfQVBJQworI2VuZGlmCQkJCS8vICAhIFVTRV9BUElD X1RJTUVSUwogLyoKICAqIFRpbWUgb3V0IGZvciBhIGRpc2N1c3Npb24uICBCZWNhdXNlIHRoZSBQ SVQgYW5kIFRTQyAob3IgdGhlIFBJVCBhbmQKICAqIHBtIHRpbWVyKSBtYXkgZHJpZnQgV1JUIGVh Y2ggb3RoZXIsIHdlIG5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBqaWZmaWUKZGlmZiAtdXJOIC1YIC9o b21lL2VyaWMvZG9udGRpZmYgLXggJyouZGcnIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC5vcmlnL2lu Y2x1ZGUvYXNtLWkzODYvaHJ0aW1lLU01ODYuaCBsaW51eC0yLjYuMC10ZXN0NS1ocnQvaW5jbHVk ZS9hc20taTM4Ni9ocnRpbWUtTTU4Ni5oCi0tLSBsaW51eC0yLjYuMC10ZXN0NS1ocnQub3JpZy9p bmNsdWRlL2FzbS1pMzg2L2hydGltZS1NNTg2LmgJMjAwMy0xMC0xNiAxODowMToxMC4wMDAwMDAw MDAgKzAyMDAKKysrIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC9pbmNsdWRlL2FzbS1pMzg2L2hydGlt ZS1NNTg2LmgJMjAwMy0xMS0wOSAxMToyODoxOS4wMDAwMDAwMDAgKzAxMDAKQEAgLTM4LDYgKzM4 LDggQEAKIH07CiAjZW5kaWYKIAorZXh0ZXJuIHN0cnVjdCB0aW1lcl9vcHRzIGhydGltZXJfdHNj OworCiBleHRlcm4gaW5saW5lIHVuc2lnbmVkIGxvbmcKIHF1aWNrX2dldF9jcHVjdHIodm9pZCkK IHsKZGlmZiAtdXJOIC1YIC9ob21lL2VyaWMvZG9udGRpZmYgLXggJyouZGcnIGxpbnV4LTIuNi4w LXRlc3Q1LWhydC5vcmlnL2luY2x1ZGUvYXNtLWkzODYvaHJ0aW1lLU1hY3BpLmggbGludXgtMi42 LjAtdGVzdDUtaHJ0L2luY2x1ZGUvYXNtLWkzODYvaHJ0aW1lLU1hY3BpLmgKLS0tIGxpbnV4LTIu Ni4wLXRlc3Q1LWhydC5vcmlnL2luY2x1ZGUvYXNtLWkzODYvaHJ0aW1lLU1hY3BpLmgJMjAwMy0x MC0xNiAxODowMToxMC4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC9p bmNsdWRlL2FzbS1pMzg2L2hydGltZS1NYWNwaS5oCTIwMDMtMTItMDggMjI6MDE6MTkuMDAwMDAw MDAwICswMTAwCkBAIC0zOCw2ICszOCw3IEBACiAjZGVmaW5lIFNJWkVfTUFTSyAweGZmZmZmZgog CiBleHRlcm4gaW50IGFjcGlfcG1fdG1yX2FkZHJlc3M7CitleHRlcm4gc3RydWN0IHRpbWVyX29w dHMgaHJ0aW1lcl9wbTsKIAogZXh0ZXJuIGlubGluZSB1bnNpZ25lZCBsb25nCiBxdWlja19nZXRf Y3B1Y3RyKHZvaWQpCmRpZmYgLXVyTiAtWCAvaG9tZS9lcmljL2RvbnRkaWZmIC14ICcqLmRnJyBs aW51eC0yLjYuMC10ZXN0NS1ocnQub3JpZy9pbmNsdWRlL2FzbS1pMzg2L21hY2gtdmlzd3MvZG9f dGltZXIuaCBsaW51eC0yLjYuMC10ZXN0NS1ocnQvaW5jbHVkZS9hc20taTM4Ni9tYWNoLXZpc3dz L2RvX3RpbWVyLmgKLS0tIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC5vcmlnL2luY2x1ZGUvYXNtLWkz ODYvbWFjaC12aXN3cy9kb190aW1lci5oCTIwMDMtMTAtMTYgMTg6MDE6MTAuMDAwMDAwMDAwICsw MjAwCisrKyBsaW51eC0yLjYuMC10ZXN0NS1ocnQvaW5jbHVkZS9hc20taTM4Ni9tYWNoLXZpc3dz L2RvX3RpbWVyLmgJMjAwMy0xMS0wOSAxMToyODoxOC4wMDAwMDAwMDAgKzAxMDAKQEAgLTgsNyAr OCw3IEBACiAJLyogQ2xlYXIgdGhlIGludGVycnVwdCAqLwogCWNvX2NwdV93cml0ZShDT19DUFVf U1RBVCxjb19jcHVfcmVhZChDT19DUFVfU1RBVCkgJiB+Q09fU1RBVF9USU1FSU5UUik7CiAKLWlm ZGVmIENPTkZJR19ISUdIX1JFU19USU1FUlMKKyNpZmRlZiBDT05GSUdfSElHSF9SRVNfVElNRVJT CiAgCiAgICAgICAgIHsgCiAJCWxvbmcgYXJjaF9jeWNsZXMgPSBnZXRfYXJjaF9jeWNsZXMoamlm Zmllcyk7CmRpZmYgLXVyTiAtWCAvaG9tZS9lcmljL2RvbnRkaWZmIC14ICcqLmRnJyBsaW51eC0y LjYuMC10ZXN0NS1ocnQub3JpZy9pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oIGxpbnV4LTIu Ni4wLXRlc3Q1LWhydC9pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oCi0tLSBsaW51eC0yLjYu MC10ZXN0NS1ocnQub3JpZy9pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oCTIwMDMtMTAtMTYg MTg6MDE6MTAuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMC10ZXN0NS1ocnQvaW5jbHVk ZS9saW51eC9wb3NpeC10aW1lcnMuaAkyMDAzLTEyLTAyIDIyOjI3OjQ3LjAwMDAwMDAwMCArMDEw MApAQCAtMTUsNiArMTUsNDkgQEAKIAl2b2lkICgqdGltZXJfZ2V0KSAoc3RydWN0IGtfaXRpbWVy ICogdGltciwKIAkJCSAgIHN0cnVjdCBpdGltZXJzcGVjICogY3VyX3NldHRpbmcpOwogfTsKKwor I2lmZGVmIENPTkZJR19ISUdIX1JFU19USU1FUlMKK3N0cnVjdCBub3dfc3RydWN0IHsKKwl1bnNp Z25lZCBsb25nIGppZmZpZXM7CisJbG9uZyBzdWJfamlmZmllOworfTsKKworLyoKKyAqIFRoZSBm b2xsb3dpbmcgbG9ja2luZyBhc3N1bWVzIHRoYXQgaXJxIG9mZi4KKyAqLworc3RhdGljIGlubGlu ZSB2b2lkCitwb3NpeF9nZXRfbm93KHN0cnVjdCBub3dfc3RydWN0ICpub3cpCit7CisJdW5zaWdu ZWQgbG9uZyBzZXE7CisJCisJKG5vdyktPmppZmZpZXMgPSBqaWZmaWVzOworCWRvIHsKKwkJc2Vx ID0gcmVhZF9zZXFiZWdpbigmeHRpbWVfbG9jayk7CisJCShub3cpLT5zdWJfamlmZmllID0gZ2V0 X2FyY2hfY3ljbGVzKChub3cpLT5qaWZmaWVzKTsKKwl9IHdoaWxlIChyZWFkX3NlcXJldHJ5KCZ4 dGltZV9sb2NrLCBzZXEpKTsKKwkKKwl3aGlsZSAodW5saWtlbHkoKChub3cpLT5zdWJfamlmZmll IC0gYXJjaF9jeWNsZXNfcGVyX2ppZmZ5KSA+IDApKSB7CisJCShub3cpLT5zdWJfamlmZmllID0g KG5vdyktPnN1Yl9qaWZmaWUgLSBhcmNoX2N5Y2xlc19wZXJfamlmZnk7CisJCShub3cpLT5qaWZm aWVzKys7CisJfQorfQorCisjZGVmaW5lIHBvc2l4X3RpbWVfYmVmb3JlKHRpbWVyLCBub3cpIFwK KyAgICAgICAgICgge2xvbmcgZGlmZiA9IChsb25nKSh0aW1lciktPmV4cGlyZXMgLSAobG9uZyko bm93KS0+amlmZmllczsgIFwKKyAgICAgICAgICAgKGRpZmYgPCAwKSB8fCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICgoZGlmZiA9PSAwKSAmJiAoKHRpbWVyKS0+ c3ViX2V4cGlyZXMgPCAobm93KS0+c3ViX2ppZmZpZSkpOyB9KQorCisjZGVmaW5lIHBvc2l4X2J1 bXBfdGltZXIodGltcikgZG8geyBcCisgICAgICAgICAgKHRpbXIpLT5pdF90aW1lci5leHBpcmVz ICs9ICh0aW1yKS0+aXRfaW5jcjsgXAorICAgICAgICAgICh0aW1yKS0+aXRfdGltZXIuc3ViX2V4 cGlyZXMgKz0gKHRpbXIpLT5pdF9zdWJfaW5jcjsgXAorICAgICAgICAgIGlmICgoKHRpbXIpLT5p dF90aW1lci5zdWJfZXhwaXJlcyAtIGFyY2hfY3ljbGVzX3Blcl9qaWZmeSkgPj0gMCl7IFwKKwkJ ICAodGltciktPml0X3RpbWVyLnN1Yl9leHBpcmVzIC09IGFyY2hfY3ljbGVzX3Blcl9qaWZmeTsg XAorCQkgICh0aW1yKS0+aXRfdGltZXIuZXhwaXJlcysrOyBcCisJICB9ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICh0aW1yKS0+aXRfb3ZlcnJ1bisrOyAgICAg ICAgICAgICAgIFwKKyAgICAgICAgfXdoaWxlICgwKQorCisjZWxzZQogc3RydWN0IG5vd19zdHJ1 Y3QgewogCXVuc2lnbmVkIGxvbmcgamlmZmllczsKIH07CkBAIC0yNyw0ICs3MCw1IEBACiAgICAg ICAgICAgICAgICAgICAgICAgICAodGltciktPml0X3RpbWVyLmV4cGlyZXMgKz0gKHRpbXIpLT5p dF9pbmNyOyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAodGltciktPml0X292ZXJydW4rKzsg ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIH13aGlsZSAoMCkKKyNlbmRp ZgkJCQkvKiBDT05GSUdfSElHSF9SRVNfVElNRVJTICovCiAjZW5kaWYKZGlmZiAtdXJOIC1YIC9o b21lL2VyaWMvZG9udGRpZmYgLXggJyouZGcnIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC5vcmlnL2lu Y2x1ZGUvbGludXgvc2NfbWF0aC5oIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC9pbmNsdWRlL2xpbnV4 L3NjX21hdGguaAotLS0gbGludXgtMi42LjAtdGVzdDUtaHJ0Lm9yaWcvaW5jbHVkZS9saW51eC9z Y19tYXRoLmgJMjAwMy0xMC0xNiAxODowMToxMC4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIu Ni4wLXRlc3Q1LWhydC9pbmNsdWRlL2xpbnV4L3NjX21hdGguaAkyMDAzLTEyLTEzIDAwOjAyOjEw LjAwMDAwMDAwMCArMDEwMApAQCAtMjUxLDcgKzI1MSw3IEBACiAgKi8KIHN0YXRpYyBpbmxpbmUg bG9uZyBtcHlfc2MzMihsb25nIGEsIGxvbmcgYikKIHsKLSAgICAgICAgcmV0dXJuIChtcHkxICog bXB5MikgPj4gMzIpOworICAgICAgICByZXR1cm4gKChhICogYikgPj4gMzIpOwogfQogLyoKICAq IFggPSAoYS9iKTw8MzIgb3IgbW9yZSBwcmVjaXNlbHkgeCA9IChhPDwzMikvYgpAQCAtMjg3LDcg KzI4Nyw3IEBACiAvKiB4ID0gKGFhICogYmIpID4+IE4gKi8KIAogCi0jZGVmaW5lIG1weV9zY19u KE4sYWEsYmIpICgoYWEpICogKGJiKSkgPj4gTikKKyNkZWZpbmUgbXB5X3NjX24oTixhYSxiYikg KCgoYWEpICogKGJiKSkgPj4gTikKIAogLyogeCA9IChhYSA8PCBOIC8gYmIpICAqLwogI2RlZmlu ZSBkaXZfc2NfbihOLGFhLGJiKSAoU0NfbigoTiksIChhYSkpIC8gKGJiKSkKZGlmZiAtdXJOIC1Y IC9ob21lL2VyaWMvZG9udGRpZmYgLXggJyouZGcnIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC5vcmln L2tlcm5lbC90aW1lci5jIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC9rZXJuZWwvdGltZXIuYwotLS0g bGludXgtMi42LjAtdGVzdDUtaHJ0Lm9yaWcva2VybmVsL3RpbWVyLmMJMjAwMy0xMC0xNiAxODow MToxMC4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTIuNi4wLXRlc3Q1LWhydC9rZXJuZWwvdGlt ZXIuYwkyMDAzLTEyLTEyIDIzOjE2OjI1LjAwMDAwMDAwMCArMDEwMApAQCAtOTgsNyArOTgsNyBA QAogIAkgKiBtdXN0IGJlIGNsaS1lZCB3aGVuIGNhbGxpbmcgdGhpcwogIAkgKi8KICAgCXVuc2ln bmVkIGxvbmcgZXhwaXJlcyA9IHRpbWVyLT5leHBpcmVzOwotIAlJRl9ISUdIX1JFUyhpbnQgc3Vi X2V4cGlyZXMgPSB0aW1lci0+c3ViX2V4cGlyZXM7KQorIAlJRl9ISUdIX1JFUyhsb25nIHN1Yl9l eHBpcmVzID0gdGltZXItPnN1Yl9leHBpcmVzOykKICAJCWludCBpbmR4OwogIAlzdHJ1Y3QgbGlz dF9oZWFkICpwb3MsKmxpc3Rfc3RhcnQ7CiAgIApAQCAtMTE5LDcgKzExOSw3IEBACiAgCX0KICAJ CQkKICAJaW5keCA9CWV4cGlyZXMgJiBORVdfVFZFQ19NQVNLOwotIAlpZiAoKGV4cGlyZXMgLSBi YXNlLT50aW1lcl9qaWZmaWVzKSA8PSBORVdfVFZFQ19TSVpFKSB7CisgCWlmICgoZXhwaXJlcyAt IGJhc2UtPnRpbWVyX2ppZmZpZXMpIDwgTkVXX1RWRUNfU0laRSkgewogI2lmZGVmIENPTkZJR19I SUdIX1JFU19USU1FUlMKICAJCXVuc2lnbmVkIGxvbmcgamlmZmllc19mOwogICAJCS8qCkBAIC0x NTUsNyArMTU1LDggQEAKICAJCWlmICggZXhwaXJlcyA9PSAoamlmZmllc19mID0gYmFzZS0+dGlt ZXJfamlmZmllcykgJiYgCiAgCQkgICAgIGxpc3Rfc3RhcnQtPm5leHQgPT0gJnRpbWVyLT5lbnRy eSAmJgogIAkJICAgICAoYmFzZS0+cnVubmluZ190aW1lciA9PSBOVUxMKSkgewotIAkJCXNjaGVk dWxlX2hyX3RpbWVyX2ludChqaWZmaWVzX2YsIHN1Yl9leHBpcmVzKTsKKyAJCQlpZiAoc2NoZWR1 bGVfaHJfdGltZXJfaW50KGppZmZpZXNfZiwgc3ViX2V4cGlyZXMpKQorCQkJCXJ1bl9sb2NhbF90 aW1lcnMoKTsKICAJCX0KICNlbHNlCiAgCQlwb3MgPSAoJmJhc2UtPnR2W2luZHhdKS0+bmV4dDsK QEAgLTQzMyw4ICs0MzQsNyBAQAogI2Vsc2UKIAl3aGlsZSAoKGxvbmcpKGppZmZpZXMgLSBiYXNl LT50aW1lcl9qaWZmaWVzKSA+PSAwKSB7CiAjZW5kaWYKLSAKLQkJc3RydWN0IGxpc3RfaGVhZCAq aGVhZCwgKmN1cnI7CisJCXN0cnVjdCBsaXN0X2hlYWQgKmhlYWQ7CiAJCWhlYWQgPSBiYXNlLT50 diArIChiYXNlLT50aW1lcl9qaWZmaWVzICYgTkVXX1RWRUNfTUFTSyk7CiAJCS8qCiAJCSAqIE5v dGUgdGhhdCB3ZSBuZXZlciBtb3ZlICJoZWFkIiBidXQgY29udGludWUgdG8KQEAgLTQ0MywxMyAr NDQzLDEyIEBACiAJCSAqIGZ1bmN0aW9uIGNhbGwgYmVsb3cuCiAJCSAqLwogcmVwZWF0OgotCQlj dXJyID0gaGVhZC0+bmV4dDsKLQkJaWYgKGN1cnIgIT0gaGVhZCkgeworCQlpZiAoIWxpc3RfZW1w dHkoaGVhZCkpIHsKIAkJCXZvaWQgKCpmbikodW5zaWduZWQgbG9uZyk7CiAJCQl1bnNpZ25lZCBs b25nIGRhdGE7CiAJCQlzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXI7CiAKLQkJCXRpbWVyID0gbGlz dF9lbnRyeShjdXJyLCBzdHJ1Y3QgdGltZXJfbGlzdCwgZW50cnkpOworCQkJdGltZXIgPSBsaXN0 X2VudHJ5KGhlYWQtPm5leHQsIHN0cnVjdCB0aW1lcl9saXN0LCBlbnRyeSk7CiAjaWZkZWYgQ09O RklHX0hJR0hfUkVTX1RJTUVSUwogCQkJLyoKIAkJCSAqIFRoaXMgd291bGQgYmUgc2ltcGxlciBp ZiB3ZSBuZXZlciBnb3QgYmVoaW5kCkBAIC00NzIsNyArNDcxLDcgQEAKIAkJCQlsaXN0X2RlbCgm dGltZXItPmVudHJ5KTsKIAkJCQl0aW1lci0+YmFzZSA9IE5VTEw7CiAJCQkJdGltZXItPmVudHJ5 Lm5leHQgPSB0aW1lci0+ZW50cnkucHJldiA9IE5VTEw7Ci0JCQkJYmFzZS0+cnVubmluZ190aW1l ciA9IHRpbWVyOworCQkJCXNldF9ydW5uaW5nX3RpbWVyKGJhc2UsIHRpbWVyKTsKIAkJCQlzcGlu X3VubG9ja19pcnEoJmJhc2UtPmxvY2spOwogCQkJCWZuKGRhdGEpOwogCQkJCXNwaW5fbG9ja19p cnEoJmJhc2UtPmxvY2spOwpAQCAtNDgzLDcgKzQ4Miw3IEBACiAJCQkJLyoKIAkJCQkgKiBUaGUg bmV3IHRpbWVyIGxpc3QgaXMgbm90IGFsd2F5cyBlbXB0aWVkCiAJCQkJICogaGVyZSBhcyBpdCBj b250YWluczoKLQkJCQkgKiBhLikgZW50cmllcyAobGlzdCBzaXplKV5OKmppZmZpZXMgb3V0IGFu ZAorCQkJCSAqIGEuKSBlbnRyaWVzIChsaXN0IHNpemUpKk4gamlmZmllcyBvdXQgYW5kCiAJCQkJ ICogYi4pIGVudHJpZXMgdGhhdCBtYXRjaCBpbiBqaWZmaWVzLCBidXQgaGF2ZQogCQkJCSAqICAg ICBzdWJfZXhwaXJlIHRpbWVzIGZ1cnRoZXIgb3V0IHRoYW4gbm93LgogCQkJCSAqLwpAQCAtNTEz LDE2ICs1MTIsMTUgQEAKIAkgKiBUaGlzIGFsbG93cyB6ZXJvIHRpbWUgaW5zZXJ0cyBhcyB3ZWxs IGFzIHN1Yl9qaWZmaWUgdmFsdWVzIGluCiAJICogdGhlIGN1cnJlbnQgamlmZmllLgogCSAqLwot CS0tYmFzZS0+dGltZXJfamlmZmllczsKICNpZmRlZiBDT05GSUdfSElHSF9SRVNfVElNRVJTCi0J aWYgKCFzdWJfamlmZiAmJiBzY2hlZHVsZV9qaWZmaWVzX2ludChqaWZmaWVzX2YpKSB7CisJLS1i YXNlLT50aW1lcl9qaWZmaWVzOyAvL1hYWCBuZWVkZWQgd2hlbiBub3QgSFJUPworCWlmICgoc3Vi X2ppZmYgPT0gLTEpICYmIHNjaGVkdWxlX2ppZmZpZXNfaW50KGppZmZpZXNfZikpIHsKIAkJc3Bp bl91bmxvY2tfaXJxKCZiYXNlLT5sb2NrKTsKIAkJc3Bpbl9sb2NrX2lycSgmYmFzZS0+bG9jayk7 CiAJCWdvdG8gcnVuX3RpbWVyX2xpc3RfYWdhaW47CiAJfQogI2VuZGlmCi0JYmFzZS0+cnVubmlu Z190aW1lciA9IE5VTEw7Ci0KKyAJc2V0X3J1bm5pbmdfdGltZXIoYmFzZSwgTlVMTCk7CiAKIAlz cGluX3VubG9ja19pcnEoJmJhc2UtPmxvY2spOwogfQo= ---MOQ1071765842e644c955937d5242812208d4912657f0 Content-Type: text/plain; name="2.6.0-t5-hrt_syscalls.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="2.6.0-t5-hrt_syscalls.diff" LS0tIGxpbnV4LTIuNi4wLXRlc3Q3L2luY2x1ZGUvYXNtLWlhNjQvdW5pc3RkLmgufjF+CTIwMDMt MTAtMDggMjE6MjQ6MDIuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMC10ZXN0Ny9pbmNs dWRlL2FzbS1pYTY0L3VuaXN0ZC5oCTIwMDMtMTAtMTAgMTY6NTc6NDYuMDAwMDAwMDAwICswMjAw CkBAIC0yMzcsMTcgKzIzNywxNyBAQAogI2RlZmluZSBfX05SX2Vwb2xsX3dhaXQJCQkxMjQ1CiAj ZGVmaW5lIF9fTlJfcmVzdGFydF9zeXNjYWxsCQkxMjQ2CiAjZGVmaW5lIF9fTlJfc2VtdGltZWRv cAkJCTEyNDcKLSNkZWZpbmUgX19OUl9zeXNfdGltZXJfY3JlYXRlCQkxMjQ4Ci0jZGVmaW5lIF9f TlJfc3lzX3RpbWVyX3NldHRpbWUJCTEyNDkKLSNkZWZpbmUgX19OUl9zeXNfdGltZXJfZ2V0dGlt ZQkJMTI1MAotI2RlZmluZSBfX05SX3N5c190aW1lcl9nZXRvdmVycnVuCTEyNTEKLSNkZWZpbmUg X19OUl9zeXNfdGltZXJfZGVsZXRlCQkxMjUyCi0jZGVmaW5lIF9fTlJfc3lzX2Nsb2NrX3NldHRp bWUJCTEyNTMKLSNkZWZpbmUgX19OUl9zeXNfY2xvY2tfZ2V0dGltZQkJMTI1NAotI2RlZmluZSBf X05SX3N5c19jbG9ja19nZXRyZXMJCTEyNTUKLSNkZWZpbmUgX19OUl9zeXNfY2xvY2tfbmFub3Ns ZWVwCTEyNTYKLSNkZWZpbmUgX19OUl9zeXNfZnN0YXRmczY0CQkxMjU3Ci0jZGVmaW5lIF9fTlJf c3lzX3N0YXRmczY0CQkxMjU4CisjZGVmaW5lIF9fTlJfdGltZXJfY3JlYXRlCQkxMjQ4CisjZGVm aW5lIF9fTlJfdGltZXJfc2V0dGltZQkJMTI0OQorI2RlZmluZSBfX05SX3RpbWVyX2dldHRpbWUJ CTEyNTAKKyNkZWZpbmUgX19OUl90aW1lcl9nZXRvdmVycnVuCQkxMjUxCisjZGVmaW5lIF9fTlJf dGltZXJfZGVsZXRlCQkxMjUyCisjZGVmaW5lIF9fTlJfY2xvY2tfc2V0dGltZQkJMTI1MworI2Rl ZmluZSBfX05SX2Nsb2NrX2dldHRpbWUJCTEyNTQKKyNkZWZpbmUgX19OUl9jbG9ja19nZXRyZXMJ CTEyNTUKKyNkZWZpbmUgX19OUl9jbG9ja19uYW5vc2xlZXAJCTEyNTYKKyNkZWZpbmUgX19OUl9m c3RhdGZzNjQJCQkxMjU3CisjZGVmaW5lIF9fTlJfc3RhdGZzNjQJCQkxMjU4CiAKICNpZmRlZiBf X0tFUk5FTF9fCiAK ---MOQ1071765842e644c955937d5242812208d4912657f0 Content-Type: application/octet-stream; name="hrtimers-support-ia64-2.6.0-t5-20031212.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="hrtimers-support-ia64-2.6.0-t5-20031212.patch" ZGlmZiAtdXJOIC1YIHBhdGNoZXMvZG9udGRpZmYgLXggdGltZXJzIC14IHRpbWUtcHJlY2lzaW9u IDIuNi4wLXQ1LWhydC5vcmlnL0RvY3VtZW50YXRpb24vaGlnaC1yZXMtdGltZXJzL2xpYi9zeXNj YWxsX3RpbWVyLmMgMi42LjAtdDUtaHJ0L0RvY3VtZW50YXRpb24vaGlnaC1yZXMtdGltZXJzL2xp Yi9zeXNjYWxsX3RpbWVyLmMKLS0tIDIuNi4wLXQ1LWhydC5vcmlnL0RvY3VtZW50YXRpb24vaGln aC1yZXMtdGltZXJzL2xpYi9zeXNjYWxsX3RpbWVyLmMJMjAwMy0xMi0xMiAxNToyODoxNC4wMDAw MDAwMDAgKzAxMDAKKysrIDIuNi4wLXQ1LWhydC9Eb2N1bWVudGF0aW9uL2hpZ2gtcmVzLXRpbWVy cy9saWIvc3lzY2FsbF90aW1lci5jCTIwMDMtMTItMDggMTg6MDU6MzcuMDAwMDAwMDAwICswMTAw CkBAIC0xMSw2ICsxMSw2OSBAQAogI2lmbmRlZiBfX3NldF9lcnJubwogI2RlZmluZSBfX3NldF9l cnJubyh2YWwpICAgICAgIChlcnJubyA9ICh2YWwpKQogI2VuZGlmCisjaWYgZGVmaW5lZChfX2lh NjRfXykKKworLy8jaW5jbHVkZSA8dW5pc3RkLmg+CisKKworaW50IHRpbWVyX2NyZWF0ZShjbG9j a2lkX3Qgd2hpY2hfY2xvY2ssIAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNpZ2V2 ZW50ICp0aW1lcl9ldmVudF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfdCAq Y3JlYXRlZF90aW1lcl9pZCkKK3sKKwlyZXR1cm4gc3lzY2FsbChfX05SX3RpbWVyX2NyZWF0ZSwg d2hpY2hfY2xvY2ssIHRpbWVyX2V2ZW50X3NwZWMsIGNyZWF0ZWRfdGltZXJfaWQpOworfQorIAor aW50IHRpbWVyX2dldHRpbWUodGltZXJfdCB0aW1lcl9pZCwgc3RydWN0IGl0aW1lcnNwZWMgKnNl dHRpbmcpCit7CisJcmV0dXJuIHN5c2NhbGwoX19OUl90aW1lcl9nZXR0aW1lLCB0aW1lcl9pZCwg c2V0dGluZyk7Cit9CisKK2ludCB0aW1lcl9zZXR0aW1lKHRpbWVyX3QgdGltZXJfaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpuZXdfc2V0dGluZywKKyAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgaXRpbWVyc3BlYyAqb2xkX3NldHRpbmcpIAoreworCXJldHVybiBzeXNj YWxsKF9fTlJfdGltZXJfc2V0dGltZSwgdGltZXJfaWQsIGZsYWdzLCBuZXdfc2V0dGluZywgb2xk X3NldHRpbmcpOworfQorCitpbnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90IHRpbWVyX2lkKQor eworCXJldHVybiBzeXNjYWxsKF9fTlJfdGltZXJfZ2V0b3ZlcnJ1biwgdGltZXJfaWQpOworfQor CitpbnQgdGltZXJfZGVsZXRlKHRpbWVyX3QgdGltZXJfaWQpIAoreworCXJldHVybiBzeXNjYWxs KF9fTlJfdGltZXJfZGVsZXRlLCB0aW1lcl9pZCk7Cit9CisKK2ludCBjbG9ja19nZXR0aW1lKGNs b2NraWRfdCB3aGljaF9jbG9jaywgc3RydWN0IHRpbWVzcGVjICp0cykgCit7CisJcmV0dXJuIHN5 c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCB3aGljaF9jbG9jaywgdHMpOworfQorCitpbnQgY2xv Y2tfc2V0dGltZShjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIAorICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqc2V0dGluZykgCit7CisJcmV0dXJuIHN5c2NhbGwo X19OUl9jbG9ja19zZXR0aW1lLCB3aGljaF9jbG9jaywgc2V0dGluZyk7Cit9CisKK2ludCBjbG9j a19nZXRyZXMoY2xvY2tpZF90IHdoaWNoX2Nsb2NrLCAKKyAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCB0aW1lc3BlYyAqcmVzb2x1dGlvbikgCit7CisJcmV0dXJuIHN5c2NhbGwoX19OUl9j bG9ja19nZXRyZXMsIHdoaWNoX2Nsb2NrLCByZXNvbHV0aW9uKTsKK30KKworaW50IGNsb2NrX25h bm9zbGVlcChjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssCisgICAgICAgICAgICAgICAgICAgIGludCBm bGFncywKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpuZXdfc2V0 dGluZywgCisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqb2xkX3NldHRpbmcp IAoreworCXJldHVybiBzeXNjYWxsKF9fTlJfY2xvY2tfbmFub3NsZWVwLCB3aGljaF9jbG9jaywg ZmxhZ3MsIG5ld19zZXR0aW5nLCBvbGRfc2V0dGluZyk7Cit9CisKKworCisjZWxzZSAvKiEgX19p YTY0X18gKi8gCiAKICNkZWZpbmUgX19OUl9fX3RpbWVyX2NyZWF0ZSAgICAgX19OUl90aW1lcl9j cmVhdGUKICNkZWZpbmUgX19OUl9fX3RpbWVyX2dldHRpbWUgICAgX19OUl90aW1lcl9nZXR0aW1l CkBAIC05OCw0ICsxNjEsNCBAQAogICAgICAgICAgIGludCwgZmxhZ3MsCiAgICAgICAgICAgY29u c3Qgc3RydWN0IHRpbWVzcGVjICoscnF0cCwKICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKixy bXRwKQotCisjZW5kaWYgLyppYTY0Ki8K ---MOQ1071765842e644c955937d5242812208d4912657f0 Content-Type: application/octet-stream; name="hrtimers-ia64-2.6.0-test5-20031218.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="hrtimers-ia64-2.6.0-test5-20031218.patch" ZGlmZiAtdXJ3TiAtWCBwYXRjaGVzL2RvbnRkaWZmIC14IERvY3VtZW50YXRpb24gMi42LjAtdDUt aHJ0Lm9yaWcvYXJjaC9pYTY0L0tjb25maWcgMi42LjAtdDUtaHJ0LmNsZWFuL2FyY2gvaWE2NC9L Y29uZmlnCi0tLSAyLjYuMC10NS1ocnQub3JpZy9hcmNoL2lhNjQvS2NvbmZpZwkyMDAzLTEyLTE1 IDE3OjM2OjU1LjAwMDAwMDAwMCArMDEwMAorKysgMi42LjAtdDUtaHJ0LmNsZWFuL2FyY2gvaWE2 NC9LY29uZmlnCTIwMDMtMTItMTggMTQ6Mzk6MDEuMDAwMDAwMDAwICswMTAwCkBAIC0zNjcsNiAr MzY3LDQ5IEBACiAJICA8aHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG8+LgogCiAJ ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLgorY29uZmlnIEhJR0hf UkVTX1RJTUVSUworCWJvb2wgIkhpZ2gtUmVzb2x1dGlvbiBUaW1lcnMiCisJaGVscAorCisJICBQ T1NJWCB0aW1lcnMgYXJlIGF2YWlsYWJsZSBieSBkZWZhdWx0LiAgVGhpcyBvcHRpb24gZW5hYmxl cworCSAgaGlnaC1yZXNvbHV0aW9uIFBPU0lYIHRpbWVycy4gIFdpdGggdGhpcyBvcHRpb24gdGhl IHJlc29sdXRpb24KKwkgIGlzIGF0IGxlYXN0IDEgbWljcm9zZWNvbmQuICBIaWdoIHJlc29sdXRp b24gaXMgbm90IGZyZWUuICBJZgorCSAgZW5hYmxlZCB0aGlzIG9wdGlvbiB3aWxsIGFkZCBhIHNt YWxsIG92ZXJoZWFkIGVhY2ggdGltZSBhCisJICB0aW1lciBleHBpcmVzIHRoYXQgaXMgbm90IG9u IGEgMS9IWiB0aWNrIGJvdW5kYXJ5LiAgSWYgbm8gc3VjaAorCSAgdGltZXJzIGFyZSB1c2VkIHRo ZSBvdmVyaGVhZCBpcyBuaWwuCisKKwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdHdvIGFkZGl0aW9u YWwgUE9TSVggQ0xPQ0tTLAorCSAgQ0xPQ0tfUkVBTFRJTUVfSFIgYW5kIENMT0NLX01PTk9UT05J Q19IUi4gIE5vdGUgdGhhdCB0aGlzCisJICBvcHRpb24gZG9lcyBub3QgY2hhbmdlIHRoZSByZXNv bHV0aW9uIG9mIENMT0NLX1JFQUxUSU1FIG9yCisJICBDTE9DS19NT05PVE9OSUMgd2hpY2ggcmVt YWluIGF0IDEvSFogcmVzb2x1dGlvbi4KKworY2hvaWNlCisJcHJvbXB0ICJDbG9jayBzb3VyY2Ui CisJZGVwZW5kcyBvbiBISUdIX1JFU19USU1FUlMKKyAJZGVmYXVsdCBISUdIX1JFU19USU1FUl9J VEMKKwloZWxwIAorCSAgVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBjaG9vc2UgdGhlIGhhcmR3 YXJlIHNvdXJjZSBpbiBjaGFyZ2UKKwkgIG9mIGdlbmVyYXRpbmcgaGlnaCBwcmVjaXNpb24gaW50 ZXJydXB0aW9ucyBvbiB5b3VyIHN5c3RlbS4gCisJICBPbiBJQS02NCB0aGVzZSBhcmU6CisKKwkg IDx0aW1lcj4JCQkJPHJlc29sdXRpb24+CisJICBJVEMgSW50ZXJ2YWwgVGltZSBDb3VudGVyCQkx L0NQVSBjbG9jaworICAJICBIUEVUIEhpZ2ggUHJlY2lzaW9uIEV2ZW50IFRpbWVyCX4gKFhYWDpo YXZlIHRvIGNoZWNrIHRoZSBzcGVjKQorCisJICBUaGUgSVRDIHRpbWVyIGlzIGF2YWlsYWJsZSBv biBhbGwgdGhlIGlhNjQgY29tcHV0ZXJzIGJlY2F1c2UgCisJICBpdCBpcyBpbnRlZ3JhdGVkIGRp cmVjdGx5IGludG8gdGhlIHByb2Nlc3Nvci4gSG93ZXZlciBpdCBtYXkgbm90CisJICBnaXZlIGNv cnJlY3QgcmVzdWx0cyBvbiBNUCBtYWNoaW5lcyB3aXRoIHByb2Nlc3NvcnMgcnVubmluZworCSAg YXQgZGlmZmVyZW50IGNsb2NrIHJhdGVzLiBJbiB0aGlzIGNhc2UgeW91IG1heSB3YW50IHRvIHVz ZQorCSAgdGhlIEhQRVQgaWYgYXZhaWxhYmxlIG9uIHlvdXIgbWFjaGluZS4KKworCitjb25maWcg SElHSF9SRVNfVElNRVJfSVRDCisJYm9vbCAiSW50ZXJ2YWwgVGltZSBDb3VudGVyL0lUQyIKKwor Y29uZmlnIEhJR0hfUkVTX1RJTUVSX0hQRVQKKwlib29sICJIaWdoIFByZWNpc2lvbiBFdmVudCBU aW1lci9IUEVUIgorCSAgCitlbmRjaG9pY2UJICAKIAogY29uZmlnIFBSRUVNUFQKIAlib29sICJQ cmVlbXB0aWJsZSBLZXJuZWwiCmRpZmYgLXVyd04gLVggcGF0Y2hlcy9kb250ZGlmZiAteCBEb2N1 bWVudGF0aW9uIDIuNi4wLXQ1LWhydC5vcmlnL2FyY2gvaWE2NC9rZXJuZWwvdGltZS5jIDIuNi4w LXQ1LWhydC5jbGVhbi9hcmNoL2lhNjQva2VybmVsL3RpbWUuYwotLS0gMi42LjAtdDUtaHJ0Lm9y aWcvYXJjaC9pYTY0L2tlcm5lbC90aW1lLmMJMjAwMy0xMi0xNSAxNzozNjo1NS4wMDAwMDAwMDAg KzAxMDAKKysrIDIuNi4wLXQ1LWhydC5jbGVhbi9hcmNoL2lhNjQva2VybmVsL3RpbWUuYwkyMDAz LTEyLTE4IDE0OjQ0OjUxLjAwMDAwMDAwMCArMDEwMApAQCAtOCw2ICs4LDcgQEAKICAqIENvcHly aWdodCAoQykgMTk5OS0yMDAwIFZBIExpbnV4IFN5c3RlbXMKICAqIENvcHlyaWdodCAoQykgMTk5 OS0yMDAwIFdhbHQgRHJ1bW1vbmQgPGRydW1tb25kQHZhbGludXguY29tPgogICovCisjZGVmaW5l IF9JTkNMVURFRF9GUk9NX1RJTUVfQwogI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgogCiAjaW5j bHVkZSA8bGludXgvaW5pdC5oPgpAQCAtMTksNiArMjAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2Vm aS5oPgogI2luY2x1ZGUgPGxpbnV4L3Byb2ZpbGUuaD4KICNpbmNsdWRlIDxsaW51eC90aW1leC5o PgorI2luY2x1ZGUgPGxpbnV4L2hydGltZS5oPgogCiAjaW5jbHVkZSA8YXNtL2RlbGF5Lmg+CiAj aW5jbHVkZSA8YXNtL2h3X2lycS5oPgpAQCAtNjAsNiArNjIsMTAgQEAKIHVuc2lnbmVkIGxvbmcK IGl0Y19nZXRfb2Zmc2V0ICh2b2lkKQogeworI2lmZGVmIENPTkZJR19ISUdIX1JFU19USU1FUlMK Kwl1bnNpZ25lZCBsb25nIGVsYXBzZWRfY3ljbGVzOworCWVsYXBzZWRfY3ljbGVzID0gZ2V0X2Fy Y2hfY3ljbGVzKGppZmZpZXMpOworI2Vsc2UKIAl1bnNpZ25lZCBsb25nIGVsYXBzZWRfY3ljbGVz LCBsb3N0ID0gamlmZmllcyAtIHdhbGxfamlmZmllczsKIAl1bnNpZ25lZCBsb25nIG5vdyA9IGlh NjRfZ2V0X2l0YygpLCBsYXN0X3RpY2s7CiAKQEAgLTcyLDYgKzc4LDcgQEAKIAkJcmV0dXJuIGxh c3RfbnNlY19vZmZzZXQ7CiAJfQogCWVsYXBzZWRfY3ljbGVzID0gbm93IC0gbGFzdF90aWNrOwor I2VuZGlmCiAJcmV0dXJuIChlbGFwc2VkX2N5Y2xlcypsb2NhbF9jcHVfZGF0YS0+bnNlY19wZXJf Y3ljKSA+PiBJQTY0X05TRUNfUEVSX0NZQ19TSElGVDsKIH0KIApAQCAtMjM2LDYgKzI0MywxNCBA QAogCiAJaWE2NF9kb19wcm9maWxlKHJlZ3MpOwogCisjaWZkZWYgQ09ORklHX0hJR0hfUkVTX1RJ TUVSUworCW5ld19pdG0gPSBsYXN0X3VwZGF0ZSArIGxvY2FsX2NwdV9kYXRhLT5pdG1fZGVsdGE7 CisJCisJaWYgKGdldF9hcmNoX2N5Y2xlcyhqaWZmaWVzKSA8IGFyY2hfY3ljbGVzX3Blcl9qaWZm eSkgeworCQlkb19ocl90aW1lcl9pbnQoKTsKKwkJbG9jYWxfY3B1X2RhdGEtPml0bV9uZXh0ID0g bmV3X2l0bTsKKwl9IGVsc2UKKyNlbmRpZgogCXdoaWxlICgxKSB7CiAKICNpZmRlZiBDT05GSUdf U01QCkBAIC0yNTIsNiArMjY3LDkgQEAKIAkJCSAqLwogCQkJd3JpdGVfc2VxbG9jaygmeHRpbWVf bG9jayk7CiAJCQlkb190aW1lcihyZWdzKTsKKyNpZmRlZiBDT05GSUdfSElHSF9SRVNfVElNRVJT CisJCQlzdGFrZV9jcHVjdHIoKTsKKyNlbmRpZgogCQkJbG9jYWxfY3B1X2RhdGEtPml0bV9uZXh0 ID0gbmV3X2l0bTsKIAkJCXdyaXRlX3NlcXVubG9jaygmeHRpbWVfbG9jayk7CiAJCX0gZWxzZQpA QCAtMjk0LDExICszMTIsMzEgQEAKIAkgKiBTdGFnZ2VyIHRoZSB0aW1lciB0aWNrIGZvciBlYWNo IENQVSBzbyB0aGV5IGRvbid0IG9jY3VyIGFsbCBhdCAoYWxtb3N0KSB0aGUKIAkgKiBzYW1lIHRp bWU6CiAJICovCisJLy8gSFJUIGRvIG5vdCBzdXBwb3J0ICh5ZXQ/KSB0aGUgc2hpZnRlZCB0aW1l cnMgaW50ZXJydXB0cworI2lmbmRlZiBDT05GSUdfSElHSF9SRVNfVElNRVJTCiAJaWYgKGNwdSkg ewogCQl1bnNpZ25lZCBsb25nIGhpID0gMVVMIDw8IGlhNjRfZmxzKGNwdSk7CiAJCXNoaWZ0ID0g KDIqKGNwdSAtIGhpKSArIDEpICogZGVsdGEvaGkvMjsKIAl9CisjZW5kaWYKIAlsb2NhbF9jcHVf ZGF0YS0+aXRtX25leHQgPSBpYTY0X2dldF9pdGMoKSArIGRlbHRhICsgc2hpZnQ7CisjaWZkZWYg Q09ORklHX0hJR0hfUkVTX1RJTUVSUworCWlmIChjcHUgPT0gVElNRV9LRUVQRVJfSUQpIHsKKwkJ aW5pdF9ocnRpbWVycygpOworCQlwcmludGsoS0VSTl9JTkZPICIgKiogYXJjaF90b191c2VjOiAg JWx1XG4iLCBhcmNoX3RvX3VzZWMpOworCQlwcmludGsoS0VSTl9JTkZPICIgKiogYXJjaF90b19u c2VjOiAgJWx1XG4iLCBhcmNoX3RvX25zZWMpOworCQlwcmludGsoS0VSTl9JTkZPICIgKiogYXJj aF90b19sYXRjaDogJWx1XG4iLCBhcmNoX3RvX2xhdGNoKTsKKwkJcHJpbnRrKEtFUk5fSU5GTyAi ICoqIHVzZWNfdG9fYXJjaDogICVsdVxuIiwgdXNlY190b19hcmNoKTsKKwkJcHJpbnRrKEtFUk5f SU5GTyAiICoqIG5zZWNfdG9fYXJjaDogICVsdVxuIiwgbnNlY190b19hcmNoKTsKKwkJcHJpbnRr KEtFUk5fSU5GTyAiICoqIGN5Y3NfcGVyX2ppZmY6ICVsdVxuIiwgYXJjaF9jeWNsZXNfcGVyX2pp ZmZ5KTsKKwkJcHJpbnRrKEtFUk5fSU5GTyAiICoqIGN5Y19wZXJfdXNlYzogICVsdVxuIiwgbG9j YWxfY3B1X2RhdGEtPmN5Y19wZXJfdXNlYyk7CisJCXByaW50ayhLRVJOX0lORk8gIiAqKiBsYXN0 X3VwZGF0ZTogICAlbHVcbiIsIGxhc3RfdXBkYXRlKTsKKwl9IGVsc2UKKwkJLy9YWFggc2hvdWxk IHdlIHN5bmNocm9uaXNlIHJpZ2h0IG5vdyB0aGUgQ1BVIGFnYWluc3QgVElNRV9LRUVQRVI/CisJ CS8vdGhhdCdzIHF1aXRlIGVhc3kgd2l0aCBsYXN0X3VwZGF0ZQorCQlsb2NhbF9jcHVfZGF0YS0+ aXRtX25leHQgPSBsYXN0X3VwZGF0ZSArIGxvY2FsX2NwdV9kYXRhLT5pdG1fZGVsdGE7CisJCisj ZW5kaWYKIAlpYTY0X3NldF9pdG0obG9jYWxfY3B1X2RhdGEtPml0bV9uZXh0KTsKIH0KIApAQCAt MzcyLDYgKzQxMCw0NSBAQAogCWlhNjRfY3B1X2xvY2FsX3RpY2soKTsKIH0KIAorI2lmZGVmIENP TkZJR19ISUdIX1JFU19USU1FUlMKK2ludCBfc2NoZWR1bGVfamlmZmllc19pbnQodW5zaWduZWQg bG9uZyBqaWZmaWVfZikKK3sKKwlpZiAoX19sYXN0X3dhc19sb25nKSByZXR1cm4gMDsKKworCXJl dHVybiBfc2NoZWR1bGVfbmV4dF9pbnQoamlmZmllX2YsIGFyY2hfY3ljbGVzX3Blcl9qaWZmeSk7 Cit9CisKK2ludCBfc2NoZWR1bGVfbmV4dF9pbnQodW5zaWduZWQgbG9uZyBqaWZmaWVfZixsb25n IHN1Yl9qaWZmaWVfaW4pCit7CisgICAgICAgIGxvbmcgc3ViX2ppZmZfb2Zmc2V0OyAKKwl1bnNp Z25lZCBsb25nIHNlcTsKKworCXVuc2lnbmVkIGxvbmcgajsKKwlsb25nIGpzOworICAgICAgICAv KiAKKyAgICAgICAgICogRmlyc3QgZmlndXJlIHdoZXJlIHdlIGFyZSBpbiB0aW1lLiAKKyAgICAg ICAgICogQSBub3RlIG9uIGxvY2tpbmcuICBXZSBhcmUgdW5kZXIgdGhlIHRpbWVybGlzdF9sb2Nr IGhlcmUuICBUaGlzCisgICAgICAgICAqIG1lYW5zIHRoYXQgaW50ZXJydXB0cyBhcmUgb2ZmIGFs cmVhZHksIHNvIGRvbid0IHVzZSBpcnEgdmVyc2lvbnMuCisgICAgICAgICAqLworCWRvIHsKKwkJ c2VxID0gcmVhZF9zZXFiZWdpbigmeHRpbWVfbG9jayk7CisJCXN1Yl9qaWZmX29mZnNldCA9IHN1 Yl9qaWZmaWVfaW4gLSBnZXRfYXJjaF9jeWNsZXMoamlmZmllX2YpOworCQlqID0gamlmZmllczsK KwkJanMgPSBnZXRfYXJjaF9jeWNsZXMoamlmZmllX2YpOworCX0gd2hpbGUgKHJlYWRfc2VxcmV0 cnkoJnh0aW1lX2xvY2ssIHNlcSkpOworICAgICAgICAvKgorICAgICAgICAgKiBJZiB0aW1lIGlz IGFscmVhZHkgcGFzc2VkLCBqdXN0IHJldHVybiBzYXlpbmcgc28uCisgICAgICAgICAqLworICAg ICAgICBpZiAoc3ViX2ppZmZfb2Zmc2V0IDw9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7 CisKKwlfX2xhc3Rfd2FzX2xvbmcgPSBhcmNoX2N5Y2xlc19wZXJfamlmZnkgPT0gc3ViX2ppZmZp ZV9pbjsKKyAgICAgICAgcmVsb2FkX3RpbWVyX2NoaXAoc3ViX2ppZmZfb2Zmc2V0KTsKKyAgICAg ICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvKiBDT05GSUdfSElHSF9SRVNfVElNRVJTICovCisK IHN0YXRpYyBzdHJ1Y3QgaXJxYWN0aW9uIHRpbWVyX2lycWFjdGlvbiA9IHsKIAkuaGFuZGxlciA9 CXRpbWVyX2ludGVycnVwdCwKIAkuZmxhZ3MgPQlTQV9JTlRFUlJVUFQsCmRpZmYgLXVyd04gLVgg cGF0Y2hlcy9kb250ZGlmZiAteCBEb2N1bWVudGF0aW9uIDIuNi4wLXQ1LWhydC5vcmlnL2luY2x1 ZGUvYXNtLWlhNjQvaHJ0aW1lLmggMi42LjAtdDUtaHJ0LmNsZWFuL2luY2x1ZGUvYXNtLWlhNjQv aHJ0aW1lLmgKLS0tIDIuNi4wLXQ1LWhydC5vcmlnL2luY2x1ZGUvYXNtLWlhNjQvaHJ0aW1lLmgJ MTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIDIuNi4wLXQ1LWhydC5jbGVh bi9pbmNsdWRlL2FzbS1pYTY0L2hydGltZS5oCTIwMDMtMTItMTggMTQ6Mzg6NTIuMDAwMDAwMDAw ICswMTAwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKgorICogRmlsZTogaW5jbHVkZS9hc20taWE2 NC9ocnRpbWUuaAorICogMjAwMi0wOSBOaWNrIFBvbGxpdHQsIFNHSS4KKyAqIDIwMDMtMDMgZ2x1 ZSBjb2RlIGZvciAyLjUgYnkgRXJpYyBQaWVsLCBDb3B5cmlnaHQgKEMpIEJ1bGwgUy5BLiAyMDAz CisgKgorICovCisKKyNpZm5kZWYgX0lBNjRfSFJUSU1FX0gKKyNkZWZpbmUgX0lBNjRfSFJUSU1F X0gKKyNpZmRlZiBfX0tFUk5FTF9fCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4JLyogZm9y IENPTkZJR19BUE0gZXRjLi4uICovCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CQkvKiBmb3IgdTE2 cyAqLworI2luY2x1ZGUgPGxpbnV4L3NjX21hdGguaD4JLyogc2NhbGluZyBtYXRoIHJvdXRpbmVz ICovCisjaW5jbHVkZSA8YXNtL2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvc21wLmg+CisjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+CS8qIGZvciBFWFBPUlRfU1lNQk9MICovCisjaW5jbHVkZSA8 YXNtL3BlcmNwdS5oPgorCitzdHJ1Y3QgdGltZXJfY29udmVyc2lvbl9iaXRzIHsKKwl1bnNpZ25l ZCBsb25nIF9hcmNoX3RvX3VzZWM7CisJdW5zaWduZWQgbG9uZyBfYXJjaF90b19uc2VjOworCXVu c2lnbmVkIGxvbmcgX3VzZWNfdG9fYXJjaDsKKwl1bnNpZ25lZCBsb25nIF9uc2VjX3RvX2FyY2g7 CisJbG9uZyBfYXJjaF9jeWNsZXNfcGVyX2ppZmZ5OworCXVuc2lnbmVkIGxvbmcgX2FyY2hfdG9f bGF0Y2g7CisJdW5zaWduZWQgbG9uZyB2b2xhdGlsZSBfbGFzdF91cGRhdGU7Cit9OworZXh0ZXJu IHN0cnVjdCB0aW1lcl9jb252ZXJzaW9uX2JpdHMgdGltZXJfY29udmVyc2lvbl9iaXRzOworCisj ZGVmaW5lIGFyY2hfdG9fdXNlYyB0aW1lcl9jb252ZXJzaW9uX2JpdHMuX2FyY2hfdG9fdXNlYwor I2RlZmluZSBhcmNoX3RvX25zZWMgdGltZXJfY29udmVyc2lvbl9iaXRzLl9hcmNoX3RvX25zZWMK KyNkZWZpbmUgdXNlY190b19hcmNoIHRpbWVyX2NvbnZlcnNpb25fYml0cy5fdXNlY190b19hcmNo CisjZGVmaW5lIG5zZWNfdG9fYXJjaCB0aW1lcl9jb252ZXJzaW9uX2JpdHMuX25zZWNfdG9fYXJj aAorI2RlZmluZSBhcmNoX2N5Y2xlc19wZXJfamlmZnkgdGltZXJfY29udmVyc2lvbl9iaXRzLl9h cmNoX2N5Y2xlc19wZXJfamlmZnkKKyNkZWZpbmUgYXJjaF90b19sYXRjaCB0aW1lcl9jb252ZXJz aW9uX2JpdHMuX2FyY2hfdG9fbGF0Y2gKKyNkZWZpbmUgbGFzdF91cGRhdGUgdGltZXJfY29udmVy c2lvbl9iaXRzLl9sYXN0X3VwZGF0ZQorCisvKgorICogb24gSUE2NCB3ZSBjYW4gaG9wZSBkb3du IHRvIDEwMDAgbnNlYyBvZiByZXNvbHV0aW9uCisgKiBidXQgaXQgbWF5IGJlIGJldHRlciB0byBo YXZlIGl0IGRlcGVuZGluZyBvbiB0aGUgCisgKiBjbG9jayBzcGVlZCBhcyBpdCBpcyBjeWNsZXMg ZGVwZW5kYW50CisgKi8KKyNkZWZpbmUgQ09ORklHX0hJR0hfUkVTX1JFU09MVVRJT04gMTAwMAkv KiBuYW5vIHNlY29uZCByZXNvbHV0aW9uCisJCQkJCSAgIHdlIHdpbGwgdXNlIGZvciBoaWdoIHJl cy4gKi8KKworI2lmZGVmIF9JTkNMVURFRF9GUk9NX1RJTUVfQworRVhQT1JUX1NZTUJPTCh0aW1l cl9jb252ZXJzaW9uX2JpdHMpOworI2RlZmluZSBFWFRFUk4KKy8vaW50IHRpbWVyX2RlbHRhID0g VElNRVJfREVMVEE7CitpbnQgaHJfdGltZV9yZXNvbHV0aW9uID0gQ09ORklHX0hJR0hfUkVTX1JF U09MVVRJT047CisjZWxzZQorI2RlZmluZSBFWFRFUk4gIGV4dGVybgorLy9leHRlcm4gaW50IHRp bWVyX2RlbHRhOworZXh0ZXJuIGludCBocl90aW1lX3Jlc29sdXRpb247CisjZW5kaWYKKworI2Rl ZmluZSBzY2hlZHVsZV9ocl90aW1lcl9pbnQoYSxiKSAgX3NjaGVkdWxlX25leHRfaW50KGEsYikK KyNkZWZpbmUgc2NoZWR1bGVfamlmZmllc19pbnQoYSkgX3NjaGVkdWxlX2ppZmZpZXNfaW50KGEp CisKK2V4dGVybiB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGppZmZpZXM7CitleHRlcm4gdTY0IGpp ZmZpZXNfNjQ7CitleHRlcm4gaW50IF9zY2hlZHVsZV9uZXh0X2ludCh1bnNpZ25lZCBsb25nIGpp ZmZpZV9mLCBsb25nIHN1Yl9qaWZmaWVfaW4pOworZXh0ZXJuIGludCBfc2NoZWR1bGVfamlmZmll c19pbnQodW5zaWduZWQgbG9uZyBqaWZmaWVfZik7CisKKyNpZiBkZWZpbmVkKFNNUCkKK0VYVEVS TiBpbnQgX2xhc3Rfd2FzX2xvbmdbTlJfQ1BVU107CisjZGVmaW5lIF9fbGFzdF93YXNfbG9uZyAg X2xhc3Rfd2FzX2xvbmdbc21wX3Byb2Nlc3Nvcl9pZCgpXQorI2Vsc2UKK0VYVEVSTiBpbnQgX2xh c3Rfd2FzX2xvbmc7CisjZGVmaW5lIF9fbGFzdF93YXNfbG9uZyAgX2xhc3Rfd2FzX2xvbmcKKyNl bmRpZgorCisvKgorICogaW5zZXJ0IHRoZSBjb3JyZWN0IGluY2x1ZGUgYWNjb3JkaW5nIHRvIHdo aWNoIHRpbWVyIHdhcyBzZWxlY3RlZAorICovCisjaWZkZWYgQ09ORklHX0hJR0hfUkVTX1RJTUVS X0lUQworIyBpbmNsdWRlIDxhc20vaHJ0aW1lLWl0Yy5oPgorI2VsaWYgZGVmaW5lZChDT05GSUdf SElHSF9SRVNfVElNRVJfSFBFVCkKKyMgaW5jbHVkZSA8YXNtL2hydGltZS1ocGV0Lmg+CisjZWxz ZQorIyBlcnJvciAiTmVlZCBvbmUgb2Y6IENPTkZJR19ISUdIX1JFU19USU1FUl9JVEMgQ09ORklH X0hJR0hfUkVTX1RJTUVSX0hQRVQiCisjZW5kaWYKKworZXh0ZXJuIGlubGluZSBsb25nCitnZXRf YXJjaF9jeWNsZXModW5zaWduZWQgbG9uZyByZWYpIAoreworCXJldHVybiAobG9uZykoamlmZmll cyAtIHJlZikgKiBhcmNoX2N5Y2xlc19wZXJfamlmZnkgKyBxdWlja19nZXRfY3B1Y3RyKCk7Cit9 CisKKyNlbmRpZgkJCQkvKiBfX0tFUk5FTF9fICovCisjZW5kaWYJCQkJLyogX0lBNjRfSFJUSU1F X0ggKi8KZGlmZiAtdXJ3TiAtWCBwYXRjaGVzL2RvbnRkaWZmIC14IERvY3VtZW50YXRpb24gMi42 LjAtdDUtaHJ0Lm9yaWcvaW5jbHVkZS9hc20taWE2NC9ocnRpbWUtaXRjLmggMi42LjAtdDUtaHJ0 LmNsZWFuL2luY2x1ZGUvYXNtLWlhNjQvaHJ0aW1lLWl0Yy5oCi0tLSAyLjYuMC10NS1ocnQub3Jp Zy9pbmNsdWRlL2FzbS1pYTY0L2hydGltZS1pdGMuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAw MDAwMCArMDEwMAorKysgMi42LjAtdDUtaHJ0LmNsZWFuL2luY2x1ZGUvYXNtLWlhNjQvaHJ0aW1l LWl0Yy5oCTIwMDMtMTItMTggMTQ6NDI6NTYuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsMTM3 IEBACisvKgorICoKKyAqIEZpbGU6IGluY2x1ZGUvYXNtLWlhNjQvaHJ0aW1lLWl0Yy5oCisgKiAy MDAyLTA5IE5pY2sgUG9sbGl0dCwgU0dJLgorICogMjAwMy0wMyBnbHVlIGNvZGUgZm9yIDIuNS0y LjYgYnkgRXJpYyBQaWVsLCBDb3B5cmlnaHQgKEMpIEJ1bGwgUy5BLiAyMDAzCisgKgorICovCisK KyNpZm5kZWYgX0lBNjRfSFJUSU1FX0lUQ19ICisjZGVmaW5lIF9JQTY0X0hSVElNRV9JVENfSAor I2lmZGVmIF9fS0VSTkVMX18KKworLyoKKyAqIG5vIG9mIGxhdGNoIGxlc3MgdGhhbiB3aGljaCBl dmVudHMgY2Fubm90IGJlIHNjaGVkdWxlZAorICovCisjZGVmaW5lIFRJTUVSX0RFTFRBIDMwMAkJ Ly8zMDAgY3ljbGVzIHRvIGFybSB0aGUgdGltZXIgKGl0bSkgYW5kIGFuc3dlciBpdCBzZWVtcyB0 aGUgbWluaW11bQorCisjaWZkZWYgX0lOQ0xVREVEX0ZST01fVElNRV9DCitzdHJ1Y3QgdGltZXJf Y29udmVyc2lvbl9iaXRzIHRpbWVyX2NvbnZlcnNpb25fYml0czsKKyNlbmRpZgorCitleHRlcm4g aW5saW5lIHVuc2lnbmVkIGxvbmcgcXVpY2tfZ2V0X2NwdWN0cih2b2lkKSB7CisJdW5zaWduZWQg bG9uZyBpdGNfdmFsdWUgPSBpYTY0X2dldF9pdGMoKTsKKwkvLyB0byBlbnN1cmUgd2UgbmV2ZXIg cmV0dXJuIGEgbmVnYXRpdmUgbnVtYmVyIChtYXkgaGFwcGVuIG9uIFNNUCkKKwlpZiB0aW1lX2Fm dGVyKGl0Y192YWx1ZSwgbGFzdF91cGRhdGUpCisJCXJldHVybiBpdGNfdmFsdWUgLSBsYXN0X3Vw ZGF0ZTsKKwllbHNlCisJCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBtb3Zl cyB0aGUgbGFzdF91cGRhdGUgdmFsdWUgdG8gdGhlIGNsb3Nlc3QgdG8gdGhlCisgKiBjdXJyZW50 IDEvSFogYm91bmRyeS4gIFRoaXMgTVVTVCBiZSBjYWxsZWQgdW5kZXIgdGhlIHdyaXRlIHh0aW1l X2xvY2suCisgKi8KK2V4dGVybiBpbmxpbmUgdW5zaWduZWQgbG9uZworc3Rha2VfY3B1Y3RyKHZv aWQpCit7CisJaWYgKHF1aWNrX2dldF9jcHVjdHIoKSA+PSBhcmNoX2N5Y2xlc19wZXJfamlmZnkp IHsKKwkJbGFzdF91cGRhdGUgKz0gYXJjaF9jeWNsZXNfcGVyX2ppZmZ5OworCX0KK30KKworLyog VGhlIHVzdWFsIHNjYWxpbmcgZm9yIGlhNjQgc2hvdWxkIGJlIGdvb2QgaGVyZSB0b28gKi8KKyNk ZWZpbmUgSFJfVElNRV9TQ0FMRV9OU0VDIElBNjRfTlNFQ19QRVJfQ1lDX1NISUZUCisjZGVmaW5l IEhSX1RJTUVfU0NBTEVfVVNFQyBJQTY0X05TRUNfUEVSX0NZQ19TSElGVAorCisvKiAKKyAqIFdl IHVzZSB2YXJpb3VzIHNjYWxpbmcuIFRoZSBzY19uIHNjYWxlcyBieSB0aGUgZmlyc3QgcGFybS4K KyAqLworZXh0ZXJuIGlubGluZSBsb25nIGFyY2hfY3ljbGVfdG9fdXNlYyh1bnNpZ25lZCBsb25n IHVwZGF0ZSkgCit7CisJcmV0dXJuIChtcHlfc2NfbihIUl9USU1FX1NDQUxFX1VTRUMsIHVwZGF0 ZSwgYXJjaF90b191c2VjKSk7Cit9CisKK2V4dGVybiBpbmxpbmUgbG9uZyBhcmNoX2N5Y2xlX3Rv X2xhdGNoKHVuc2lnbmVkIGxvbmcgdXBkYXRlKQoreworCXJldHVybiAodXBkYXRlKTsKK30KKwor ZXh0ZXJuIGlubGluZSBsb25nIGFyY2hfY3ljbGVfdG9fbnNlYyhsb25nIHVwZGF0ZSkKK3sKKwly ZXR1cm4gKG1weV9zY19uKEhSX1RJTUVfU0NBTEVfTlNFQywgdXBkYXRlLCBhcmNoX3RvX25zZWMp KTsKK30KKy8qIAorICogQW5kIHRoZSBvdGhlciB3YXkuLi4KKyAqLworZXh0ZXJuIGlubGluZSBs b25nIHVzZWNfdG9fYXJjaF9jeWNsZSh1bnNpZ25lZCBsb25nIHVzZWMpCit7CisJcmV0dXJuICht cHlfc2NfbihIUl9USU1FX1NDQUxFX1VTRUMsIHVzZWMsIHVzZWNfdG9fYXJjaCkpOworfQorZXh0 ZXJuIGlubGluZSBsb25nIG5zZWNfdG9fYXJjaF9jeWNsZSh1bnNpZ25lZCBsb25nIG5zZWMpCit7 CisJcmV0dXJuIChtcHlfc2NfbihIUl9USU1FX1NDQUxFX05TRUMsIG5zZWMsIG5zZWNfdG9fYXJj aCkpOworfQorI2lmZGVmIF9JTkNMVURFRF9GUk9NX1RJTUVfQworCisjaW5jbHVkZSA8YXNtL2lv Lmg+CisKKy8qCisgKiAgU2V0IHRoZSBuZXh0IGludGVycnVwdGlvbiBpbiBuZXdfbGF0Y2hfdmFs dWUgY3ljbGVzCisgKiAgZnJvbSBub3cuIFRoaXMgY2hlY2sgd2UgYXJlIG5vdCBzZXR0aW5nIGFu IGludGVycnVwdAorICogIGFmdGVyIHRoZSBvbmUgYWxyZWFkeSBwbGFubmVkLgorICovCitleHRl cm4gaW5saW5lIHZvaWQgcmVsb2FkX3RpbWVyX2NoaXAobG9uZyBuZXdfbGF0Y2hfdmFsdWUpCit7 CisJdW5zaWduZWQgbG9uZyBuZXdfaXRtOworCisJbmV3X2xhdGNoX3ZhbHVlID0gYXJjaF9jeWNs ZV90b19sYXRjaChuZXdfbGF0Y2hfdmFsdWUpOworCWlmIChuZXdfbGF0Y2hfdmFsdWUgPiBhcmNo X2N5Y2xlc19wZXJfamlmZnkpCisJCW5ld19sYXRjaF92YWx1ZSA9IGFyY2hfY3ljbGVzX3Blcl9q aWZmeTsKKworCWlmIChuZXdfbGF0Y2hfdmFsdWUgPCBUSU1FUl9ERUxUQSkKKwkJbmV3X2xhdGNo X3ZhbHVlID0gVElNRVJfREVMVEE7CisKKwluZXdfaXRtID0gaWE2NF9nZXRfaXRjKCkgKyBuZXdf bGF0Y2hfdmFsdWU7CisJLyogY2hlY2sgd2UgcmVhbGx5IGRvbid0IGluY3JlYXNlIHRoZSB0aW1l IGJlZm9yZSB0aGUgbmV4dCBpbnRlcnJ1cHRpb24gKi8KKwlpZiAodGltZV9iZWZvcmUobmV3X2l0 bSwgbG9jYWxfY3B1X2RhdGEtPml0bV9uZXh0KSkgeworCQlkbyB7CisJCQl3aGlsZSAodGltZV9h ZnRlcl9lcShpYTY0X2dldF9pdGMoKSArIFRJTUVSX0RFTFRBIC8gMiwgbmV3X2l0bSkpCisJCQkJ bmV3X2l0bSA9IGlhNjRfZ2V0X2l0YygpICsgVElNRVJfREVMVEEgKiAyOworCQkJbG9jYWxfY3B1 X2RhdGEtPml0bV9uZXh0ID0gbmV3X2l0bTsKKwkJCWlhNjRfc2V0X2l0bShuZXdfaXRtKTsKKwkJ ICAgIC8qIGRvdWJsZSBjaGVjaywgaW4gY2FzZSB3ZSBnb3QgaGl0IGJ5IGEgKHNsb3cpIFBNSTog Ki8KKwkJfSB3aGlsZSAodGltZV9hZnRlcl9lcShpYTY0X2dldF9pdGMoKSwgbmV3X2l0bSkpOwor CX0KKworCXJldHVybjsKK30KKworLyoKKyAqIENvZGUgZm9yIHJ1bnRpbWUgY2FsaWJyYXRpb24g b2YgaGlnaCByZXMgdGltZXJzCisgKi8KKy8qCisgKiBYWFggd2Ugc2hvdWxkIGNoZWNrIHRoYXQg aXQncyBub3QgYSBwcm9ibGVtIGFyY2hfdG9fbnNlYyBpcyBub3QgdXNpbmcKKyAqIHRoZSBzYW1l IHJvdW5kaW5nIHRoYW4gdGhlIG90aGVyIHZhbHVlcyAocm91bmQoKSBpbnN0ZWFkIG9mIHRydW5j KCkpCisgKi8KKyNkZWZpbmUgaW5pdF9ocnRpbWVycygpIAkJCQlcCisJYXJjaF90b191c2VjID0g ZGl2X3NjX24oSFJfVElNRV9TQ0FMRV9VU0VDLAlcCisJCQlVU0VDX1BFUl9TRUMsCQkJXAorCQkJ bG9jYWxfY3B1X2RhdGEtPml0Y19mcmVxKTsJXAorCWFyY2hfdG9fbGF0Y2ggPSAxOwkJCQlcCisJ YXJjaF90b19uc2VjID0gbG9jYWxfY3B1X2RhdGEtPm5zZWNfcGVyX2N5YzsJXAorCW5zZWNfdG9f YXJjaCA9IGRpdl9zY19uKEhSX1RJTUVfU0NBTEVfTlNFQywJXAorCQkJbG9jYWxfY3B1X2RhdGEt Pml0Y19mcmVxLAlcCisJCQlOU0VDX1BFUl9TRUMpOwkJCVwKKwl1c2VjX3RvX2FyY2ggPSBkaXZf c2NfbihIUl9USU1FX1NDQUxFX1VTRUMsICAJXAorCQkJbG9jYWxfY3B1X2RhdGEtPml0Y19mcmVx LAlcCisJCQlVU0VDX1BFUl9TRUMpOwkJCVwKKwlhcmNoX2N5Y2xlc19wZXJfamlmZnkgPSBsb2Nh bF9jcHVfZGF0YS0+aXRtX2RlbHRhO1wKKwlsYXN0X3VwZGF0ZSA9IGxvY2FsX2NwdV9kYXRhLT5p dG1fbmV4dCAtIAlcCisJCQlsb2NhbF9jcHVfZGF0YS0+aXRtX2RlbHRhOwlcCisJX19sYXN0X3dh c19sb25nID0gMTsKKworI2VuZGlmCQkJCS8qIF9JTkNMVURFRF9GUk9NX1RJTUVfQyAqLworCisj ZW5kaWYJCQkJLyogX19LRVJORUxfXyAqLworI2VuZGlmCQkJCS8qIF9JQTY0X0hSVElNRV9JVENf SCAqLwpkaWZmIC11cndOIC1YIHBhdGNoZXMvZG9udGRpZmYgLXggRG9jdW1lbnRhdGlvbiAyLjYu MC10NS1ocnQub3JpZy9pbmNsdWRlL2xpbnV4L3NjX21hdGguaCAyLjYuMC10NS1ocnQuY2xlYW4v aW5jbHVkZS9saW51eC9zY19tYXRoLmgKLS0tIDIuNi4wLXQ1LWhydC5vcmlnL2luY2x1ZGUvbGlu dXgvc2NfbWF0aC5oCTIwMDMtMTItMTUgMTc6Mzk6MDkuMDAwMDAwMDAwICswMTAwCisrKyAyLjYu MC10NS1ocnQuY2xlYW4vaW5jbHVkZS9saW51eC9zY19tYXRoLmgJMjAwMy0xMi0xOCAxNDozODo1 NC4wMDAwMDAwMDAgKzAxMDAKQEAgLTMwMCw3ICszMDAsNyBAQAogICogV2FybmluZywgdGhpcyB3 aWxsIGRvIGFuIGV4Y2VwdGlvbiBpZiBYIG92ZXJmbG93cy4KICAqIFdlbGwsIGl0IHdvdWxkIGlm IGRvbmUgaW4gYXNtLCB0aGlzIGNvZGUganVzdCB0cnVuY2F0ZXMuLgogICovCi0jZGVmaW5lIGRp dl9sb25nX2xvbmdfcmVtKGEsYixjKSBkaXZfbGxfWF9sX3JlbShhLCBiLCBjKQorLy8jZGVmaW5l IGRpdl9sb25nX2xvbmdfcmVtKGEsYixjKSBkaXZfbGxfWF9sX3JlbShhLCBiLCBjKQogCiAvKiB4 ID0gZGl2cyAvIGRpdjsgKnJlbSA9IGRpdnMgJSBkaXY7ICovCiBzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGxvbmcgZGl2X2xsX1hfbF9yZW0odW5zaWduZWQgbG9uZyBkaXZzLCAKZGlmZiAtdXJ3TiAt WCBwYXRjaGVzL2RvbnRkaWZmIC14IERvY3VtZW50YXRpb24gMi42LjAtdDUtaHJ0Lm9yaWcva2Vy bmVsL3RpbWVyLmMgMi42LjAtdDUtaHJ0LmNsZWFuL2tlcm5lbC90aW1lci5jCi0tLSAyLjYuMC10 NS1ocnQub3JpZy9rZXJuZWwvdGltZXIuYwkyMDAzLTEyLTE1IDE3OjM5OjA5LjAwMDAwMDAwMCAr MDEwMAorKysgMi42LjAtdDUtaHJ0LmNsZWFuL2tlcm5lbC90aW1lci5jCTIwMDMtMTItMTggMTY6 MTc6NDYuMDAwMDAwMDAwICswMTAwCkBAIC00MjUsMTEgKzQyNSwxMSBAQAogICogZm9sa3MgdXNp bmcgc2hvcnQgdGltZXJzIGNhdXNpbmcgdGhlbiB0byBsb29wIGZvcmV2ZXIuLi4KICAqIElmIHN1 Yl9qaWZmaWVfZiA+IGN5Y2xlc19wZXJfamlmZmllcyB3ZSB3aWxsIGp1c3QgY2xlYW4gb3V0IGFs bAogICogdGltZXJzIGF0IGppZmZpZXNfZiBhbmQgcXVpdC4gIFdlIGdldCB0aGUgcmVzdCBvbiB0 aGUgbmV4dCBnbyByb3VuZC4KLQl3aGlsZSAoIHVubGlrZWx5KHN1Yl9qaWZmaWVfZiA+PSBjeWNs ZXNfcGVyX2ppZmZpZXMpKXsKLQkJc3ViX2ppZmZpZV9mIC09IGN5Y2xlc19wZXJfamlmZmllczsK KyovCXdoaWxlICh1bmxpa2VseShzdWJfamlmZmllX2YgPj0gYXJjaF9jeWNsZXNfcGVyX2ppZmZ5 KSkgeworCQlzdWJfamlmZmllX2YgLT0gYXJjaF9jeWNsZXNfcGVyX2ppZmZ5OwogCQlqaWZmaWVz X2YrKzsKIAl9Ci0qLworCiAJd2hpbGUgKChsb25nKShqaWZmaWVzX2YgLSBiYXNlLT50aW1lcl9q aWZmaWVzKSA+PSAwKSB7CiAjZWxzZQogCXdoaWxlICgobG9uZykoamlmZmllcyAtIGJhc2UtPnRp bWVyX2ppZmZpZXMpID49IDApIHsKQEAgLTUxMyw4ICs1MTMsOSBAQAogCSAqIHRoZSBjdXJyZW50 IGppZmZpZS4KIAkgKi8KICNpZmRlZiBDT05GSUdfSElHSF9SRVNfVElNRVJTCi0JLS1iYXNlLT50 aW1lcl9qaWZmaWVzOyAvL1hYWCBuZWVkZWQgd2hlbiBub3QgSFJUPworCS0tYmFzZS0+dGltZXJf amlmZmllczsKIAlpZiAoKHN1Yl9qaWZmID09IC0xKSAmJiBzY2hlZHVsZV9qaWZmaWVzX2ludChq aWZmaWVzX2YpKSB7CisJCS8vdGhpcyBjYW4ndCB3b3JrIGFzIGxvbmcgYXMgd2UgZG9uJ3QgaW5j cmVhc2UgamlmZmllc19mIGF0IHRoZSBiZWdpbm5pbmcKIAkJc3Bpbl91bmxvY2tfaXJxKCZiYXNl LT5sb2NrKTsKIAkJc3Bpbl9sb2NrX2lycSgmYmFzZS0+bG9jayk7CiAJCWdvdG8gcnVuX3RpbWVy X2xpc3RfYWdhaW47Cgo= ---MOQ1071765842e644c955937d5242812208d4912657f0--