From mboxrd@z Thu Jan 1 00:00:00 1970 Message-Id: <200007051351.OAA21463@hyperion.valhalla.net> Date: Wed, 05 Jul 2000 14:50:11 +0100 Subject: [PATCH+DATAPOINT] LinuxPPC IRQ Latency From: "Iain Sandoe" To: linux-audio-dev@ginette.musique.umontreal.ca, linuxppc-dev@lists.linuxppc.org CC: jsun@mvista.com Mime-version: 1.0 Content-type: multipart/mixed; boundary="MS_Mac_OE_3045653411_77117_MIME_Part" Sender: owner-linuxppc-dev@lists.linuxppc.org List-Id: > THIS MESSAGE IS IN MIME FORMAT. Since your mail reader does not understand this format, some or all of this message may not be legible. --MS_Mac_OE_3045653411_77117_MIME_Part Content-type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Hi List(s), This is cross-posted to linuxppc-dev - apologies to any of you who sit on both. Here is a patch to install an option to profile the LinuxPPC kernel wrt IRQ latency. All the clever stuff is courtesy of Jun Sun see: http://www.mvista.com/realtime/latency/ and... http://www.mvista.com/realtime/rtsched_wp.html All the mistakes are, undoubtedly, *mine* ;-) It installs code to measure the amount of time for which interrupts are blocked. An x86 version is also available via the links IIRC. You will need "perfview.c" to start/stop & examine the profiling. I've attached a (slightly) modified version of this - small changes in formatting of output only. The patch is against linuxcare rsync 2.2.17pre7 (two days ago). ==== I have tested the patch with/without the option and with/without modules on a G3/300 (beige). The worst I've seen is 6.3ms IRQ blocking during the transition between single and init 5 (bmac.c - eth0 start-up). Probably not relevant to general usage. The rest of the time IRQ latency <= 600 us - well that's two midi bytes but not that dramtic. What I've tried is a simple configuration: G3 minitower - no extraneous options, no USB, SCSI Xpmac rev 9 (IIRC). no particular structure to stressing the system - kernel compiles, pings, xmms etc. I will test G3 Lombard, G4 (when I get to grips with yaboot - the machine only arrived yesterday) and I'm about to put a USB PCI card in the G3. The patch is conservative about machines - it only appears for CONFIG_PMAC or CONFIG_PPC_ALL. I would expect that it will work for other machine types - and welcome feedback on results with different configs. happy testing, Iain. --MS_Mac_OE_3045653411_77117_MIME_Part Content-type: text/plain; name="perfview.c"; x-mac-creator="522A6368"; x-mac-type="54455854" Content-disposition: attachment Content-Transfer-Encoding: base64 LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAqIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3Mg bmFtZSBhbmQgYW4gaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogKiBDb3B5cmlnaHQgKEMpIDIw MDAgIE1vbnRhIFZpc3RhIFNvZnR3YXJlIEluYy4KICogCiAqIEF1dGhvciA6IEp1biBTdW4s IGpzdW5AbXZpc3RhLmNvbQogKiAKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgog KiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KICogCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwoKI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1 ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPGFzc2VydC5oPgoK LyoqKioqKioqKioqKioqKioqKiBDT05GSUcgKioqKioqKioqKioqKioqKi8KI2RlZmluZSAg ICAgICAgIE5VTV9MT0dfRU5UUlkgICAgICAgICAgIDgKI2RlZmluZQkJQ0xPQ0tfRlJFUVVF TkNZCQkzMDAJLyogY3ljbGVzIHBlciBtaWNyb3NlY29uZCAqLwojZGVmaW5lCQlTWVNDQUxM X05VTUJFUgkJMTkxCgovKioqKioqKioqKioqKioqKioqIEVORCBPRiBDT05GSUcgKioqKioq KioqKioqKioqLwoKI2RlZmluZSAgICAgICAgIENNRF9FWElUICAgICAgICAgICAgICAgIDAK I2RlZmluZSAgICAgICAgIENNRF9ESVNQTEFZICAgICAgICAgICAgIDEKI2RlZmluZSAgICAg ICAgIENNRF9TVEFSVCAgICAgICAgICAgICAgIDIKI2RlZmluZSAgICAgICAgIENNRF9TVE9Q ICAgICAgICAgICAgICAgIDMKI2RlZmluZSAgICAgICAgIENNRF9DT05USU5VRSAgICAgICAg ICAgIDQKI2RlZmluZSAgICAgICAgIENNRF9TRVRfUkFOR0UgICAgICAgICAgIDUKI2RlZmlu ZSAgICAgICAgIENNRF9MQVNUCQkJCTYKCnN0cnVjdCBJbnRyRGF0YSB7CiAgICAvKiBjb3Vu dCBpbnRlcnJ1cHQgYW5kIGlyZXQgKi8KICAgIGludCBicmVha0NvdW50OwoKICAgIC8qIHRo ZSB0ZXN0IG5hbWUgKi8KICAgIGNvbnN0IGNoYXIgKiB0ZXN0TmFtZTsKCiAgICAvKiBmbGFn IHRvIGNvbnRyb2wgbG9nZ2luZyAqLwogICAgdW5zaWduZWQgbG9nRmxhZzsgICAvKiAwIC0g bm8gbG9nZ2luZzsgMSAtIGxvZ2dpbmcgKi8KCiAgICAvKiBwYW5pYyBmbGFnIC0gc2V0IHRv IDEgaWYgc29tZXRoaW5nIGlzIHJlYWx5IHdyb25nICovCiAgICB1bnNpZ25lZCBwYW5pY0Zs YWc7CgogICAgLyogZm9yIHN5bmNocm8gYmV0d2VlbiBzdGFydCBhbmQgZW5kICovCiAgICB1 bnNpZ25lZCBzeW5jRmxhZzsKCiAgICAvKiB3ZSBvbmx5IGxvZyBpbnRlcnJ1cHRzIHdpdGhp biBjZXJ0YWluIHJhbmdlICovCiAgICB1bnNpZ25lZCByYW5nZUxvdzsKICAgIHVuc2lnbmVk IHJhbmdlSGlnaDsKCiAgICAvKiBjb3VudCB0aGUgdG90YWwgbnVtYmVyIGludGVycnVwdHMg IGFuZCBpbnRycyBpbiByYW5nZSovCiAgICB1bnNpZ25lZCBudW1JbnRyczsKICAgIHVuc2ln bmVkIG51bUluUmFuZ2VJbnRyczsKCgogICAgLyogZXJyb3IgYWNjb3VudGluZyAqLwogICAg dW5zaWduZWQgc2tpcFN0aTsKICAgIHVuc2lnbmVkIHNraXBDbGk7CiAgICB1bnNpZ25lZCBz eW5jU3RpRXJyb3I7CiAgICB1bnNpZ25lZCBzeW5jQ2xpRXJyb3I7CiAgICB1bnNpZ25lZCBz dGlCcmVha0Vycm9yOwogICAgdW5zaWduZWQgcmVzdG9yZVN0aTsKICAgIHVuc2lnbmVkIHJl c3RvcmVDbGk7CgogICAgc3RydWN0IHsKICAgICAgICAvKiB3b3JzdCBibG9ja2luZyB0aW1l ICovCiAgICAgICAgdW5zaWduZWQgYmxvY2tpbmdUaW1lOwoKICAgICAgICBjb25zdCBjaGFy ICogc3RhcnRGaWxlTmFtZTsKICAgICAgICB1bnNpZ25lZCBzdGFydEZpbGVMaW5lOwogICAg ICAgIHVuc2lnbmVkIHN0YXJ0Q291bnQ7CiAgICAgICAgCiAgICAgICAgY29uc3QgY2hhciAq ZW5kRmlsZU5hbWU7CiAgICAgICAgdW5zaWduZWQgZW5kRmlsZUxpbmU7CiAgICAgICAgdW5z aWduZWQgZW5kQ291bnQ7CiAgICB9IGNvdW50W05VTV9MT0dfRU5UUlldOwp9OwoKCgp1bnNp Z25lZCBwRGF0YTsKc3RydWN0IEludHJEYXRhIGRhdGE7CmludCBrbWVtOwpjaGFyIGJ1Zls4 MV07Cgp1bnNpZ25lZCBpbnQgR2V0SW50KGNvbnN0IGNoYXIgKnByb21wdCkKewogICAgdW5z aWduZWQgaW50IGk7CiAgICBwcmludGYoIiVzIiwgcHJvbXB0KTsKICAgIHNjYW5mKCIlZCIs ICZpKTsKICAgIHJldHVybiBpOwp9Cgp1bnNpZ25lZCBpbnQgR2V0SGV4KGNvbnN0IGNoYXIg KnByb21wdCkKewogICAgdW5zaWduZWQgaW50IGk7CiAgICBwcmludGYoIiVzIiwgcHJvbXB0 KTsKICAgIHNjYW5mKCIleCIsICZpKTsKICAgIHJldHVybiBpOwp9Cgp1bnNpZ25lZCBHZXRD b21tYW5kKCkKewogICAgZm9yKDs7KSB7CiAgICAgICAgdW5zaWduZWQgY21kOwogICAgICAg IHByaW50ZigiXG4iKTsKICAgICAgICBwcmludGYoIkNvbW1hbmQgTWVudSBcbiIpOwogICAg ICAgIHByaW50ZigiPT09PT09PT09PT09PVxuIik7CiAgICAgICAgcHJpbnRmKCIwLUV4aXQg ICAxLURpc3BsYXkgIDItU3RhcnQgbG9nZ2luZyAgMy1TdG9wIGxvZ2dpbmcgNC1Db250aW51 ZSAiKTsgCiAgICAgICAgcHJpbnRmKCI1LVNldCByYW5nZVxuIik7CiAgICAgICAgcHJpbnRm KCJcbiIpOwogICAgICAgIHByaW50ZigiWW91ciBjaG9pY2UgOiAiKTsKICAgICAgICBzY2Fu ZigiJXUiLCAmY21kKTsKICAgICAgICBpZiAoKGNtZCA+PSAwKSAmJiAoY21kIDwgQ01EX0xB U1QpKSB7CiAgICAgICAgICAgIHJldHVybiBjbWQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgcHJpbnRmKCJJbnZhbGlkIGNob2ljZSEhISFcblxuIik7CiAgICAgICAgfQogICAg fQp9Cgp1bnNpZ25lZCBHZXRLbWVtSW50KHVuc2lnbmVkIG9mZnNldCkKewogICAgb2ZmX3Qg c2Vla0Vycm9yOwogICAgc3NpemVfdCBzaXplOwogICAgdW5zaWduZWQgbnVtPTA7CgogICAg YXNzZXJ0KChvZmZzZXQgJiAzKSA9PSAwKTsKICAgICAgICAgICAgCiAgICBzZWVrRXJyb3Ig PSBsc2VlayhrbWVtLCBvZmZzZXQsIFNFRUtfU0VUKTsKICAgIGFzc2VydChzZWVrRXJyb3Ig IT0gKG9mZl90KS0xKTsKICAgIAogICAgc2l6ZSA9IHJlYWQoa21lbSwgJm51bSwgc2l6ZW9m KG51bSkpOwogICAgYXNzZXJ0KHNpemVvZihudW0pID09IDQpOwogICAgYXNzZXJ0KHNpemUg PT0gNCk7CiAgICByZXR1cm4gbnVtOwp9CgpjaGFyICogR2V0S21lbVN0cmluZyh1bnNpZ25l ZCBvZmZzZXQpCnsKICAgIG9mZl90IHNlZWtFcnJvcjsKICAgIHNzaXplX3Qgc2l6ZTsKCiAg ICBidWZbODBdPTA7CiAgICBidWZbMF09MDsKCiAgICBpZiAob2Zmc2V0ID09IDApIHJldHVy biBidWY7CgogICAgc2Vla0Vycm9yID0gbHNlZWsoa21lbSwgb2Zmc2V0LCBTRUVLX1NFVCk7 CiAgICBhc3NlcnQoc2Vla0Vycm9yICE9IChvZmZfdCktMSk7CiAgICAKICAgIHNpemUgPSBy ZWFkKGttZW0sIGJ1ZiwgODApOwogICAgYXNzZXJ0KHNpemUgPT0gODApOwogICAgcmV0dXJu IGJ1ZjsKfQoKdm9pZCBHZXRLbWVtQmxvY2sodW5zaWduZWQgb2Zmc2V0LCB2b2lkICogYnVm LCB1bnNpZ25lZCBidWZTaXplKQp7CiAgICBvZmZfdCBzZWVrRXJyb3I7CiAgICBzc2l6ZV90 IHNpemU7CgogICAgc2Vla0Vycm9yID0gbHNlZWsoa21lbSwgb2Zmc2V0LCBTRUVLX1NFVCk7 CiAgICBhc3NlcnQoc2Vla0Vycm9yICE9IChvZmZfdCktMSk7CiAgICAKICAgIHNpemUgPSBy ZWFkKGttZW0sIGJ1ZiwgYnVmU2l6ZSk7CiAgICBhc3NlcnQoc2l6ZSA9PSBidWZTaXplKTsK fQoKdm9pZCBTZXRLbWVtQmxvY2sodW5zaWduZWQgb2Zmc2V0LCB2b2lkICpidWYsIHVuc2ln bmVkIGJ1ZlNpemUpCnsKICAgIG9mZl90IHNlZWtFcnJvcjsKICAgIHNzaXplX3Qgc2l6ZTsK CiAgICBzZWVrRXJyb3IgPSBsc2VlayhrbWVtLCBvZmZzZXQsIFNFRUtfU0VUKTsKICAgIGFz c2VydChzZWVrRXJyb3IgIT0gKG9mZl90KS0xKTsKICAgIAogICAgc2l6ZSA9IHdyaXRlKGtt ZW0sIGJ1ZiwgYnVmU2l6ZSk7CiAgICBhc3NlcnQoc2l6ZSA9PSBidWZTaXplKTsKfQoKdm9p ZCBTZXRLbWVtSW50KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgeCkKewogICAgb2ZmX3Qg c2Vla0Vycm9yOwogICAgc3NpemVfdCBzaXplOwoKICAgIHNlZWtFcnJvciA9IGxzZWVrKGtt ZW0sIG9mZnNldCwgU0VFS19TRVQpOwogICAgYXNzZXJ0KHNlZWtFcnJvciAhPSAob2ZmX3Qp LTEpOwogICAgCiAgICBzaXplID0gd3JpdGUoa21lbSwgJngsIHNpemVvZih4KSk7CiAgICBh c3NlcnQoc2l6ZSA9PSBzaXplb2YoeCkpOwp9CgoKdm9pZCBEaXNwbGF5KCkKewogICAgdW5z aWduZWQgaTsKCiAgICBHZXRLbWVtQmxvY2socERhdGEsICZkYXRhLCBzaXplb2YoZGF0YSkp OwogICAgcHJpbnRmKCIlcyA6IFxuIiwgR2V0S21lbVN0cmluZygodW5zaWduZWQpZGF0YS50 ZXN0TmFtZSkpOwogICAgcHJpbnRmKCJicmVha0NvdW50ICAgIDogJTdkXG4iLCBkYXRhLmJy ZWFrQ291bnQpOwogICAgcHJpbnRmKCJsb2dGbGFnICAgICAgIDogJWQgIiwgZGF0YS5sb2dG bGFnKTsKICAgIHByaW50ZigicGFuaWNGbGFnICAgICA6ICVkICIsIGRhdGEucGFuaWNGbGFn KTsKICAgIHByaW50Zigic3luY0ZsYWcgICAgICA6ICVkXG4iLCBkYXRhLnN5bmNGbGFnKTsK CiAgICBwcmludGYoInJhbmdlICAgICAgICAgOiBbJXUoMHgleCkgOiAldSgweCV4KV1cbiIs CiAgICAgICAgICAgZGF0YS5yYW5nZUxvdywgZGF0YS5yYW5nZUxvdywKICAgICAgICAgICBk YXRhLnJhbmdlSGlnaCwgZGF0YS5yYW5nZUhpZ2gpOwoKICAgIHByaW50ZigibnVtSW50cnMg ICAgICA6ICV1XG4iLCBkYXRhLm51bUludHJzKTsKICAgIHByaW50ZigibnVtSW5SYW5nZUlu dHM6ICV1XG4iLCBkYXRhLm51bUluUmFuZ2VJbnRycyk7CgogICAgcHJpbnRmKCJza2lwU3Rp IHNraXBDbGkgc3luY1N0aSBzeW5jQ2xpIHN0aUJyZWFrIHJlc3RTdGkgcmVzdENsaVxuIik7 CiAgICBwcmludGYoIiVkXHQlZFx0JWRcdCVkXHQlZFx0JWRcdCVkXHRcbiIsIAogICAgICAg ICAgIGRhdGEuc2tpcFN0aSwKICAgICAgICAgICBkYXRhLnNraXBDbGksCiAgICAgICAgICAg ZGF0YS5zeW5jU3RpRXJyb3IsCiAgICAgICAgICAgZGF0YS5zeW5jQ2xpRXJyb3IsCiAgICAg ICAgICAgZGF0YS5zdGlCcmVha0Vycm9yLAogICAgICAgICAgIGRhdGEucmVzdG9yZVN0aSwK ICAgICAgICAgICBkYXRhLnJlc3RvcmVDbGkpOwoKCiAgICBmb3IgKGk9MDsgaTwgTlVNX0xP R19FTlRSWTsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCJsb2cgZW50cnkgOiAlZFxuIiwgaSk7 CiAgICAgICAgcHJpbnRmKCJcdGJsb2NraW5nVGltZSAgICAgOiAldSAoJXUgdXMpXG4iLCAK CQlkYXRhLmNvdW50W2ldLmJsb2NraW5nVGltZSwKCQlkYXRhLmNvdW50W2ldLmJsb2NraW5n VGltZSAvIENMT0NLX0ZSRVFVRU5DWSk7CiAgICAgICAgcHJpbnRmKCJcdHN0YXJ0RmlsZU5h bWUgICAgOiAlLTMwcyBMaW5lIDoiLCAKICAgICAgICAgICAgICAgR2V0S21lbVN0cmluZygo dW5zaWduZWQpZGF0YS5jb3VudFtpXS5zdGFydEZpbGVOYW1lKSk7CiAgICAgICAgcHJpbnRm KCIgJS01dVxuIiwgZGF0YS5jb3VudFtpXS5zdGFydEZpbGVMaW5lKTsKIC8qICAgICAgIHBy aW50ZigiXHRzdGFydENvdW50ICAgICAgIDogJXVcbiIsIGRhdGEuY291bnRbaV0uc3RhcnRD b3VudCk7Ki8KICAgICAgICBwcmludGYoIlx0ZW5kRmlsZU5hbWUgICAgICA6ICUtMzBzIExp bmUgOiIsIAogICAgICAgICAgICAgICBHZXRLbWVtU3RyaW5nKCh1bnNpZ25lZClkYXRhLmNv dW50W2ldLmVuZEZpbGVOYW1lKSk7CiAgICAgICAgcHJpbnRmKCIgJS01dVxuIiwgZGF0YS5j b3VudFtpXS5lbmRGaWxlTGluZSk7CiAvKiAgICAgICBwcmludGYoIlx0ZW5kQ291bnQgICAg ICAgICA6ICV1XG4iLCBkYXRhLmNvdW50W2ldLmVuZENvdW50KTsqLwogICAgfQogICAgcHJp bnRmKCJcbiIpOwp9Cgp2b2lkIFN0YXJ0TG9nZ2luZygpCnsKICAgIHVuc2lnbmVkIGk7Cgog ICAgLyogaW5pdCBmaXJzdCAqLwogICAgZGF0YS5icmVha0NvdW50ID0gMDsKICAgIGRhdGEu bG9nRmxhZyA9IDA7CiAgICBkYXRhLnBhbmljRmxhZyA9IDA7CiAgICBkYXRhLnN5bmNGbGFn ID0gMDsKCiAgICBkYXRhLm51bUludHJzID0gMDsKICAgIGRhdGEubnVtSW5SYW5nZUludHJz ID0gMDsKCiAgICBkYXRhLnNraXBTdGkgPQogICAgICAgIGRhdGEuc2tpcENsaSA9CiAgICAg ICAgZGF0YS5zeW5jU3RpRXJyb3IgPQogICAgICAgIGRhdGEuc3luY0NsaUVycm9yID0KICAg ICAgICBkYXRhLnN0aUJyZWFrRXJyb3IgPQogICAgICAgIGRhdGEucmVzdG9yZVN0aSA9CiAg ICAgICAgZGF0YS5yZXN0b3JlQ2xpID0gMDsKCiAgICBmb3IgKGk9MDsgaTwgTlVNX0xPR19F TlRSWTsgaSsrKSB7CiAgICAgICAgZGF0YS5jb3VudFtpXS5ibG9ja2luZ1RpbWUgPSAwOwog ICAgICAgIGRhdGEuY291bnRbaV0uc3RhcnRGaWxlTmFtZSA9IDA7CiAgICAgICAgZGF0YS5j b3VudFtpXS5zdGFydEZpbGVMaW5lID0gMDsKICAgICAgICBkYXRhLmNvdW50W2ldLnN0YXJ0 Q291bnQgPSAwOwogICAgICAgIGRhdGEuY291bnRbaV0uZW5kRmlsZU5hbWUgPSAwOwogICAg ICAgIGRhdGEuY291bnRbaV0uZW5kRmlsZUxpbmUgPSAwOwogICAgICAgIGRhdGEuY291bnRb aV0uZW5kQ291bnQgPSAwOwogICAgfQoKICAgIFNldEttZW1CbG9jayhwRGF0YSwgJmRhdGEs IHNpemVvZihkYXRhKSk7CgogICAgLyogdHVybiB0aGUgbG9nZ2luZyBmbGFnICovCiAgICBT ZXRLbWVtSW50KHBEYXRhICsgKCh1bnNpZ25lZCkmZGF0YS5sb2dGbGFnIC0gKHVuc2lnbmVk KSZkYXRhKSwgMSk7Cn0KCnZvaWQgRW5kTG9nZ2luZygpCnsKICAgIC8qIHR1cm4gdGhlIGxv Z2dpbmcgZmxhZyAqLwogICAgU2V0S21lbUludChwRGF0YSArICgodW5zaWduZWQpJmRhdGEu bG9nRmxhZyAtICh1bnNpZ25lZCkmZGF0YSksIDApOwp9Cgp2b2lkIENvbnRpbnVlTG9nZ2lu KCkKewogICAgLyogdHVybiB0aGUgbG9nZ2luZyBmbGFnICovCiAgICBTZXRLbWVtSW50KHBE YXRhICsgKCh1bnNpZ25lZCkmZGF0YS5sb2dGbGFnIC0gKHVuc2lnbmVkKSZkYXRhKSwgMSk7 Cn0KCnZvaWQgU2V0UmFuZ2UoKQp7CiAgICBkYXRhLnJhbmdlTG93ID0gR2V0SW50KCJJbnB1 dCBsb3dlciBib3VuZCAoZGVjaW1hbCkgOiAiKTsKICAgIHByaW50ZigiXHRsb3dlciBib3Vu ZCBpcyAldSgweCV4KVxuIiwgZGF0YS5yYW5nZUxvdywgZGF0YS5yYW5nZUxvdyk7CgogICAg ZGF0YS5yYW5nZUhpZ2ggPSBHZXRJbnQoIklucHV0IHVwcGVyIGJvdW5kIChkZWNpbWFsKSA6 ICIpOwogICAgcHJpbnRmKCJcdHVwcGVyIGJvdW5kIGlzICV1KDB4JXgpXG4iLCBkYXRhLnJh bmdlSGlnaCwgZGF0YS5yYW5nZUhpZ2gpOwogICAgCiAgICBTZXRLbWVtSW50KHBEYXRhICsg KCh1bnNpZ25lZCkmZGF0YS5yYW5nZUxvdyAtICh1bnNpZ25lZCkmZGF0YSksIAogICAgICAg ICAgICAgICBkYXRhLnJhbmdlTG93KTsKICAgIFNldEttZW1JbnQocERhdGEgKyAoKHVuc2ln bmVkKSZkYXRhLnJhbmdlSGlnaCAtICh1bnNpZ25lZCkmZGF0YSksIAogICAgICAgICAgICAg ICBkYXRhLnJhbmdlSGlnaCk7Cn0KCgptYWluKCkKewogICAgdW5zaWduZWQgaW50IGNtZDsK ICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OwoKICAgIGttZW0gPSBvcGVuKCIvZGV2L2ttZW0i LCBPX1JEV1IpOwogICAgYXNzZXJ0KGttZW0gPiAwKTsKCiAgICBpZiAoc3lzY2FsbChTWVND QUxMX05VTUJFUiwgJnBEYXRhKSAhPSAwKSB7CiAgICAgICAgcHJpbnRmKCJmYWlsZWQgdG8g Z2V0IGpzdW5EYXRhIGFkZHJlc3MgdGhyb3VnaCBzeXNjYWxsIDE5MSFcbiIpOwogICAgICAg IHBEYXRhID0gR2V0SGV4KCJJbnB1dCBtYW51YWxseSB0aGUgYWRkcmVzcyBvZiBqc3VuRGF0 YSA6ICIpOwogICAgfQoKICAgIEdldEttZW1CbG9jayhwRGF0YSwgJmRhdGEsIHNpemVvZihk YXRhKSk7CgogICAgZm9yKDs7KSB7CiAgICAgICAgY21kID0gR2V0Q29tbWFuZCgpOwoKICAg ICAgICBzd2l0Y2ggKGNtZCkgewogICAgICAgICBjYXNlIENNRF9ESVNQTEFZOgogICAgICAg ICAgICBEaXNwbGF5KCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgY2FzZSBDTURf U1RBUlQ6CiAgICAgICAgICAgIFN0YXJ0TG9nZ2luZygpOwogICAgICAgICAgICBicmVhazsK CiAgICAgICAgIGNhc2UgQ01EX1NUT1A6CiAgICAgICAgICAgIEVuZExvZ2dpbmcoKTsKICAg ICAgICAgICAgYnJlYWs7CgogICAgICAgICBjYXNlIENNRF9DT05USU5VRToKICAgICAgICAg ICAgQ29udGludWVMb2dnaW4oKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICBjYXNl IENNRF9TRVRfUkFOR0U6CiAgICAgICAgICAgIFNldFJhbmdlKCk7CiAgICAgICAgICAgIGJy ZWFrOwoKICAgICAgICAgY2FzZSBDTURfRVhJVDoKICAgICAgICAgICAgY2xvc2Uoa21lbSk7 CiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGFz c2VydCgwID09IDEpOwogICAgICAgIH0KICAgIH0KfQoKICAgICAgICAK --MS_Mac_OE_3045653411_77117_MIME_Part Content-type: text/plain; name="interupt_latency.patch"; x-mac-creator="522A6368"; x-mac-type="54455854" Content-disposition: attachment Content-Transfer-Encoding: base64 ZGlmZiAtdXJiQndQIGxpbnV4LXBtYWMtc3RhYmxlL0RvY3VtZW50YXRpb24vQ29uZmlndXJl LmhlbHAgc3RhYmxlLWludGxhdC9Eb2N1bWVudGF0aW9uL0NvbmZpZ3VyZS5oZWxwCi0tLSBs aW51eC1wbWFjLXN0YWJsZS9Eb2N1bWVudGF0aW9uL0NvbmZpZ3VyZS5oZWxwCVN1biBKdW4g MjUgMjM6NTc6MzkgMjAwMAorKysgc3RhYmxlLWludGxhdC9Eb2N1bWVudGF0aW9uL0NvbmZp Z3VyZS5oZWxwCVdlZCBKdWwgIDUgMTM6MjY6NTUgMjAwMApAQCAtMTIzNzIsNiArMTIzNzIs MTEgQEAKICAgVGhpcyB3aWxsIHVzZSBETUEgaWYgcG9zc2libGUgdG8gcmVkdWNlIENQVSB1 c2FnZS4gIElmIGluIGRvdWJ0LAogICBzYXkgWSBoZXJlLgogICAgCitJbnRlcnVwdCBMYXRl bmN5IE1lYXN1cmVtZW50CitDT05GSUdfSVJRX0xBVEVOQ1kKKyAgVGhpcyB3aWxsIGluc3Rh bGwgSnVuIFN1bidzIElSUSBsYXRlbmN5IG1lYXN1cmVtZW50IGNvZGUgaW50byB0aGUga2Vy bmVsIGFuZAorICBtb2R1bGVzLiAgTm90IG1hbnkgcGVvcGxlIGFyZSBsaWtlbHkgdG8gdXNl IGl0Li4uIElmIGluIGRvdWJ0IGFuc3dlciBOLgorCiAjCiAjIEEgY291cGxlIG9mIHRoaW5n cyBJIGtlZXAgZm9yZ2V0dGluZzoKICMgICBjYXBpdGFsaXplOiBBcHBsZVRhbGssIEV0aGVy bmV0LCBET1MsIERNQSwgRkFULCBGVFAsIEludGVybmV0LCAKZGlmZiAtdXJiQndQIGxpbnV4 LXBtYWMtc3RhYmxlL01ha2VmaWxlIHN0YWJsZS1pbnRsYXQvTWFrZWZpbGUKLS0tIGxpbnV4 LXBtYWMtc3RhYmxlL01ha2VmaWxlCVN1biBKdW4gMjUgMjM6NTE6MTQgMjAwMAorKysgc3Rh YmxlLWludGxhdC9NYWtlZmlsZQlXZWQgSnVsICA1IDEzOjAyOjAxIDIwMDAKQEAgLTEsNyAr MSw3IEBACiBWRVJTSU9OID0gMgogUEFUQ0hMRVZFTCA9IDIKIFNVQkxFVkVMID0gMTcKLUVY VFJBVkVSU0lPTiA9IHByZTcKK0VYVFJBVkVSU0lPTiA9IHA3aW50CiAKIEFSQ0ggOj0gJChz aGVsbCB1bmFtZSAtbSB8IHNlZCAtZSBzL2kuODYvaTM4Ni8gLWUgcy9zdW40dS9zcGFyYzY0 LyAtZSBzL2FybS4qL2FybS8gLWUgcy9zYTExMC9hcm0vKQogCk9ubHkgaW4gbGludXgtcG1h Yy1zdGFibGUvYXJjaC9wcGMvYm9vdDogcmFtZGlzay5pbWFnZS5negpPbmx5IGluIGxpbnV4 LXBtYWMtc3RhYmxlL2FyY2gvcHBjL2NocnBib290OiByYW1kaXNrLmltYWdlLmd6CmRpZmYg LXVyYkJ3UCBsaW51eC1wbWFjLXN0YWJsZS9hcmNoL3BwYy9jb25maWcuaW4gc3RhYmxlLWlu dGxhdC9hcmNoL3BwYy9jb25maWcuaW4KLS0tIGxpbnV4LXBtYWMtc3RhYmxlL2FyY2gvcHBj L2NvbmZpZy5pbglGcmkgSnVuICA5IDEyOjU0OjUwIDIwMDAKKysrIHN0YWJsZS1pbnRsYXQv YXJjaC9wcGMvY29uZmlnLmluCVdlZCBKdWwgIDUgMTM6MDI6MjcgMjAwMApAQCAtNjMsNiAr NjMsOSBAQAogYm9vbCAnQmFja3dhcmQtY29tcGF0aWJsZSAvcHJvYy9wY2knIENPTkZJR19Q Q0lfT0xEX1BST0MKIGJvb2wgJ05ldHdvcmtpbmcgc3VwcG9ydCcgQ09ORklHX05FVAogYm9v bCAnU3lzY3RsIHN1cHBvcnQnIENPTkZJR19TWVNDVEwKK2lmIFsgIiRDT05GSUdfUE1BQyIg PSAieSIgLW8gIiRDT05GSUdfQUxMX1BQQyIgPSAieSIgXTsgdGhlbgorYm9vbCAnSVJRIExh dGVuY3kgUHJvZmlsaW5nJyBDT05GSUdfSVJRX0xBVEVOQ1kKK2ZpCiBib29sICdTeXN0ZW0g ViBJUEMnIENPTkZJR19TWVNWSVBDCiBib29sICdCU0QgUHJvY2VzcyBBY2NvdW50aW5nJyBD T05GSUdfQlNEX1BST0NFU1NfQUNDVAogCmRpZmYgLXVyYkJ3UCBsaW51eC1wbWFjLXN0YWJs ZS9hcmNoL3BwYy9rZXJuZWwvTWFrZWZpbGUgc3RhYmxlLWludGxhdC9hcmNoL3BwYy9rZXJu ZWwvTWFrZWZpbGUKLS0tIGxpbnV4LXBtYWMtc3RhYmxlL2FyY2gvcHBjL2tlcm5lbC9NYWtl ZmlsZQlTYXQgSnVuIDE3IDAxOjEyOjMwIDIwMDAKKysrIHN0YWJsZS1pbnRsYXQvYXJjaC9w cGMva2VybmVsL01ha2VmaWxlCVdlZCBKdWwgIDUgMTM6MTk6MjcgMjAwMApAQCAtMTYsMTEg KzE2LDE2IEBACiAjZW5kaWYKIAogT19UQVJHRVQgOj0ga2VybmVsLm8KLU9YX09CSlMgOj0g cHBjX2tzeW1zLm8gc2V0dXAubwogCitPWF9PQkpTIDo9IHBwY19rc3ltcy5vIHNldHVwLm8K IAogT19PQkpTIDo9IHRyYXBzLm8gaXJxLm8gaWRsZS5vIHRpbWUubyBwcm9jZXNzLm8gc2ln bmFsLm8gc3lzY2FsbHMubyBtaXNjLm8gXAogCSAgYml0b3BzLm8gcHRyYWNlLm8gYWxpZ24u byBwcGNfaHRhYi5vCisKK2lmZXEgKCQoQ09ORklHX0lSUV9MQVRFTkNZKSx5KQorT19PQkpT ICs9IGludHJfYmxvY2tpbmcubworZW5kaWYgICAgICAgICAgCisKIGlmZGVmIENPTkZJR19Q Q0kKIE9fT0JKUyArPSBwY2kubwogZW5kaWYKZGlmZiAtdXJiQndQIGxpbnV4LXBtYWMtc3Rh YmxlL2FyY2gvcHBjL2tlcm5lbC9oZWFkLlMgc3RhYmxlLWludGxhdC9hcmNoL3BwYy9rZXJu ZWwvaGVhZC5TCi0tLSBsaW51eC1wbWFjLXN0YWJsZS9hcmNoL3BwYy9rZXJuZWwvaGVhZC5T CVNhdCBNYXkgMjcgMjE6NDE6MzkgMjAwMAorKysgc3RhYmxlLWludGxhdC9hcmNoL3BwYy9r ZXJuZWwvaGVhZC5TCVR1ZSBKdWwgIDQgMTk6NTA6MjMgMjAwMApAQCAtMzEyLDcgKzMxMiw3 IEBACiAJbXRzcHIJSUJBVDJMLHIxOAogCW10c3ByCUlCQVQyVSxyMjEKICNlbmRpZiAvKiBu ZGVmIENPTkZJR19HRU1JTkkgKi8JCi0jZW5kaWYKKyNlbmRpZiAvKiBDT05GSUdfQVBVUyAq LwogCW10c3ByCURCQVQwTCxyOAkJLyogTi5CLiA2eHggKG5vdCA2MDEpIGhhdmUgdmFsaWQg Ki8KIAltdHNwcglEQkFUMFUscjExCQkvKiBiaXQgaW4gdXBwZXIgQkFUIHJlZ2lzdGVyICov CiAJbXRzcHIJSUJBVDBMLHI4CmRpZmYgLXVyYkJ3UCBsaW51eC1wbWFjLXN0YWJsZS9hcmNo L3BwYy9rZXJuZWwvaW50cl9ibG9ja2luZy5jIHN0YWJsZS1pbnRsYXQvYXJjaC9wcGMva2Vy bmVsL2ludHJfYmxvY2tpbmcuYwotLS0gbGludXgtcG1hYy1zdGFibGUvYXJjaC9wcGMva2Vy bmVsL2ludHJfYmxvY2tpbmcuYwlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzAKKysrIHN0YWJs ZS1pbnRsYXQvYXJjaC9wcGMva2VybmVsL2ludHJfYmxvY2tpbmcuYwlUdWUgSnVsICA0IDA5 OjE2OjU3IDIwMDAKQEAgLTAsMCArMSwzMjggQEAKKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+ CisKKworLyoqKiogcGxhdGZvcm0gKioqKi8KKyNkZWZpbmUgcmVhZGNsb2NrKGxvdykgXAor ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1mdGIgJTAiIDogIj1yIiAobG93KSA6KQor CisjZGVmaW5lIF9faW50cl9zYXZlX2ZsYWdzKHgpIF9fc2F2ZV9mbGFncyh4KQorCisvKioq KiBjb25maWd1cmUgKioqKi8KKyNkZWZpbmUgICAgIAlOVU1fTE9HX0VOVFJZICAgICAJOAor I2RlZmluZSAgICAgICAgIElOVFJfSUVOQUJMRSAgICAgICAgICAgIE1TUl9FRQorCisvKioq KiBkYXRhIHN0cnVjdHVyZSAqKioqLworc3RydWN0IEludHJEYXRhIHsKKyAgICAvKiBjb3Vu dCBpbnRlcnJ1cHQgYW5kIGlyZXQgKi8KKyAgICBpbnQgYnJlYWtDb3VudDsKKworICAgIC8q IHRoZSB0ZXN0IG5hbWUgKi8KKyAgICBjb25zdCBjaGFyICogdGVzdE5hbWU7CisKKyAgICAv KiBmbGFnIHRvIGNvbnRyb2wgbG9nZ2luZyAqLworICAgIHVuc2lnbmVkIGxvZ0ZsYWc7ICAg LyogMCAtIG5vIGxvZ2dpbmc7IDEgLSBsb2dnaW5nICovCisKKyAgICAvKiBwYW5pYyBmbGFn IC0gc2V0IHRvIDEgaWYgc29tZXRoaW5nIGlzIHJlYWx5IHdyb25nICovCisgICAgdW5zaWdu ZWQgcGFuaWNGbGFnOworCisgICAgLyogZm9yIHN5bmNocm8gYmV0d2VlbiBzdGFydCBhbmQg ZW5kICovCisgICAgdW5zaWduZWQgc3luY0ZsYWc7CisKKyAgICAvKiB3ZSBvbmx5IGxvZyBp bnRlcnJ1cHRzIHdpdGhpbiBjZXJ0YWluIHJhbmdlICovCisgICAgdW5zaWduZWQgcmFuZ2VM b3c7CisgICAgdW5zaWduZWQgcmFuZ2VIaWdoOworCisgICAgLyogY291bnQgdGhlIHRvdGFs IG51bWJlciBpbnRlcnJ1cHRzICBhbmQgaW50cnMgaW4gcmFuZ2UqLworICAgIHVuc2lnbmVk IG51bUludHJzOworICAgIHVuc2lnbmVkIG51bUluUmFuZ2VJbnRyczsKKworCisgICAgLyog ZXJyb3IgYWNjb3VudGluZyAqLworICAgIHVuc2lnbmVkIHNraXBTdGk7CisgICAgdW5zaWdu ZWQgc2tpcENsaTsKKyAgICB1bnNpZ25lZCBzeW5jU3RpRXJyb3I7CisgICAgdW5zaWduZWQg c3luY0NsaUVycm9yOworICAgIHVuc2lnbmVkIHN0aUJyZWFrRXJyb3I7CisgICAgdW5zaWdu ZWQgcmVzdG9yZVN0aTsKKyAgICB1bnNpZ25lZCByZXN0b3JlQ2xpOworCisgICAgc3RydWN0 IHsKKyAgICAgICAgLyogd29yc3QgYmxvY2tpbmcgdGltZSAqLworICAgICAgICB1bnNpZ25l ZCBibG9ja2luZ1RpbWU7CisKKyAgICAgICAgY29uc3QgY2hhciAqIHN0YXJ0RmlsZU5hbWU7 CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0RmlsZUxpbmU7CisgICAgICAgIHVuc2lnbmVkIHN0 YXJ0Q291bnQ7CisgICAgICAgIAorICAgICAgICBjb25zdCBjaGFyICplbmRGaWxlTmFtZTsK KyAgICAgICAgdW5zaWduZWQgZW5kRmlsZUxpbmU7CisgICAgICAgIHVuc2lnbmVkIGVuZENv dW50OworICAgIH0gY291bnRbTlVNX0xPR19FTlRSWV07Cit9OworCitzdHJ1Y3QgSW50ckRh dGEgaW50ckRhdGEgPSB7CisgICAgMCwKKyAgICAiaW50ZXJydXB0IGxhdGVuY3kgdGVzdCBm b3IgUFBDICg4IGRpc3RpbmN0aXZlIGVudHJpZXMpIiwKKyAgICAwLAorICAgIDAsCisgICAg MCwKKworICAgIDEsCisgICAgMHhmZmZmZmZmZiwKKworICAgIDAsCisgICAgMCwKKworICAg IDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAKK307 CisKKworLyoqKiogZnVuY3Rpb25zICoqKiovCisjaWYgMAordm9pZCBpbnRyX2NoZWNrX2lu dChpbnQgeCkKK3sKKyAgCisgICAgdW5zaWduZWQgZmxhZzsgCisgICAgX19pbnRyX3NhdmVf ZmxhZ3MoZmxhZyk7IAorCisgICAgaWYgKChmbGFnICYgSU5UUl9JRU5BQkxFKSAhPSAwKSB7 CisgIHN3aXRjaCh4KSB7CisgICBjYXNlIDAgOgorCWludHJEYXRhLmNvdW50WzBdLmJsb2Nr aW5nVGltZSArKzsKKwlicmVhazsKKyAgIGNhc2UgMSA6IAorCWludHJEYXRhLmNvdW50WzBd LnN0YXJ0RmlsZUxpbmUgKys7CisJYnJlYWs7CisgICBjYXNlIDIgOiAKKwlpbnRyRGF0YS5j b3VudFswXS5zdGFydENvdW50ICsrOworCWJyZWFrOworICAgY2FzZSAzIDoKKwlpbnRyRGF0 YS5jb3VudFswXS5lbmRGaWxlTGluZSArKzsKKwlicmVhazsKKyAgIGNhc2UgNCA6CisJaW50 ckRhdGEuY291bnRbMF0uZW5kQ291bnQgKys7CisJYnJlYWs7CisgICBkZWZhdWx0IDoKKwlp bnRyRGF0YS5jb3VudFswXS5zdGFydEZpbGVOYW1lID0gIldyb25nIGNoZWNrIG51bWJlciI7 CisJYnJlYWs7CisgIH0KKyAgfSBlbHNlIHsKKyAgc3dpdGNoKHgpIHsKKyAgIGNhc2UgMCA6 CisJaW50ckRhdGEuY291bnRbMV0uYmxvY2tpbmdUaW1lICsrOworCWJyZWFrOworICAgY2Fz ZSAxIDogCisJaW50ckRhdGEuY291bnRbMV0uc3RhcnRGaWxlTGluZSArKzsKKwlicmVhazsK KyAgIGNhc2UgMiA6IAorCWludHJEYXRhLmNvdW50WzFdLnN0YXJ0Q291bnQgKys7CisJYnJl YWs7CisgICBjYXNlIDMgOgorCWludHJEYXRhLmNvdW50WzFdLmVuZEZpbGVMaW5lICsrOwor CWJyZWFrOworICAgY2FzZSA0IDoKKwlpbnRyRGF0YS5jb3VudFsxXS5lbmRDb3VudCArKzsK KwlicmVhazsKKyAgIGRlZmF1bHQgOgorCWludHJEYXRhLmNvdW50WzFdLnN0YXJ0RmlsZU5h bWUgPSAiV3JvbmcgY2hlY2sgbnVtYmVyIjsKKwlicmVhazsKKyAgfQorICB9Cit9CisKKyNl bmRpZgorCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRyX1NldFBhbmljKHVuc2lnbmVkIHgs IGNvbnN0IGNoYXIgKmZuYW1lLCB1bnNpZ25lZCBsKQoreworICAgIGlmIChpbnRyRGF0YS5w YW5pY0ZsYWcgIT0gMCkgeworICAgICAgICAvKiBkb3VibGUgZXJyb3I7IGltcG9zc2libGUg Ki8KKyAgICAgICAgaW50ckRhdGEucGFuaWNGbGFnID0gOTk7CisgICAgICAgIHJldHVybjsK KyAgICB9CisgICAgaW50ckRhdGEucGFuaWNGbGFnID0geDsKKyAgICBpbnRyRGF0YS5jb3Vu dFswXS5zdGFydEZpbGVOYW1lID0gZm5hbWU7CisgICAgaW50ckRhdGEuY291bnRbMF0uc3Rh cnRGaWxlTGluZSA9IGw7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICppbnRyU3RhcnRGaWxl TmFtZTsKK3N0YXRpYyB1bnNpZ25lZCBpbnRyU3RhcnRGaWxlTGluZTsKK3N0YXRpYyB1bnNp Z25lZCBpbnRyU3RhcnRDb3VudDsKKworLyogc3RyYXRlZ3kgOiAKKyAqIGlmIGl0IGlzIHRy dWUgImNsaSIsIGkuZS4sIGNsZWFyaW5nIHRoZSBJRiwgd2UgcmVtZW1iZXIKKyAqIGV2ZXJ5 dGhpbmcsIGFuZCBjbGVhciBicmVha0NvdW50LgorICovCitpbnQgaW50cl9jbGkoY29uc3Qg Y2hhciAqZm5hbWUsIHVuc2lnbmVkIGxpbmVubykKK3sKKyAgICB1bnNpZ25lZCBmbGFnOyAK KyAgICBpbnQgcmV0VmFsdWU7CisKKyAgICBfX2ludHJfc2F2ZV9mbGFncyhmbGFnKTsgCisK KyAgICByZXRWYWx1ZSA9IF9faW50cl9jbGkoKTsKKworICAgIC8qIGlmIHdlIGFyZSBub3Qg bG9nZ2luZyBvciB3ZSBoYXZlIGFuIGVycm9yLCBkbyBub3RoaW5nICovCisgICAgaWYgKChp bnRyRGF0YS5sb2dGbGFnID09IDApIHx8ICggaW50ckRhdGEucGFuaWNGbGFnICE9IDApKSB7 CisgICAgICAgIHJldHVybiByZXRWYWx1ZTsKKyAgICB9CisKKyAgICAvKiBkbyBub3RoaW5n IHdlIGhhZCBJRiBjbGVhcmVkIGJlZm9yZSB3ZSBjYWxsIHRoaXMgZnVuY3Rpb24gKi8KKyAg ICBpZiAoKGZsYWcgJiBJTlRSX0lFTkFCTEUpID09IDApIHsKKyAgICAgICAgaW50ckRhdGEu c2tpcENsaSArKzsKKyAgICAgICAgcmV0dXJuIHJldFZhbHVlOworICAgIH0KKworICAgIC8q IGRlYnVnICovCisgICAgaWYgKGludHJEYXRhLnN5bmNGbGFnID09IDEpIHsKKyAgICAgICAg aW50ckRhdGEuc3luY0NsaUVycm9yICsrOworICAgIH0KKyAgICBpbnRyRGF0YS5zeW5jRmxh ZyA9IDE7CisKKyAgICBpbnRyRGF0YS5icmVha0NvdW50ID0gMDsKKyAgIAorICAgIC8qIFJl YWQgdGhlIFRpbWUgU3RhbXAgQ291bnRlciAqLworICAgIGludHJTdGFydEZpbGVOYW1lID0g Zm5hbWU7CisgICAgaW50clN0YXJ0RmlsZUxpbmUgPSBsaW5lbm87CisgICAgcmVhZGNsb2Nr KGludHJTdGFydENvdW50KTsKKworICAgIHJldHVybiByZXRWYWx1ZTsKK30KKworCisvKiBz dHJhdGVneToKKyAqIHdlIGRvIGEgY291bnQgb25seSBpZiAKKyAqIDEuIHN5bmNGbGFnIGlz IDEgKGEgdmFsaWQgY2xpKCkgd2FzIGNhbGxlZCkKKyAqIDIuIGJyZWFrQ291bnQgaXMgMCAo bm8gaXJldCBpcyBjYWxsZWQgYmV0d2VlbiBjbGkoKSBhbmQgdGhpcyBzdGkoKQorICovCit2 b2lkIGludHJfc3RpKGNvbnN0IGNoYXIgKmZuYW1lLCB1bnNpZ25lZCBsaW5lbm8pCit7Cisg ICAgdW5zaWduZWQgZmxhZzsgCisgICAgdW5zaWduZWQgZW5kQ291bnQ7CisgICAgdW5zaWdu ZWQgZGlmZjsKKyAgICBpbnQgaTsKKworICAgIF9faW50cl9zYXZlX2ZsYWdzKGZsYWcpOyAK KworICAgIC8qIGlmIHdlIGFyZSBub3QgbG9nZ2luZyBvciB3ZSBoYXZlIGFuIGVycm9yLCBk byBub3RoaW5nICovCisgICAgaWYgKChpbnRyRGF0YS5sb2dGbGFnID09IDApIHx8ICggaW50 ckRhdGEucGFuaWNGbGFnICE9IDApKSB7CisgICAgICAgIF9faW50cl9zdGkoKTsKKyAgICAg ICAgcmV0dXJuOworICAgIH0KKworICAgIAorICAgIC8qIGNoZWNrIGlmIHRoaXMgaXMgYSBy ZWFsIHN0aSgpICovCisgICAgaWYgKChmbGFnICYgSU5UUl9JRU5BQkxFKSAhPSAwKSB7Cisg ICAgICAgIGludHJEYXRhLnNraXBTdGkgKys7CisgICAgICAgIF9faW50cl9zdGkoKTsKKyAg ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIGNoZWNrIDEqLworICAgIGlmIChpbnRy RGF0YS5zeW5jRmxhZyAhPSAxKSB7CisgICAgICAgIGludHJEYXRhLnN5bmNTdGlFcnJvciAr KzsKKyAgICAgICAgX19pbnRyX3N0aSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg ICAgLyogY2hlY2sgMiAqLworICAgIGlmIChpbnRyRGF0YS5icmVha0NvdW50ICE9IDApIHsK KyAgICAgICAgaW50ckRhdGEuc3RpQnJlYWtFcnJvciArKzsKKyAgICAgICAgX19pbnRyX3N0 aSgpOworICAgICAgICByZXR1cm47CisgICAgfQorIAorICAgIC8qIHJlYWQgY291bnQgYWdh aW4gKi8KKyAgICByZWFkY2xvY2soZW5kQ291bnQpOworICAgIAorICAgIGludHJEYXRhLnN5 bmNGbGFnID0gMDsKKworICAgIGRpZmYgPSBlbmRDb3VudCAtIGludHJTdGFydENvdW50Owor ICAgIAorICAgIGlmICgoZGlmZiA+PSBpbnRyRGF0YS5yYW5nZUxvdykgJiYgKGRpZmYgPD0g aW50ckRhdGEucmFuZ2VIaWdoKSkgeyAKKyAgICAgICAgdW5zaWduZWQgbG93ZXN0PTB4ZmZm ZmZmZmY7CisgICAgICAgIHVuc2lnbmVkIGxvd2VzdEluZGV4OworICAgICAgICB1bnNpZ25l ZCBzYW1lSW5kZXggPSAweGZmZmZmZmZmOworCisgICAgICAgIGludHJEYXRhLm51bUluUmFu Z2VJbnRycysrOworCisgICAgICAgIC8qIGNoZWNrIGlmIHdlIG5lZWQgdG8gbG9nIHRoaXMg ZXZlbnQgKi8KKyAgICAgICAgZm9yIChpPTA7IGk8IE5VTV9MT0dfRU5UUlk7IGkrKykgewor CisgICAgICAgICAgICBpZiAobG93ZXN0ID4gaW50ckRhdGEuY291bnRbaV0uYmxvY2tpbmdU aW1lKSB7CisJICAgICAgICBsb3dlc3QgPSBpbnRyRGF0YS5jb3VudFtpXS5ibG9ja2luZ1Rp bWU7CisgICAgICAgICAgICAgICAgbG93ZXN0SW5kZXggPSBpOworICAgICAgICAgICAgfQor CisgICAgICAgICAgICBpZiAoIChsaW5lbm8gPT0gaW50ckRhdGEuY291bnRbaV0uZW5kRmls ZUxpbmUpICYmCisgICAgICAgICAgICAgICAgIChpbnRyU3RhcnRGaWxlTGluZSA9PSBpbnRy RGF0YS5jb3VudFtpXS5zdGFydEZpbGVMaW5lKSAmJgorCSAgICAgICAgIChmbmFtZVswXSA9 PSBpbnRyRGF0YS5jb3VudFtpXS5lbmRGaWxlTmFtZVswXSkgJiYKKyAgICAgICAgICAgICAg ICAgKGludHJTdGFydEZpbGVOYW1lWzBdID09IGludHJEYXRhLmNvdW50W2ldLnN0YXJ0Rmls ZU5hbWVbMF0pICkgeworCQkgICAgLyogaWYgdGhlIGxpbmUgbnVtYmVycyBhcmUgc2FtZSwg dGhlIGZpcnN0IGNoYXJzIGluIAorICAgICAgICAgICAgICAgICAgICAgKiBib3RoIGZpbGUg bmFtZXMgYXJlIHNhbWUsIHdlIGNvbnNpZGVyIGl0IGlzIHRoZSBzYW1lCisgICAgICAgICAg ICAgICAgICAgICAqIGVudHJ5LiAqLworCQkgICAgc2FtZUluZGV4ID0gaTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzYW1lSW5kZXggPT0gMHhmZmZmZmZm ZikgIHsKKyAgICAgICAgICAgIGkgPSBsb3dlc3RJbmRleDsKKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIGkgPSBzYW1lSW5kZXg7CisgICAgICAgIH0KKworICAgICAgICBpZiAo ZGlmZiA+IGludHJEYXRhLmNvdW50W2ldLmJsb2NraW5nVGltZSkgeworICAgICAgICAgICAg aW50ckRhdGEuY291bnRbaV0uYmxvY2tpbmdUaW1lID0gZGlmZjsKKyAgICAgICAgICAgIGlu dHJEYXRhLmNvdW50W2ldLmVuZEZpbGVOYW1lID0gZm5hbWU7CisgICAgICAgICAgICBpbnRy RGF0YS5jb3VudFtpXS5lbmRGaWxlTGluZSA9IGxpbmVubzsKKyAgICAgICAgICAgIGludHJE YXRhLmNvdW50W2ldLmVuZENvdW50ID0gZW5kQ291bnQ7CisgICAgICAgICAgICBpbnRyRGF0 YS5jb3VudFtpXS5zdGFydEZpbGVOYW1lID0gaW50clN0YXJ0RmlsZU5hbWU7CisgICAgICAg ICAgICBpbnRyRGF0YS5jb3VudFtpXS5zdGFydEZpbGVMaW5lID0gaW50clN0YXJ0RmlsZUxp bmU7CisgICAgICAgICAgICBpbnRyRGF0YS5jb3VudFtpXS5zdGFydENvdW50ID0gaW50clN0 YXJ0Q291bnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpbnRyRGF0YS5udW1JbnRycysr OworICAgIF9faW50cl9zdGkoKTsKK30KKworCit2b2lkIGludHJfcmVzdG9yZV9mbGFncyhj b25zdCBjaGFyICpmbmFtZSwgdW5zaWduZWQgbGluZW5vLCB1bnNpZ25lZCB4KQoreworICAg IHVuc2lnbmVkIGZsYWc7IAorCisgICAgLyogaWYgd2UgYXJlIG5vdCBsb2dnaW5nIG9yIHdl IGhhdmUgYW4gZXJyb3IsIGRvIG5vdGhpbmcgKi8KKyAgICBpZiAoKGludHJEYXRhLmxvZ0Zs YWcgPT0gMCkgfHwgKCBpbnRyRGF0YS5wYW5pY0ZsYWcgIT0gMCkpIHsKKyAgICAgICAgX19p bnRyX3Jlc3RvcmVfZmxhZ3MoeCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBf X2ludHJfc2F2ZV9mbGFncyhmbGFnKTsgCisKKyAgICBpZiAoKChmbGFnICYgSU5UUl9JRU5B QkxFKSA9PSAwKSAgJiYKKyAgICAgICAgKCh4ICYgSU5UUl9JRU5BQkxFKSAhPSAwKSApICB7 CisgICAgICAgIGludHJEYXRhLnJlc3RvcmVTdGkgKys7CisgICAgICAgIGludHJfc3RpKGZu YW1lLCBsaW5lbm8pOworICAgIH0KKworICAgIGlmICggKChmbGFnICYgSU5UUl9JRU5BQkxF KSAhPSAwKSAmJgorICAgICAgICAgKCh4ICYgSU5UUl9JRU5BQkxFKSA9PSAwKSApIHsKKyAg ICAgICAgaW50ckRhdGEucmVzdG9yZUNsaSArKzsKKyAgICAgICAgaW50cl9jbGkoZm5hbWUs IGxpbmVubyk7CisgICAgfQorCisgICAgX19pbnRyX3Jlc3RvcmVfZmxhZ3MoeCk7Cit9CisK KyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgorCithc21saW5rYWdlIGludCBzeXNfZ2V0X2lu dHJEYXRhKHZvaWQgKiogcHRyKQoreworICAgICByZXR1cm4gcHV0X3VzZXIoJmludHJEYXRh LCBwdHIpOworfQpkaWZmIC11cmJCd1AgbGludXgtcG1hYy1zdGFibGUvYXJjaC9wcGMva2Vy bmVsL21pc2MuUyBzdGFibGUtaW50bGF0L2FyY2gvcHBjL2tlcm5lbC9taXNjLlMKLS0tIGxp bnV4LXBtYWMtc3RhYmxlL2FyY2gvcHBjL2tlcm5lbC9taXNjLlMJVHVlIE1hciAyOCAwNTow ODo0NiAyMDAwCisrKyBzdGFibGUtaW50bGF0L2FyY2gvcHBjL2tlcm5lbC9taXNjLlMJVHVl IEp1bCAgNCAyMDowMzoxOSAyMDAwCkBAIC01Miw5ICs1MiwxNSBAQAogICogRGlzYWJsZSBp bnRlcnJ1cHRzCiAgKglyYyA9IF9kaXNhYmxlX2ludGVycnVwdHMoKQogICovCisjaWZkZWYg Q09ORklHX0lSUV9MQVRFTkNZCitfR0xPQkFMKF9pbnRyX2Rpc2FibGVfaW50ZXJydXB0cykK K19HTE9CQUwoX19pbnRyX2NsaSkKK19HTE9CQUwoX2ludHJfaGFyZF9jbGkpCisjZWxzZQog X0dMT0JBTChfZGlzYWJsZV9pbnRlcnJ1cHRzKQogX0dMT0JBTChfX2NsaSkKIF9HTE9CQUwo X2hhcmRfY2xpKQorI2VuZGlmCiAJbWZtc3IJcjAJCS8qIEdldCBjdXJyZW50IGludGVycnVw dCBzdGF0ZSAqLwogCXJsd2lubQlyMyxyMCwxNisxLDMyLTEsMzEJLyogRXh0cmFjdCBvbGQg dmFsdWUgb2YgJ0VFJyAqLwogCWxpCXI0LDAJCS8qIE5lZWQgW3Vuc2lnbmVkXSB2YWx1ZSBv ZiBNU1JfRUUgKi8KQEAgLTcyLDggKzc4LDEzIEBACiBfR0xPQkFMKF9lbmFibGVfaW50ZXJy dXB0cykKIAljbXBpCTAscjMsMAkJLyogdHVybmluZyB0aGVtIG9uPyAqLwogCWJlcWxyCQkJ Lyogbm90aGluZyB0byBkbyBpZiBzdGF0ZSA9PSAwICovCisjaWZkZWYgQ09ORklHX0lSUV9M QVRFTkNZCitfR0xPQkFMKF9faW50cl9zdGkpCitfR0xPQkFMKF9pbnRyX2hhcmRfc3RpKQor I2Vsc2UKIF9HTE9CQUwoX19zdGkpCiBfR0xPQkFMKF9oYXJkX3N0aSkKKyNlbmRpZgogCWxp cwlyNCxwcGNfbl9sb3N0X2ludGVycnVwdHNAaGEKIAlsd3oJcjQscHBjX25fbG9zdF9pbnRl cnJ1cHRzQGwocjQpCiAJbWZtc3IJcjMJCS8qIEdldCBjdXJyZW50IHN0YXRlICovCkBAIC00 OTMsNyArNTA0LDYgQEAKIAltdHNwcglJQ1RDLHIzCiAJYmxyCiAKLQkKIC8qCiAJTDJDUiBm dW5jdGlvbnMKIAlDb3B5cmlnaHQgqSAxOTk3LTE5OTggYnkgUG93ZXJMb2dpeCBSICYgRCwg SW5jLgpAQCAtOTYxLDQgKzk3MSw4IEBACiAJLmxvbmcgc3lzX25pX3N5c2NhbGwJCS8qIHN0 cmVhbXMxICovCiAJLmxvbmcgc3lzX25pX3N5c2NhbGwJCS8qIHN0cmVhbXMyICovCiAJLmxv bmcgc3lzX3Zmb3JrCisjaWZkZWYgQ09ORklHX0lSUV9MQVRFTkNZCisJLmxvbmcgc3lzX2dl dF9pbnRyRGF0YQkvKiAxOTAgKi8KKwkubG9uZyBzeXNfZ2V0X2ludHJEYXRhCS8qIDE5MSAq LworI2VuZGlmCiAJLnNwYWNlIChOUl9zeXNjYWxscy0xODMpKjQKZGlmZiAtdXJiQndQIGxp bnV4LXBtYWMtc3RhYmxlL2FyY2gvcHBjL2tlcm5lbC9wcGNfa3N5bXMuYyBzdGFibGUtaW50 bGF0L2FyY2gvcHBjL2tlcm5lbC9wcGNfa3N5bXMuYwotLS0gbGludXgtcG1hYy1zdGFibGUv YXJjaC9wcGMva2VybmVsL3BwY19rc3ltcy5jCVNhdCBKdW4gMjQgMDM6MDY6MDAgMjAwMAor Kysgc3RhYmxlLWludGxhdC9hcmNoL3BwYy9rZXJuZWwvcHBjX2tzeW1zLmMJVHVlIEp1bCAg NCAyMjo1Mzo1MSAyMDAwCkBAIC0xNjAsMTEgKzE2MCwxOSBAQAogRVhQT1JUX1NZTUJPTChr ZXJuZWxfdGhyZWFkKTsKIEVYUE9SVF9TWU1CT0woaW5pdF9tbSk7CiAKKyNpZmRlZiBDT05G SUdfSVJRX0xBVEVOQ1kKK0VYUE9SVF9TWU1CT0woaW50cl9jbGkpOworRVhQT1JUX1NZTUJP TChpbnRyX3Jlc3RvcmVfZmxhZ3MpOworRVhQT1JUX1NZTUJPTChpbnRyX3N0aSkgOworI2Vs c2UKIEVYUE9SVF9TWU1CT0woX19jbGkpOwogRVhQT1JUX1NZTUJPTChfX3N0aSk7CisjZW5k aWYKIC8qRVhQT1JUX1NZTUJPTChfX3Jlc3RvcmVfZmxhZ3MpOyovCisjaWZuZGVmIENPTkZJ R19JUlFfTEFURU5DWQogRVhQT1JUX1NZTUJPTChfZGlzYWJsZV9pbnRlcnJ1cHRzKTsKIEVY UE9SVF9TWU1CT0woX2VuYWJsZV9pbnRlcnJ1cHRzKTsKKyNlbmRpZgogRVhQT1JUX1NZTUJP TChmbHVzaF9pbnN0cnVjdGlvbl9jYWNoZSk7CiBFWFBPUlRfU1lNQk9MKF9nZXRfUFZSKTsK IEVYUE9SVF9TWU1CT0woZ2l2ZXVwX2ZwdSk7CmRpZmYgLXVyYkJ3UCBsaW51eC1wbWFjLXN0 YWJsZS9pbmNsdWRlL2FzbS1wcGMvc3lzdGVtLmggc3RhYmxlLWludGxhdC9pbmNsdWRlL2Fz bS1wcGMvc3lzdGVtLmgKLS0tIGxpbnV4LXBtYWMtc3RhYmxlL2luY2x1ZGUvYXNtLXBwYy9z eXN0ZW0uaAlTYXQgSnVuIDI0IDAyOjQ5OjU4IDIwMDAKKysrIHN0YWJsZS1pbnRsYXQvaW5j bHVkZS9hc20tcHBjL3N5c3RlbS5oCVdlZCBKdWwgIDUgMTM6NDU6MTQgMjAwMApAQCAtMzks NyArMzksMTEgQEAKIAlhc20oImRjYmYgJTAsJTE7IHN5bmMiIDogOiAiciIgKGxpbmUpLCAi ciIgKDApKTsKIH0KIAorI2lmZGVmIENPTkZJR19JUlFfTEFURU5DWQorZXh0ZXJuIF9faW5s aW5lX18gdm9pZCBfX2ludHJfcmVzdG9yZV9mbGFncyh1bnNpZ25lZCBsb25nIGZsYWdzKQor I2Vsc2UKIGV4dGVybiBfX2lubGluZV9fIHZvaWQgX19yZXN0b3JlX2ZsYWdzKHVuc2lnbmVk IGxvbmcgZmxhZ3MpCisjZW5kaWYKIHsKICAgICAgICAgZXh0ZXJuIGF0b21pY190IHBwY19u X2xvc3RfaW50ZXJydXB0czsKIAlleHRlcm4gdm9pZCBkb19sb3N0X2ludGVycnVwdHModW5z aWduZWQgbG9uZyk7CkBAIC01MiwxMSArNTYsMzAgQEAKICAgICAgICAgfQogfQogCi0KKyNp ZmRlZiBDT05GSUdfSVJRX0xBVEVOQ1kKKy8qIGpzdW4ncyBJUlEgbGF0ZW5jeSBtZWFzdXJl bWVudCBzdHVmZiAgKi8KK2V4dGVybiB2b2lkIF9faW50cl9zdGkodm9pZCk7CitleHRlcm4g aW50IF9faW50cl9jbGkodm9pZCk7CisjZWxzZQogZXh0ZXJuIHZvaWQgX19zdGkodm9pZCk7 CiBleHRlcm4gdm9pZCBfX2NsaSh2b2lkKTsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0lS UV9MQVRFTkNZCitleHRlcm4gaW50IGludHJfY2xpKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCk7 CitleHRlcm4gdm9pZCBpbnRyX3N0aShjb25zdCBjaGFyICosIHVuc2lnbmVkKTsKK2V4dGVy biB2b2lkIGludHJfcmVzdG9yZV9mbGFncyhjb25zdCBjaGFyICosIHVuc2lnbmVkLCB1bnNp Z25lZCk7CisjZGVmaW5lIF9fY2xpKCkgaW50cl9jbGkoX19GSUxFX18sIF9fTElORV9fKQor I2RlZmluZSBfX3N0aSgpIGludHJfc3RpKF9fRklMRV9fLCBfX0xJTkVfXykKKyNkZWZpbmUg X19yZXN0b3JlX2ZsYWdzKHgpIGludHJfcmVzdG9yZV9mbGFncyhfX0ZJTEVfXywgX19MSU5F X18sIHgpCisjZGVmaW5lIF9kaXNhYmxlX2ludGVycnVwdHMoKSBfX2NsaSgpCisjZGVmaW5l IF9lbmFibGVfaW50ZXJydXB0cyh4KSB7IGlmICh4ICE9IDApIF9fc3RpKCk7IH0KKyNlbHNl CitleHRlcm4gdm9pZCBfc3RpKHZvaWQpOworZXh0ZXJuIHZvaWQgX2NsaSh2b2lkKTsKIGV4 dGVybiBpbnQgX2Rpc2FibGVfaW50ZXJydXB0cyh2b2lkKTsKIGV4dGVybiB2b2lkIF9lbmFi bGVfaW50ZXJydXB0cyhpbnQpOworI2VuZGlmCiAKIGV4dGVybiB2b2lkIHByaW50X2JhY2t0 cmFjZSh1bnNpZ25lZCBsb25nICopOwogZXh0ZXJuIHZvaWQgc2hvd19yZWdzKHN0cnVjdCBw dF9yZWdzICogcmVncyk7Cg== --MS_Mac_OE_3045653411_77117_MIME_Part-- ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/