Time warps, current status.

Ingo Molnar (mingo@teto.sch.bme.hu)
Fri, 17 May 1996 02:46:56 +0100 (GMT+0100)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--1117298836-22831266-832297616=:27722
Content-Type: TEXT/PLAIN; charset=US-ASCII

So far i have found following problems that cause time warps:

- timer interrupt updating jiffies, but not xtime
- latencies bigger than LATCH/100
- some hardware is not providing monotonous timer ticks, small "jumps"
exist. Some motherboards do this, some not. No idea why this happens.
here is a log:

jiffie,counter
J:8623 C:8725 |t
J:8623 C:8676 |i
J:8623 C:8627 |m
J:8623 C:8508 |e
J:8623 C:8525 <------- here the timer counter jumps >upwards<
J:8623 C:8465 |
J:8623 C:5834 |
J:8623 C:5767 V

the attached time.c is from 1.99.4, and fixes all these problems, but
other problems can exist too. A program that detects time warps (posted
earlier on this list) is attached too.

-- mingo

--1117298836-22831266-832297616=:27722
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="time.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.93.960517024656.27722E@teto.sch.bme.hu>
Content-Description:

LyoNCiAqICBsaW51eC9hcmNoL2kzODYva2VybmVsL3RpbWUuYw0KICoNCiAq
ICBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTIsIDE5OTUgIExpbnVzIFRvcnZh
bGRzDQogKg0KICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBQQy1zcGVjaWZp
YyB0aW1lIGhhbmRsaW5nIGRldGFpbHM6DQogKiByZWFkaW5nIHRoZSBSVEMg
YXQgYm9vdHVwLCBldGMuLg0KICogMTk5NC0wNy0wMiAgICBBbGFuIE1vZHJh
DQogKglmaXhlZCBzZXRfcnRjX21tc3MsIGZpeGVkIHRpbWUueWVhciBmb3Ig
Pj0gMjAwMCwgbmV3IG1rdGltZQ0KICogMTk5NS0wMy0yNiAgICBNYXJrdXMg
S3Vobg0KICogICAgICBmaXhlZCA1MDAgbXMgYnVnIGF0IGNhbGwgdG8gc2V0
X3J0Y19tbXNzLCBmaXhlZCBEUzEyODg3DQogKiAgICAgIHByZWNpc2lvbiBD
TU9TIGNsb2NrIHVwZGF0ZQ0KICovDQojaW5jbHVkZSA8bGludXgvZXJybm8u
aD4NCiNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KI2luY2x1ZGUgPGxpbnV4
L2tlcm5lbC5oPg0KI2luY2x1ZGUgPGxpbnV4L3BhcmFtLmg+DQojaW5jbHVk
ZSA8bGludXgvc3RyaW5nLmg+DQojaW5jbHVkZSA8bGludXgvbW0uaD4NCiNp
bmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCg0KI2luY2x1ZGUgPGFzbS9z
ZWdtZW50Lmg+DQojaW5jbHVkZSA8YXNtL2lvLmg+DQojaW5jbHVkZSA8YXNt
L2lycS5oPg0KDQojaW5jbHVkZSA8bGludXgvbWMxNDY4MThydGMuaD4NCiNp
bmNsdWRlIDxsaW51eC90aW1leC5oPg0KI2luY2x1ZGUgPGxpbnV4L2NvbmZp
Zy5oPg0KDQpleHRlcm4gaW50IHNldHVwX3g4Nl9pcnEoaW50LCBzdHJ1Y3Qg
aXJxYWN0aW9uICopOw0KDQojaWZuZGVmCUNPTkZJR19BUE0JLyogY3ljbGUg
Y291bnRlciBtYXkgYmUgdW5yZWxpYWJsZSAqLw0KLyogQ3ljbGUgY291bnRl
ciB2YWx1ZSBhdCB0aGUgcHJldmlvdXMgdGltZXIgaW50ZXJydXB0Li4gKi8N
CnN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgbGFzdF90aW1lcl9jYyA9IDA7
DQpzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGluaXRfdGltZXJfY2MgPSAw
Ow0KDQpzdGF0aWMgdW5zaWduZWQgbG9uZyBkb19mYXN0X2dldHRpbWVvZmZz
ZXQodm9pZCkNCnsNCgl1bnNpZ25lZCBsb25nIHRpbWVfbG93LCB0aW1lX2hp
Z2g7DQoJdW5zaWduZWQgbG9uZyBvZmZzZXRfbG93LCBvZmZzZXRfaGlnaDsN
Cgl1bnNpZ25lZCBsb25nIHF1b3RpZW50LHJlbWFpbmRlcixtaXNzaW5nX3Rp
bWU9MDsNCg0KCS8qIExhc3QgamlmZmllIHdoZW4gZG9fZmFzdF9nZXR0aW1l
b2Zmc2V0KCkgd2FzIGNhbGxlZC4uICovDQoJc3RhdGljIHVuc2lnbmVkIGxv
bmcgbGFzdF9qaWZmaWVzPTA7DQoNCgkvKiBDYWNoZWQgImNsb2NrcyBwZXIg
dXNlYyIgdmFsdWUuLiAqLw0KCXN0YXRpYyB1bnNpZ25lZCBsb25nIHF1b3Rp
ZW50X2M9MCwgcmVtYWluZGVyX2M9MDsNCg0KCS8qIFRoZSAiY2xvY2tzIHBl
ciB1c2VjIiB2YWx1ZSBpcyBjYWxjdWxhdGVkIG9uY2UgZWFjaCBqaWZmaWUg
Ki8NCglpZiggbGFzdF9qaWZmaWVzICE9IGppZmZpZXMgKSB7DQoNCgkJLyoq
KioNCgkJICogdGVzdCBmb3IgaGFuZ2luZyBib3R0b20gaGFuZGxlciAodGhp
cyBtZWFucyB4dGltZSBpcyBub3QgDQogICAgICAgICAgICAgICAgICogdXBk
YXRlZCB5ZXQpDQoJCSAqLw0KCQlpZiggdGVzdF9iaXQoVElNRVJfQkgsICZi
aF9hY3RpdmUpICkNCgkJCW1pc3NpbmdfdGltZSA9IDk5NzY3MC9IWjsNCg0K
CQlsYXN0X2ppZmZpZXMgPSBqaWZmaWVzOw0KDQoJCS8qIEdldCBsYXN0IHRp
bWVyIHRpY2sgaW4gYWJzb2x1dGUga2VybmVsIHRpbWUgKi8NCgkJX19hc21f
Xygic3VibCAlMiwlMFxuXHQiDQoJCQkic2JibCAlMywlMSINCgkJCToiPXIi
ICh0aW1lX2xvdyksICI9ciIgKHRpbWVfaGlnaCkNCgkJCToibSIgKCooMCso
bG9uZyAqKSZpbml0X3RpbWVyX2NjKSksDQoJCQkgIm0iICgqKDErKGxvbmcg
KikmaW5pdF90aW1lcl9jYykpLA0KCQkJICIwIiAoKigwKyhsb25nICopJmxh
c3RfdGltZXJfY2MpKSwNCgkJCSAiMSIgKCooMSsobG9uZyAqKSZsYXN0X3Rp
bWVyX2NjKSkpOw0KDQoJCS8qDQoJCSAqIERpdmlkZSB0aGUgNjQtYml0IHRp
bWUgd2l0aCB0aGUgMzItYml0IGppZmZ5IGNvdW50ZXIsDQoJCSAqIGdldHRp
bmcgdGhlIHF1b3RpZW50IGluIGNsb2Nrcy4NCgkJICoNCgkJICogR2l2aW5n
IHF1b3RpZW50ID0gImF2ZXJhZ2UgaW50ZXJuYWwgY2xvY2tzIHBlciB1c2Vj
Ig0KCQkgKi8NCgkJX19hc21fXygiZGl2bCAlMiINCgkJCToiPWEiIChxdW90
aWVudCksICI9ZCIgKHJlbWFpbmRlcikNCgkJCToiciIgKGxhc3RfamlmZmll
cyksDQoJCQkgIjAiICh0aW1lX2xvdyksICIxIiAodGltZV9oaWdoKSk7DQoN
CgkJX19hc21fXygiZGl2bCAlMiINCgkJCToiPWEiIChxdW90aWVudF9jKSwg
Ij1kIiAocmVtYWluZGVyX2MpDQoJCQk6InIiIChxdW90aWVudCksDQoJCQkg
IjAiICgwKSwgIjEiICg5OTc2NzAvSFopKTsNCg0KCX0NCg0KCS8qIFJlYWQg
dGhlIHRpbWUgY291bnRlciAqLw0KCV9fYXNtX18oIi5ieXRlIDB4MGYsMHgz
MSINCgkJOiI9YSIgKHRpbWVfbG93KSwgIj1kIiAodGltZV9oaWdoKSk7DQoN
CgkvKiAuLiByZWxhdGl2ZSB0byBwcmV2aW91cyBqaWZmeSAoMzIgYml0cyBp
cyBlbm91Z2gpICovDQoJdGltZV9sb3cgLT0gKHVuc2lnbmVkIGxvbmcpIGxh
c3RfdGltZXJfY2M7DQoNCgkvKg0KCSAqIFRpbWUgb2Zmc2V0ID0gKDk5NzY3
MC9IWiAqIHRpbWVfbG93KSAvIHF1b3RpZW50Lg0KCSAqLw0KDQoJX19hc21f
XygibXVsICUyIg0KCQk6Ij1hIiAob2Zmc2V0X2xvdyksICI9ZCIgKG9mZnNl
dF9oaWdoKQ0KCQk6InIiIChxdW90aWVudF9jKSwNCgkJICIwIiAodGltZV9s
b3cpLCAiMSIgKDApKTsNCg0KCS8qDQogCSAqIER1ZSB0byByb3VuZGluZyBl
cnJvcnMgKGFuZCBqaWZmaWVzIGluY29uc2lzdGVuY2llcyksDQoJICogd2Ug
bmVlZCB0byBjaGVjayB0aGUgcmVzdWx0IHNvIHRoYXQgd2UnbGwgZ2V0IGEg
dGltZXINCgkgKiB0aGF0IGlzIG1vbm90b25vdXMuDQoJICovDQoJaWYgKG9m
ZnNldF9oaWdoID49IDk5NzY3MC9IWikNCgkJb2Zmc2V0X2hpZ2ggPSA5OTc2
NzAvSFotMTsNCg0KCXJldHVybiBvZmZzZXRfaGlnaCArIG1pc3NpbmdfdGlt
ZTsNCn0NCiNlbmRpZg0KDQovKiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2Fs
bGVkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCANCiAqIEl0IHdhcyBpbnNw
aXJlZCBieSBTdGV2ZSBNY0Nhbm5lJ3MgbWljcm90aW1lLWkzODYgZm9yIEJT
RC4gIC0tIGpycw0KICogDQogKiBIb3dldmVyLCB0aGUgcGMtYXVkaW8gc3Bl
YWtlciBkcml2ZXIgY2hhbmdlcyB0aGUgZGl2aXNvciBzbyB0aGF0DQogKiBp
dCBnZXRzIGludGVycnVwdGVkIHJhdGhlciBtb3JlIG9mdGVuIC0gaXQgbG9h
ZHMgNjQgaW50byB0aGUNCiAqIGNvdW50ZXIgcmF0aGVyIHRoYW4gMTE5MzIh
IFRoaXMgaGFzIGFuIGFkdmVyc2UgaW1wYWN0IG9uDQogKiBkb19nZXR0aW1l
b2Zmc2V0KCkgLS0gaXQgc3RvcHMgd29ya2luZyEgV2hhdCBpcyBhbHNvIG5v
dA0KICogZ29vZCBpcyB0aGF0IHRoZSBpbnRlcnZhbCB0aGF0IG91ciB0aW1l
ciBmdW5jdGlvbiBnZXRzIGNhbGxlZA0KICogaXMgbm8gbG9uZ2VyIDEwLjAw
MDIgbXMsIGJ1dCA5Ljk3NjcgbXMuIFRvIGdldCBhcm91bmQgdGhpcw0KICog
d291bGQgcmVxdWlyZSB1c2luZyBhIGRpZmZlcmVudCB0aW1pbmcgc291cmNl
LiBNYXliZSBzb21lb25lDQogKiBjb3VsZCB1c2UgdGhlIFJUQyAtIEkga25v
dyB0aGF0IHRoaXMgY2FuIGludGVycnVwdCBhdCBmcmVxdWVuY2llcw0KICog
cmFuZ2luZyBmcm9tIDgxOTJIeiB0byAySHouIElmIEkgaGFkIHRoZSBlbmVy
Z3ksIEknZCBzb21laG93IGZpeA0KICogaXQgc28gdGhhdCBhdCBzdGFydHVw
LCB0aGUgdGltZXIgY29kZSBpbiBzY2hlZC5jIHdvdWxkIHNlbGVjdA0KICog
dXNpbmcgZWl0aGVyIHRoZSBSVEMgb3IgdGhlIDgyNTMgdGltZXIuIFRoZSBk
ZWNpc2lvbiB3b3VsZCBiZQ0KICogYmFzZWQgb24gd2hldGhlciB0aGVyZSB3
YXMgYW55IG90aGVyIGRldmljZSBhcm91bmQgdGhhdCBuZWVkZWQNCiAqIHRv
IHRyYW1wbGUgb24gdGhlIDgyNTMuIEknZCBzZXQgdXAgdGhlIFJUQyB0byBp
bnRlcnJ1cHQgYXQgMTAyNCBIeiwNCiAqIGFuZCB0aGVuIGRvIHNvbWUgamln
Z2VyeSB0byBoYXZlIGEgdmVyc2lvbiBvZiBkb190aW1lciB0aGF0IA0KICog
YWR2YW5jZWQgdGhlIGNsb2NrIGJ5IDEvMTAyNCBzLiBFdmVyeSB0aW1lIHRo
YXQgcmVhY2hlZCBvdmVyIDEvMTAwDQogKiBvZiBhIHNlY29uZCwgdGhlbiBk
byBhbGwgdGhlIG9sZCBjb2RlLiBJZiB0aGUgdGltZSB3YXMga2VwdCBjb3Jy
ZWN0DQogKiB0aGVuIGRvX2dldHRpbWVvZmZzZXQgY291bGQganVzdCByZXR1
cm4gMCAtIHRoZXJlIGlzIG5vIGxvdyBvcmRlcg0KICogZGl2aWRlciB0aGF0
IGNhbiBiZSBhY2Nlc3NlZC4NCiAqDQogKiBJZGVhbGx5LCB5b3Ugd291bGQg
YmUgYWJsZSB0byB1c2UgdGhlIFJUQyBmb3IgdGhlIHNwZWFrZXIgZHJpdmVy
LA0KICogYnV0IGl0IGFwcGVhcnMgdGhhdCB0aGUgc3BlYWtlciBkcml2ZXIg
cmVhbGx5IG5lZWRzIGludGVycnVwdCBtb3JlDQogKiBvZnRlbiB0aGFuIGV2
ZXJ5IDEyMCB1cyBvciBzby4NCiAqDQogKiBBbnl3YXksIHRoaXMgbmVlZHMg
bW9yZSB0aG91Z2h0Li4uLgkJcGpzZyAoMTk5My0wOC0yOCkNCiAqIA0KICog
SWYgeW91IGFyZSByZWFsbHkgdGhhdCBpbnRlcmVzdGVkLCB5b3Ugc2hvdWxk
IGJlIHJlYWRpbmcNCiAqIGNvbXAucHJvdG9jb2xzLnRpbWUubnRwIQ0KICov
DQoNCiNkZWZpbmUgVElDS19TSVpFIHRpY2sNCg0Kc3RhdGljIHVuc2lnbmVk
IGxvbmcgZG9fc2xvd19nZXR0aW1lb2Zmc2V0KHZvaWQpDQp7DQoJaW50IGNv
dW50Ow0KCXN0YXRpYyBpbnQgY291bnRfcCA9IDA7DQoJdW5zaWduZWQgbG9u
ZyBvZmZzZXQgPSAwOw0KCXN0YXRpYyB1bnNpZ25lZCBsb25nIGppZmZpZXNf
cCA9IDA7DQoNCgkvKioqKioqKg0KCSAqIGNhY2hlIHZvbGF0aWxlIGppZmZp
ZXMgdGVtcG9yYWx5LCB3ZSBoYXZlIElSUXMgdHVybmVkIG9mZi4gDQoJICog
d2F0Y2ggb3V0IHdoZW4gZ29pbmcgU01QIHRobyAuLi4gDQoJICovDQoJdW5z
aWduZWQgbG9uZyBqaWZmaWVzX3Q7DQoNCgkvKiB0aW1lciBjb3VudCBtYXkg
dW5kZXJmbG93IHJpZ2h0IGhlcmUgKi8NCglvdXRiX3AoMHgwMCwgMHg0Myk7
CS8qIGxhdGNoIHRoZSBjb3VudCBBU0FQICovDQoJY291bnQgPSBpbmJfcCgw
eDQwKTsJLyogcmVhZCB0aGUgbGF0Y2hlZCBjb3VudCAqLw0KCWNvdW50IHw9
IGluYigweDQwKSA8PCA4Ow0KDQogCWppZmZpZXNfdCA9IGppZmZpZXM7DQoN
CgkvKioqKioqDQoJICogYXZvaWQgdGltZXIgaW5jb25zaXN0ZW5jaWVzIC4u
Lg0KCSAqLw0KCWlmKCBjb3VudCA+IGNvdW50X3AgKSB7DQoJCWlmKCBqaWZm
aWVzX3QgPT0gamlmZmllc19wICkgew0KCQkJaWYoIGNvdW50ID4gTEFUQ0gt
TEFUQ0gvMTAwICkNCgkJCQlvZmZzZXQgPSBUSUNLX1NJWkU7DQoJCQllbHNl
DQoJCQkJLyogYXJnaCwgdGhlIHRpbWVyIGlzIGJ1Z2dpbmcgKi8NCgkJCQlj
b3VudCA9IGNvdW50X3A7DQoJCX0gZWxzZSB7DQoJCQlpZiggdGVzdF9iaXQo
VElNRVJfQkgsICZiaF9hY3RpdmUpICkgew0KCQkJCS8qKioqKioNCgkJCQkg
KiB3ZSBoYXZlIGRldGVjdGVkIGEgY291bnRlciB1bmRlcmZsb3cuDQoJCQkg
CSAqLw0KCQkJCW9mZnNldCA9IFRJQ0tfU0laRTsNCgkJCQljb3VudF9wID0g
Y291bnQ7CQkNCgkJCX0gZWxzZSB7DQoJCQkJY291bnRfcCA9IGNvdW50Ow0K
CQkJCWppZmZpZXNfcCA9IGppZmZpZXNfdDsNCgkJCX0NCgkJfQ0KCX0gZWxz
ZSB7DQoJCWNvdW50X3AgPSBjb3VudDsNCgkJamlmZmllc19wID0gamlmZmll
c190Ow0KIAl9DQoNCgljb3VudCA9ICgoTEFUQ0gtMSkgLSBjb3VudCkgKiBU
SUNLX1NJWkU7DQoJY291bnQgPSAoY291bnQgKyBMQVRDSC8yKSAvIExBVENI
Ow0KCXJldHVybiBvZmZzZXQgKyBjb3VudDsNCn0NCg0Kc3RhdGljIHVuc2ln
bmVkIGxvbmcgKCpkb19nZXR0aW1lb2Zmc2V0KSh2b2lkKSA9IGRvX3Nsb3df
Z2V0dGltZW9mZnNldDsNCg0KLyoNCiAqIFRoaXMgdmVyc2lvbiBvZiBnZXR0
aW1lb2ZkYXkgaGFzIG5lYXIgbWljcm9zZWNvbmQgcmVzb2x1dGlvbi4NCiAq
Lw0Kdm9pZCBkb19nZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KQ0K
ew0KCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQoNCglzYXZlX2ZsYWdzKGZsYWdz
KTsNCgljbGkoKTsNCgkqdHYgPSB4dGltZTsNCgl0di0+dHZfdXNlYyArPSBk
b19nZXR0aW1lb2Zmc2V0KCk7DQoJaWYgKHR2LT50dl91c2VjID49IDEwMDAw
MDApIHsNCgkJdHYtPnR2X3VzZWMgLT0gMTAwMDAwMDsNCgkJdHYtPnR2X3Nl
YysrOw0KCX0NCglyZXN0b3JlX2ZsYWdzKGZsYWdzKTsNCn0NCg0Kdm9pZCBk
b19zZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KQ0Kew0KCWNsaSgp
Ow0KCS8qIFRoaXMgaXMgcmV2b2x0aW5nLiBXZSBuZWVkIHRvIHNldCB0aGUg
eHRpbWUudHZfdXNlYw0KCSAqIGNvcnJlY3RseS4gSG93ZXZlciwgdGhlIHZh
bHVlIGluIHRoaXMgbG9jYXRpb24gaXMNCgkgKiBpcyB2YWx1ZSBhdCB0aGUg
bGFzdCB0aWNrLg0KCSAqIERpc2NvdmVyIHdoYXQgY29ycmVjdGlvbiBnZXR0
aW1lb2ZkYXkNCgkgKiB3b3VsZCBoYXZlIGRvbmUsIGFuZCB0aGVuIHVuZG8g
aXQhDQoJICovDQoJdHYtPnR2X3VzZWMgLT0gZG9fZ2V0dGltZW9mZnNldCgp
Ow0KDQoJaWYgKHR2LT50dl91c2VjIDwgMCkgew0KCQl0di0+dHZfdXNlYyAr
PSAxMDAwMDAwOw0KCQl0di0+dHZfc2VjLS07DQoJfQ0KDQoJeHRpbWUgPSAq
dHY7DQoJdGltZV9zdGF0ZSA9IFRJTUVfQkFEOw0KCXRpbWVfbWF4ZXJyb3Ig
PSBNQVhQSEFTRTsNCgl0aW1lX2VzdGVycm9yID0gTUFYUEhBU0U7DQoJc3Rp
KCk7DQp9DQoNCg0KLyoNCiAqIEluIG9yZGVyIHRvIHNldCB0aGUgQ01PUyBj
bG9jayBwcmVjaXNlbHksIHNldF9ydGNfbW1zcyBoYXMgdG8gYmUNCiAqIGNh
bGxlZCA1MDAgbXMgYWZ0ZXIgdGhlIHNlY29uZCBub3d0aW1lIGhhcyBzdGFy
dGVkLCBiZWNhdXNlIHdoZW4NCiAqIG5vd3RpbWUgaXMgd3JpdHRlbiBpbnRv
IHRoZSByZWdpc3RlcnMgb2YgdGhlIENNT1MgY2xvY2ssIGl0IHdpbGwNCiAq
IGp1bXAgdG8gdGhlIG5leHQgc2Vjb25kIHByZWNpc2VseSA1MDAgbXMgbGF0
ZXIuIENoZWNrIHRoZSBNb3Rvcm9sYQ0KICogTUMxNDY4MThBIG9yIERhbGxh
cyBEUzEyODg3IGRhdGEgc2hlZXQgZm9yIGRldGFpbHMuDQogKi8NCnN0YXRp
YyBpbnQgc2V0X3J0Y19tbXNzKHVuc2lnbmVkIGxvbmcgbm93dGltZSkNCnsN
CglpbnQgcmV0dmFsID0gMDsNCglpbnQgcmVhbF9zZWNvbmRzLCByZWFsX21p
bnV0ZXMsIGNtb3NfbWludXRlczsNCgl1bnNpZ25lZCBjaGFyIHNhdmVfY29u
dHJvbCwgc2F2ZV9mcmVxX3NlbGVjdDsNCg0KCXNhdmVfY29udHJvbCA9IENN
T1NfUkVBRChSVENfQ09OVFJPTCk7IC8qIHRlbGwgdGhlIGNsb2NrIGl0J3Mg
YmVpbmcgc2V0ICovDQoJQ01PU19XUklURSgoc2F2ZV9jb250cm9sfFJUQ19T
RVQpLCBSVENfQ09OVFJPTCk7DQoNCglzYXZlX2ZyZXFfc2VsZWN0ID0gQ01P
U19SRUFEKFJUQ19GUkVRX1NFTEVDVCk7IC8qIHN0b3AgYW5kIHJlc2V0IHBy
ZXNjYWxlciAqLw0KCUNNT1NfV1JJVEUoKHNhdmVfZnJlcV9zZWxlY3R8UlRD
X0RJVl9SRVNFVDIpLCBSVENfRlJFUV9TRUxFQ1QpOw0KDQoJY21vc19taW51
dGVzID0gQ01PU19SRUFEKFJUQ19NSU5VVEVTKTsNCglpZiAoIShzYXZlX2Nv
bnRyb2wgJiBSVENfRE1fQklOQVJZKSB8fCBSVENfQUxXQVlTX0JDRCkNCgkJ
QkNEX1RPX0JJTihjbW9zX21pbnV0ZXMpOw0KDQoJLyoNCgkgKiBzaW5jZSB3
ZSdyZSBvbmx5IGFkanVzdGluZyBtaW51dGVzIGFuZCBzZWNvbmRzLA0KCSAq
IGRvbid0IGludGVyZmVyZSB3aXRoIGhvdXIgb3ZlcmZsb3cuIFRoaXMgYXZv
aWRzDQoJICogbWVzc2luZyB3aXRoIHVua25vd24gdGltZSB6b25lcyBidXQg
cmVxdWlyZXMgeW91cg0KCSAqIFJUQyBub3QgdG8gYmUgb2ZmIGJ5IG1vcmUg
dGhhbiAxNSBtaW51dGVzDQoJICovDQoJcmVhbF9zZWNvbmRzID0gbm93dGlt
ZSAlIDYwOw0KCXJlYWxfbWludXRlcyA9IG5vd3RpbWUgLyA2MDsNCglpZiAo
KChhYnMocmVhbF9taW51dGVzIC0gY21vc19taW51dGVzKSArIDE1KS8zMCkg
JiAxKQ0KCQlyZWFsX21pbnV0ZXMgKz0gMzA7CQkvKiBjb3JyZWN0IGZvciBo
YWxmIGhvdXIgdGltZSB6b25lICovDQoJcmVhbF9taW51dGVzICU9IDYwOw0K
DQoJaWYgKGFicyhyZWFsX21pbnV0ZXMgLSBjbW9zX21pbnV0ZXMpIDwgMzAp
IHsNCgkJaWYgKCEoc2F2ZV9jb250cm9sICYgUlRDX0RNX0JJTkFSWSkgfHwg
UlRDX0FMV0FZU19CQ0QpIHsNCgkJCUJJTl9UT19CQ0QocmVhbF9zZWNvbmRz
KTsNCgkJCUJJTl9UT19CQ0QocmVhbF9taW51dGVzKTsNCgkJfQ0KCQlDTU9T
X1dSSVRFKHJlYWxfc2Vjb25kcyxSVENfU0VDT05EUyk7DQoJCUNNT1NfV1JJ
VEUocmVhbF9taW51dGVzLFJUQ19NSU5VVEVTKTsNCgl9IGVsc2UNCgkJcmV0
dmFsID0gLTE7DQoNCgkvKiBUaGUgZm9sbG93aW5nIGZsYWdzIGhhdmUgdG8g
YmUgcmVsZWFzZWQgZXhhY3RseSBpbiB0aGlzIG9yZGVyLA0KCSAqIG90aGVy
d2lzZSB0aGUgRFMxMjg4NyAocG9wdWxhciBNQzE0NjgxOEEgY2xvbmUgd2l0
aCBpbnRlZ3JhdGVkDQoJICogYmF0dGVyeSBhbmQgcXVhcnR6KSB3aWxsIG5v
dCByZXNldCB0aGUgb3NjaWxsYXRvciBhbmQgd2lsbCBub3QNCgkgKiB1cGRh
dGUgcHJlY2lzZWx5IDUwMCBtcyBsYXRlci4gWW91IHdvbid0IGZpbmQgdGhp
cyBtZW50aW9uZWQgaW4NCgkgKiB0aGUgRGFsbGFzIFNlbWljb25kdWN0b3Ig
ZGF0YSBzaGVldHMsIGJ1dCB3aG8gYmVsaWV2ZXMgZGF0YQ0KCSAqIHNoZWV0
cyBhbnl3YXkgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gTWFy
a3VzIEt1aG4NCgkgKi8NCglDTU9TX1dSSVRFKHNhdmVfY29udHJvbCwgUlRD
X0NPTlRST0wpOw0KCUNNT1NfV1JJVEUoc2F2ZV9mcmVxX3NlbGVjdCwgUlRD
X0ZSRVFfU0VMRUNUKTsNCg0KCXJldHVybiByZXR2YWw7DQp9DQoNCi8qIGxh
c3QgdGltZSB0aGUgY21vcyBjbG9jayBnb3QgdXBkYXRlZCAqLw0Kc3RhdGlj
IGxvbmcgbGFzdF9ydGNfdXBkYXRlID0gMDsNCg0KLyoNCiAqIHRpbWVyX2lu
dGVycnVwdCgpIG5lZWRzIHRvIGtlZXAgdXAgdGhlIHJlYWwtdGltZSBjbG9j
aywNCiAqIGFzIHdlbGwgYXMgY2FsbCB0aGUgImRvX3RpbWVyKCkiIHJvdXRp
bmUgZXZlcnkgY2xvY2t0aWNrDQogKi8NCnN0YXRpYyBpbmxpbmUgdm9pZCB0
aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3Qg
cHRfcmVncyAqcmVncykNCnsNCglkb190aW1lcihyZWdzKTsNCg0KCS8qDQoJ
ICogSWYgd2UgaGF2ZSBhbiBleHRlcm5hbGx5IHN5bmNocm9uaXplZCBMaW51
eCBjbG9jaywgdGhlbiB1cGRhdGUNCgkgKiBDTU9TIGNsb2NrIGFjY29yZGlu
Z2x5IGV2ZXJ5IH4xMSBtaW51dGVzLiBTZXRfcnRjX21tc3MoKSBoYXMgdG8g
YmUNCgkgKiBjYWxsZWQgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gNTAwIG1z
IGJlZm9yZSB0aGUgbmV3IHNlY29uZCBzdGFydHMuDQoJICovDQoJaWYgKHRp
bWVfc3RhdGUgIT0gVElNRV9CQUQgJiYgeHRpbWUudHZfc2VjID4gbGFzdF9y
dGNfdXBkYXRlICsgNjYwICYmDQoJICAgIHh0aW1lLnR2X3VzZWMgPiA1MDAw
MDAgLSAodGljayA+PiAxKSAmJg0KCSAgICB4dGltZS50dl91c2VjIDwgNTAw
MDAwICsgKHRpY2sgPj4gMSkpDQoJICBpZiAoc2V0X3J0Y19tbXNzKHh0aW1l
LnR2X3NlYykgPT0gMCkNCgkgICAgbGFzdF9ydGNfdXBkYXRlID0geHRpbWUu
dHZfc2VjOw0KCSAgZWxzZQ0KCSAgICBsYXN0X3J0Y191cGRhdGUgPSB4dGlt
ZS50dl9zZWMgLSA2MDA7IC8qIGRvIGl0IGFnYWluIGluIDYwIHMgKi8NCgkv
KiBBcyB3ZSByZXR1cm4gdG8gdXNlciBtb2RlIGZpcmUgb2ZmIHRoZSBvdGhl
ciBDUFUgc2NoZWR1bGVycy4uIHRoaXMgaXMgDQoJICAgYmFzaWNhbGx5IGJl
Y2F1c2Ugd2UgZG9uJ3QgeWV0IHNoYXJlIElSUSdzIGFyb3VuZC4gVGhpcyBt
ZXNzYWdlIGlzDQoJICAgcmlnZ2VkIHRvIGJlIHNhZmUgb24gdGhlIDM4NiAt
IGJhc2ljYWxseSBpdCdzIGEgaGFjaywgc28gZG9uJ3QgbG9vaw0KCSAgIGNs
b3NlbHkgZm9yIG5vdy4uICovDQoJLypzbXBfbWVzc2FnZV9wYXNzKE1TR19B
TExfQlVUX1NFTEYsIE1TR19SRVNDSEVEVUxFLCAwTCwgMCk7ICovDQoJICAg
IA0KfQ0KDQojaWZuZGVmCUNPTkZJR19BUE0JLyogY3ljbGUgY291bnRlciBt
YXkgYmUgdW5yZWxpYWJsZSAqLw0KLyoNCiAqIFRoaXMgaXMgdGhlIHNhbWUg
YXMgdGhlIGFib3ZlLCBleGNlcHQgd2UgX2Fsc29fIHNhdmUgdGhlIGN1cnJl
bnQNCiAqIGN5Y2xlIGNvdW50ZXIgdmFsdWUgYXQgdGhlIHRpbWUgb2YgdGhl
IHRpbWVyIGludGVycnVwdCwgc28gdGhhdA0KICogd2UgbGF0ZXIgb24gY2Fu
IGVzdGltYXRlIHRoZSB0aW1lIG9mIGRheSBtb3JlIGV4YWN0bHkuDQogKi8N
CnN0YXRpYyB2b2lkIHBlbnRpdW1fdGltZXJfaW50ZXJydXB0KGludCBpcnEs
IHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpDQp7DQoJLyog
cmVhZCBQZW50aXVtIGN5Y2xlIGNvdW50ZXIgKi8NCglfX2FzbV9fKCIuYnl0
ZSAweDBmLDB4MzEiDQoJCToiPWEiICgoKHVuc2lnbmVkIGxvbmcgKikgJmxh
c3RfdGltZXJfY2MpWzBdKSwNCgkJICI9ZCIgKCgodW5zaWduZWQgbG9uZyAq
KSAmbGFzdF90aW1lcl9jYylbMV0pKTsNCgl0aW1lcl9pbnRlcnJ1cHQoaXJx
LCBOVUxMLCByZWdzKTsNCn0NCiNlbmRpZg0KDQovKiBDb252ZXJ0cyBHcmVn
b3JpYW4gZGF0ZSB0byBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6
MDAuDQogKiBBc3N1bWVzIGlucHV0IGluIG5vcm1hbCBkYXRlIGZvcm1hdCwg
aS5lLiAxOTgwLTEyLTMxIDIzOjU5OjU5DQogKiA9PiB5ZWFyPTE5ODAsIG1v
bj0xMiwgZGF5PTMxLCBob3VyPTIzLCBtaW49NTksIHNlYz01OS4NCiAqDQog
KiBbRm9yIHRoZSBKdWxpYW4gY2FsZW5kYXIgKHdoaWNoIHdhcyB1c2VkIGlu
IFJ1c3NpYSBiZWZvcmUgMTkxNywNCiAqIEJyaXRhaW4gJiBjb2xvbmllcyBi
ZWZvcmUgMTc1MiwgYW55d2hlcmUgZWxzZSBiZWZvcmUgMTU4MiwNCiAqIGFu
ZCBpcyBzdGlsbCBpbiB1c2UgYnkgc29tZSBjb21tdW5pdGllcykgbGVhdmUg
b3V0IHRoZQ0KICogLXllYXIvMTAwK3llYXIvNDAwIHRlcm1zLCBhbmQgYWRk
IDEwLl0NCiAqDQogKiBUaGlzIGFsZ29yaXRobSB3YXMgZmlyc3QgcHVibGlz
aGVkIGJ5IEdhdXNzIChJIHRoaW5rKS4NCiAqDQogKiBXQVJOSU5HOiB0aGlz
IGZ1bmN0aW9uIHdpbGwgb3ZlcmZsb3cgb24gMjEwNi0wMi0wNyAwNjoyODox
NiBvbg0KICogbWFjaGluZXMgd2VyZSBsb25nIGlzIDMyLWJpdCEgKEhvd2V2
ZXIsIGFzIHRpbWVfdCBpcyBzaWduZWQsIHdlDQogKiB3aWxsIGFscmVhZHkg
Z2V0IHByb2JsZW1zIGF0IG90aGVyIHBsYWNlcyBvbiAyMDM4LTAxLTE5IDAz
OjE0OjA4KQ0KICovDQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbWt0
aW1lKHVuc2lnbmVkIGludCB5ZWFyLCB1bnNpZ25lZCBpbnQgbW9uLA0KCXVu
c2lnbmVkIGludCBkYXksIHVuc2lnbmVkIGludCBob3VyLA0KCXVuc2lnbmVk
IGludCBtaW4sIHVuc2lnbmVkIGludCBzZWMpDQp7DQoJaWYgKDAgPj0gKGlu
dCkgKG1vbiAtPSAyKSkgewkvKiAxLi4xMiAtPiAxMSwxMiwxLi4xMCAqLw0K
CQltb24gKz0gMTI7CS8qIFB1dHMgRmViIGxhc3Qgc2luY2UgaXQgaGFzIGxl
YXAgZGF5ICovDQoJCXllYXIgLT0gMTsNCgl9DQoJcmV0dXJuICgoKA0KCSAg
ICAodW5zaWduZWQgbG9uZykoeWVhci80IC0geWVhci8xMDAgKyB5ZWFyLzQw
MCArIDM2Nyptb24vMTIgKyBkYXkpICsNCgkgICAgICB5ZWFyKjM2NSAtIDcx
OTQ5OQ0KCSAgICApKjI0ICsgaG91ciAvKiBub3cgaGF2ZSBob3VycyAqLw0K
CSAgICkqNjAgKyBtaW4gLyogbm93IGhhdmUgbWludXRlcyAqLw0KCSAgKSo2
MCArIHNlYzsgLyogZmluYWxseSBzZWNvbmRzICovDQp9DQoNCnVuc2lnbmVk
IGxvbmcgZ2V0X2Ntb3NfdGltZSh2b2lkKQ0Kew0KCXVuc2lnbmVkIGludCB5
ZWFyLCBtb24sIGRheSwgaG91ciwgbWluLCBzZWM7DQoJaW50IGk7DQoNCgkv
KiBUaGUgTGludXggaW50ZXJwcmV0YXRpb24gb2YgdGhlIENNT1MgY2xvY2sg
cmVnaXN0ZXIgY29udGVudHM6DQoJICogV2hlbiB0aGUgVXBkYXRlLUluLVBy
b2dyZXNzIChVSVApIGZsYWcgZ29lcyBmcm9tIDEgdG8gMCwgdGhlDQoJICog
UlRDIHJlZ2lzdGVycyBzaG93IHRoZSBzZWNvbmQgd2hpY2ggaGFzIHByZWNp
c2VseSBqdXN0IHN0YXJ0ZWQuDQoJICogTGV0J3MgaG9wZSBvdGhlciBvcGVy
YXRpbmcgc3lzdGVtcyBpbnRlcnByZXQgdGhlIFJUQyB0aGUgc2FtZSB3YXku
DQoJICovDQoJLyogcmVhZCBSVEMgZXhhY3RseSBvbiBmYWxsaW5nIGVkZ2Ug
b2YgdXBkYXRlIGZsYWcgKi8NCglmb3IgKGkgPSAwIDsgaSA8IDEwMDAwMDAg
OyBpKyspCS8qIG1heSB0YWtlIHVwIHRvIDEgc2Vjb25kLi4uICovDQoJCWlm
IChDTU9TX1JFQUQoUlRDX0ZSRVFfU0VMRUNUKSAmIFJUQ19VSVApDQoJCQli
cmVhazsNCglmb3IgKGkgPSAwIDsgaSA8IDEwMDAwMDAgOyBpKyspCS8qIG11
c3QgdHJ5IGF0IGxlYXN0IDIuMjI4IG1zICovDQoJCWlmICghKENNT1NfUkVB
RChSVENfRlJFUV9TRUxFQ1QpICYgUlRDX1VJUCkpDQoJCQlicmVhazsNCglk
byB7IC8qIElzbid0IHRoaXMgb3ZlcmtpbGwgPyBVSVAgYWJvdmUgc2hvdWxk
IGd1YXJhbnRlZSBjb25zaXN0ZW5jeSAqLw0KCQlzZWMgPSBDTU9TX1JFQUQo
UlRDX1NFQ09ORFMpOw0KCQltaW4gPSBDTU9TX1JFQUQoUlRDX01JTlVURVMp
Ow0KCQlob3VyID0gQ01PU19SRUFEKFJUQ19IT1VSUyk7DQoJCWRheSA9IENN
T1NfUkVBRChSVENfREFZX09GX01PTlRIKTsNCgkJbW9uID0gQ01PU19SRUFE
KFJUQ19NT05USCk7DQoJCXllYXIgPSBDTU9TX1JFQUQoUlRDX1lFQVIpOw0K
CX0gd2hpbGUgKHNlYyAhPSBDTU9TX1JFQUQoUlRDX1NFQ09ORFMpKTsNCglp
ZiAoIShDTU9TX1JFQUQoUlRDX0NPTlRST0wpICYgUlRDX0RNX0JJTkFSWSkg
fHwgUlRDX0FMV0FZU19CQ0QpDQoJICB7DQoJICAgIEJDRF9UT19CSU4oc2Vj
KTsNCgkgICAgQkNEX1RPX0JJTihtaW4pOw0KCSAgICBCQ0RfVE9fQklOKGhv
dXIpOw0KCSAgICBCQ0RfVE9fQklOKGRheSk7DQoJICAgIEJDRF9UT19CSU4o
bW9uKTsNCgkgICAgQkNEX1RPX0JJTih5ZWFyKTsNCgkgIH0NCglpZiAoKHll
YXIgKz0gMTkwMCkgPCAxOTcwKQ0KCQl5ZWFyICs9IDEwMDsNCglyZXR1cm4g
bWt0aW1lKHllYXIsIG1vbiwgZGF5LCBob3VyLCBtaW4sIHNlYyk7DQp9DQoN
CnN0YXRpYyBzdHJ1Y3QgaXJxYWN0aW9uIGlycTAgID0geyB0aW1lcl9pbnRl
cnJ1cHQsIDAsIDAsICJ0aW1lciIsIE5VTEwsIE5VTEx9Ow0KDQp2b2lkIHRp
bWVfaW5pdCh2b2lkKQ0Kew0KCXh0aW1lLnR2X3NlYyA9IGdldF9jbW9zX3Rp
bWUoKTsNCgl4dGltZS50dl91c2VjID0gMDsNCg0KCS8qIElmIHdlIGhhdmUg
dGhlIENQVSBoYXJkd2FyZSB0aW1lIGNvdW50ZXJzLCB1c2UgdGhlbSAqLw0K
I2lmbmRlZiBDT05GSUdfQVBNDQoJCQkJLyogRG9uJ3QgdXNlIHRoZW0gaWYg
YSBzdXNwZW5kL3Jlc3VtZSBjb3VsZA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3JydXB0IHRoZSB0aW1lciB2YWx1ZS4gIFRoaXMg
cHJvYmxlbQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZWVkcyBtb3JlIGRlYnVnZ2luZy4gKi8NCglpZiAoeDg2X2NhcGFiaWxpdHkg
JiAxNikgew0KCQlkb19nZXR0aW1lb2Zmc2V0ID0gZG9fZmFzdF9nZXR0aW1l
b2Zmc2V0Ow0KCQkvKiByZWFkIFBlbnRpdW0gY3ljbGUgY291bnRlciAqLw0K
CQlfX2FzbV9fKCIuYnl0ZSAweDBmLDB4MzEiDQoJCQk6Ij1hIiAoKCh1bnNp
Z25lZCBsb25nICopICZpbml0X3RpbWVyX2NjKVswXSksDQoJCQkgIj1kIiAo
KCh1bnNpZ25lZCBsb25nICopICZpbml0X3RpbWVyX2NjKVsxXSkpOw0KCQlp
cnEwLmhhbmRsZXIgPSBwZW50aXVtX3RpbWVyX2ludGVycnVwdDsNCgl9DQoj
ZW5kaWYNCglzZXR1cF94ODZfaXJxKDAsICZpcnEwKTsNCn0NCg0K
--1117298836-22831266-832297616=:27722
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="bug.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.93.960517024656.27722F@teto.sch.bme.hu>
Content-Description:

DQojaW5jbHVkZSA8c3lzL3RpbWUuaD4NCiNpbmNsdWRlIDx1bmlzdGQuaD4N
CiNpbmNsdWRlIDxzdGRpby5oPg0KDQp2b2lkIG1haW4oKQ0Kew0KICAgIHN0
cnVjdCB0aW1ldmFsIHQsIHRfb2xkOw0KICAgIGxvbmcgaTsNCg0KICAgIHRp
bWVyY2xlYXIoJnQpOw0KICAgIGZvcihpPTA7IGk8MTAwMDAwMDAwbDsgaSsr
KSB7DQoJZ2V0dGltZW9mZGF5KCZ0LCBOVUxMKTsNCglpZihpPjAgJiYgdC50
dl9zZWM9PXRfb2xkLnR2X3NlYyAmJiB0LnR2X3VzZWM8dF9vbGQudHZfdXNl
YykNCgl7DQoJICAgIHByaW50Zigib2xkPSVkIG5ldz0lZFxuIiwgdF9vbGQu
dHZfdXNlYywgdC50dl91c2VjKTsNCgkgICAgZmZsdXNoKHN0ZG91dCk7DQoJ
fQ0KCXRfb2xkID0gdDsNCiAgICB9DQp9DQoNCg==
--1117298836-22831266-832297616=:27722--