[SMP patch] io-apic-patch-2.1.99-E

MOLNAR Ingo (mingo@chiara.csoma.elte.hu)
Mon, 4 May 1998 18:52:00 +0200 (CEST)


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.

---1247997369-996308181-894300720=:8848
Content-Type: TEXT/PLAIN; charset=US-ASCII

(this patch is against vanilla 2.1.99 or pre100-1)

Changes:

smp.c:
- changes the APIC timer code to use divisor of 1, this has
zero effect on functionality and speed, but should work
better with very early local-APIC revisions.

irq.c:
- moves ack_APIC() to after the handler has finished executing.
this has definitely fixed the spurious interrupts seen by Jes
Sorensen on his HIPPI driver. (there were more spurious
interrupts than real interrupts ...)

io_apic.c:
- adds support for 'ExtINT' interrupts. Some boards only work
with ExtINT timer IRQs. (thanks to Brian Perkins for testing
this out).

- fixes yet another MP-BIOS anomaly, when a board reports an INT
timer IRQ, but timer IRQ works only as ExtINT. (ugh)

- includes the workaround implemented by io-apic-patch-2.1.97-A,
this workaround has made a difference for several beta testers.
It changes 'high-active+level' IRQ sources to 'high-active+edge'
type sources. This combination is only present in buggy BIOSes.

- generic cleanup, streamlined code, __initfunc()-ed functions,
documentation fixes.

- (io_apic.c still has way too much log output, but until all
boards work 100%, i'd like to keep it this way)

with this patch the I/O APIC code is again back to '100% of boards
boot fine' status, please let me know if i've missed something
and/or if some SMP board still doesnt boot. The patch was sanity
booted on several systems, with and without the mentioned BIOS bugs.

'2.1.99+io-apic-patch-2.1.99-E' is now the 'latest and greatest' IO-APIC
code.

-- mingo

---1247997369-996308181-894300720=:8848
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="io-apic-patch-2.1.99-E"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.980504185200.8848B@chiara.csoma.elte.hu>
Content-Description:

LS0tIGxpbnV4L2FyY2gvaTM4Ni9rZXJuZWwvaXJxLmMub3JpZwlTdW4gTWF5
IDEwIDA2OjQ0OjIzIDE5OTgNCisrKyBsaW51eC9hcmNoL2kzODYva2VybmVs
L2lycS5jCVN1biBNYXkgMTAgMDY6NDQ6NTUgMTk5OA0KQEAgLTc1NCw4ICs3
NTQsNiBAQA0KIA0KIAlzcGluX2xvY2soJmlycV9jb250cm9sbGVyX2xvY2sp
Ow0KIA0KLQkvKiBBY2sgdGhlIGlycSBpbnNpZGUgdGhlIGxvY2shICovDQot
CWFja19BUElDX2lycSgpOw0KIAlkZXNjLT5pcGkgPSAwOw0KIA0KIAkvKiBJ
ZiB0aGUgaXJxIGlzIGRpc2FibGVkIGZvciB3aGF0ZXZlciByZWFzb24sIGp1
c3Qgc2V0IGEgZmxhZyBhbmQgcmV0dXJuICovDQpAQCAtNzkwLDYgKzc4OCw3
IEBADQogCXNwaW5fdW5sb2NrKCZpcnFfY29udHJvbGxlcl9sb2NrKTsNCiAN
CiBub19oYW5kbGVyOg0KKwlhY2tfQVBJQ19pcnEoKTsNCiAJaGFyZGlycV9l
eGl0KGNwdSk7DQogCXJlbGVhc2VfaXJxbG9jayhjcHUpOw0KIH0NCi0tLSBs
aW51eC9hcmNoL2kzODYva2VybmVsL3NtcC5jLm9yaWcJU2F0IE1heSAgOSAx
NDoyNTo0MyAxOTk4DQorKysgbGludXgvYXJjaC9pMzg2L2tlcm5lbC9zbXAu
YwlTYXQgTWF5ICA5IDE0OjI3OjU3IDE5OTgNCkBAIC0xNTYxLDcgKzE1NjEs
NyBAQA0KICAqIEFQSUMgZG91YmxlIHdyaXRlIGJ1Zy4NCiAgKi8NCiANCi0j
ZGVmaW5lIEFQSUNfRElWSVNPUiAxNg0KKyNkZWZpbmUgQVBJQ19ESVZJU09S
IDENCiANCiB2b2lkIHNldHVwX0FQSUNfdGltZXIgKHVuc2lnbmVkIGludCBj
bG9ja3MpDQogew0KQEAgLTE1ODUsNyArMTU4NSw3IEBADQogCSAqLw0KIAl0
bXBfdmFsdWUgPSBhcGljX3JlYWQoQVBJQ19URENSKTsNCiAJYXBpY193cml0
ZShBUElDX1REQ1IgLCAodG1wX3ZhbHVlICYgfkFQSUNfVERSX0RJVl8xICkN
Ci0JCQkJIHwgQVBJQ19URFJfRElWXzE2KTsNCisJCQkJIHwgQVBJQ19URFJf
RElWXzEpOw0KIA0KIAl0bXBfdmFsdWUgPSBhcGljX3JlYWQoQVBJQ19UTUlD
VCk7DQogCWFwaWNfd3JpdGUoQVBJQ19UTUlDVCwgY2xvY2tzL0FQSUNfRElW
SVNPUik7DQotLS0gbGludXgvYXJjaC9pMzg2L2tlcm5lbC9pb19hcGljLmMu
b3JpZwlGcmkgTWF5ICA4IDA1OjQ3OjM3IDE5OTgNCisrKyBsaW51eC9hcmNo
L2kzODYva2VybmVsL2lvX2FwaWMuYwlTYXQgTWF5ICA5IDEyOjU2OjEyIDE5
OTgNCkBAIC0xLDcgKzEsNyBAQA0KIC8qDQogICoJSW50ZWwgSU8tQVBJQyBz
dXBwb3J0IGZvciBtdWx0aS1wZW50aXVtIGhvc3RzLg0KICAqDQotICoJKGMp
IDE5OTcgSW5nbyBNb2xuYXIsIEhham5hbGthIFN6YWJvDQorICoJQ29weXJp
Z2h0IChDKSAxOTk3LCAxOTk4IEluZ28gTW9sbmFyLCBIYWpuYWxrYSBTemFi
bw0KICAqDQogICoJTWFueSB0aGFua3MgdG8gU3RpZyBWZW5hYXMgZm9yIHRy
eWluZyBvdXQgY291bnRsZXNzIGV4cGVyaW1lbnRhbA0KICAqCXBhdGNoZXMg
YW5kIHJlcG9ydGluZy9kZWJ1Z2dpbmcgcHJvYmxlbXMgcGF0aWVudGx5IQ0K
QEAgLTM0LDYgKzM0LDE5IEBADQogICovDQogI2RlZmluZSBJT19BUElDX0JB
U0UgKCh2b2xhdGlsZSBpbnQgKikweGZlYzAwMDAwKQ0KIA0KK2VudW0gbXBf
aXJxX3NvdXJjZV90eXBlcyB7DQorICAgIG1wX0lOVCA9IDAsDQorICAgIG1w
X05NSSA9IDEsDQorICAgIG1wX1NNSSA9IDIsDQorICAgIG1wX0V4dElOVCA9
IDMNCit9Ow0KKw0KK2VudW0gaW9hcGljX2lycV9kZXN0aW5hdGlvbl90eXBl
cyB7DQorICAgIGRlc3RfRml4ZWQgPSAwLA0KKyAgICBkZXN0X0xvd2VzdFBy
aW8gPSAxLA0KKyAgICBkZXN0X0V4dElOVCA9IDcNCit9Ow0KKw0KIC8qDQog
ICogVGhlIHN0cnVjdHVyZSBvZiB0aGUgSU8tQVBJQzoNCiAgKi8NCkBAIC02
MCw3ICs3Myw3IEBADQogCV9fdTMyCXZlY3RvcgkJOiAgOCwNCiAJCWRlbGl2
ZXJ5X21vZGUJOiAgMywJLyogMDAwOiBGSVhFRA0KIAkJCQkJICogMDAxOiBs
b3dlc3QgcHJpbw0KLQkJCQkJICogMTExOiBFeHRJbnQNCisJCQkJCSAqIDEx
MTogRXh0SU5UDQogCQkJCQkgKi8NCiAJCWRlc3RfbW9kZQk6ICAxLAkvKiAw
OiBwaHlzaWNhbCwgMTogbG9naWNhbCAqLw0KIAkJZGVsaXZlcnlfc3RhdHVz
CTogIDEsDQpAQCAtMTM3LDcgKzE1MCw3IEBADQogCWlvX2FwaWNfd3JpdGUo
MHgxMCsyKmlycSwgKigoKGludCAqKSZlbnRyeSkrMCkpOw0KIH0NCiANCi12
b2lkIGNsZWFyX0lPX0FQSUNfaXJxICh1bnNpZ25lZCBpbnQgaXJxKQ0KK3Zv
aWQgY2xlYXJfSU9fQVBJQ19waW4gKHVuc2lnbmVkIGludCBwaW4pDQogew0K
IAlzdHJ1Y3QgSU9fQVBJQ19yb3V0ZV9lbnRyeSBlbnRyeTsNCiANCkBAIC0x
NDYsMTIgKzE1OSwxMiBAQA0KIAkgKi8NCiAJbWVtc2V0KCZlbnRyeSwgMCwg
c2l6ZW9mKGVudHJ5KSk7DQogCWVudHJ5Lm1hc2sgPSAxOw0KLQlpb19hcGlj
X3dyaXRlKDB4MTArMippcnEsICooKChpbnQgKikmZW50cnkpKzApKTsNCi0J
aW9fYXBpY193cml0ZSgweDExKzIqaXJxLCAqKCgoaW50ICopJmVudHJ5KSsx
KSk7DQorCWlvX2FwaWNfd3JpdGUoMHgxMCsyKnBpbiwgKigoKGludCAqKSZl
bnRyeSkrMCkpOw0KKwlpb19hcGljX3dyaXRlKDB4MTErMipwaW4sICooKChp
bnQgKikmZW50cnkpKzEpKTsNCiB9DQogDQogLyoNCi0gKiBzdXBwb3J0IGZv
ciBicm9rZW4gTVAgQklPU2VzLCBlbmFibGVzIGhhbmQtcmVkaXJlY3Rpb24g
b2YgUElSUTAtMyB0bw0KKyAqIHN1cHBvcnQgZm9yIGJyb2tlbiBNUCBCSU9T
ZXMsIGVuYWJsZXMgaGFuZC1yZWRpcmVjdGlvbiBvZiBQSVJRMC03IHRvDQog
ICogc3BlY2lmaWMgQ1BVLXNpZGUgSVJRcy4NCiAgKi8NCiANCkBAIC0xNTks
NyArMTcyLDcgQEANCiBpbnQgcGlycV9lbnRyaWVzIFtNQVhfUElSUVNdOw0K
IGludCBwaXJxc19lbmFibGVkOw0KIA0KLXZvaWQgaW9hcGljX3BpcnFfc2V0
dXAoY2hhciAqc3RyLCBpbnQgKmludHMpDQorX19pbml0ZnVuYyh2b2lkIGlv
YXBpY19waXJxX3NldHVwKGNoYXIgKnN0ciwgaW50ICppbnRzKSkNCiB7DQog
CWludCBpLCBtYXg7DQogDQpAQCAtMTg3LDEyICsyMDAsMTUgQEANCiAJfQ0K
IH0NCiANCi1pbnQgZmluZF9pcnFfZW50cnkoaW50IHBpbikNCisvKg0KKyAq
IEZpbmQgdGhlIGlycSBlbnRyeSBuciBvZiBhIGNlcnRhaW4gcGluLg0KKyAq
Lw0KK19faW5pdGZ1bmMoc3RhdGljIGludCBmaW5kX2lycV9lbnRyeShpbnQg
cGluLCBpbnQgdHlwZSkpDQogew0KIAlpbnQgaTsNCiANCiAJZm9yIChpPTA7
IGk8bXBfaXJxX2VudHJpZXM7IGkrKykNCi0JCWlmICggKG1wX2lycXNbaV0u
bXBjX2lycXR5cGUgPT0gMHgwMCkgJiYNCisJCWlmICggKG1wX2lycXNbaV0u
bXBjX2lycXR5cGUgPT0gdHlwZSkgJiYNCiAJCQkobXBfaXJxc1tpXS5tcGNf
ZHN0aXJxID09IHBpbikpDQogDQogCQkJcmV0dXJuIGk7DQpAQCAtMjAwLDcg
KzIxNiw0OSBAQA0KIAlyZXR1cm4gLTE7DQogfQ0KIA0KLXZvaWQgc2V0dXBf
SU9fQVBJQ19pcnFzICh2b2lkKQ0KKy8qDQorICogRmluZCB0aGUgcGluIHRv
IHdoaWNoIElSUTAgKElTQSkgaXMgY29ubmVjdGVkDQorICovDQorX19pbml0
ZnVuYyhpbnQgZmluZF90aW1lcl9waW4gKGludCB0eXBlKSkNCit7DQorCWlu
dCBpOw0KKw0KKwlmb3IgKGk9MDsgaTxtcF9pcnFfZW50cmllczsgaSsrKSB7
DQorCQlpbnQgbGJ1cyA9IG1wX2lycXNbaV0ubXBjX3NyY2J1czsNCisNCisJ
CWlmICgobXBfYnVzX2lkX3RvX3R5cGVbbGJ1c10gPT0gTVBfQlVTX0lTQSkg
JiYNCisJCSAgICAobXBfaXJxc1tpXS5tcGNfaXJxdHlwZSA9PSB0eXBlKSAm
Jg0KKwkJICAgIChtcF9pcnFzW2ldLm1wY19zcmNidXNpcnEgPT0gMHgwMCkp
DQorDQorCQkJcmV0dXJuIG1wX2lycXNbaV0ubXBjX2RzdGlycTsNCisJfQ0K
KwlyZXR1cm4gLTE7DQorfQ0KKw0KKy8qDQorICogRmluZCBhIHNwZWNpZmlj
IFBDSSBJUlEgZW50cnkuDQorICogTm90IGFuIGluaXRmdW5jLCBwb3NzaWJs
eSBuZWVkZWQgYnkgbW9kdWxlcw0KKyAqLw0KK2ludCBJT19BUElDX2dldF9Q
Q0lfaXJxX3ZlY3RvciAoaW50IGJ1cywgaW50IHNsb3QsIGludCBwY2lfcGlu
KQ0KK3sNCisJaW50IGk7DQorDQorCWZvciAoaT0wOyBpPG1wX2lycV9lbnRy
aWVzOyBpKyspIHsNCisJCWludCBsYnVzID0gbXBfaXJxc1tpXS5tcGNfc3Jj
YnVzOw0KKw0KKwkJaWYgKElPX0FQSUNfSVJRKG1wX2lycXNbaV0ubXBjX2Rz
dGlycSkgJiYNCisJCSAgICAobXBfYnVzX2lkX3RvX3R5cGVbbGJ1c10gPT0g
TVBfQlVTX1BDSSkgJiYNCisJCSAgICAhbXBfaXJxc1tpXS5tcGNfaXJxdHlw
ZSAmJg0KKwkJICAgIChidXMgPT0gbXBfYnVzX2lkX3RvX3BjaV9idXNbbXBf
aXJxc1tpXS5tcGNfc3JjYnVzXSkgJiYNCisJCSAgICAoc2xvdCA9PSAoKG1w
X2lycXNbaV0ubXBjX3NyY2J1c2lycSA+PiAyKSAmIDB4MWYpKSAmJg0KKwkJ
ICAgIChwY2lfcGluID09IChtcF9pcnFzW2ldLm1wY19zcmNidXNpcnEgJiAz
KSkpDQorDQorCQkJcmV0dXJuIG1wX2lycXNbaV0ubXBjX2RzdGlycTsNCisJ
fQ0KKwlyZXR1cm4gLTE7DQorfQ0KKw0KK19faW5pdGZ1bmModm9pZCBzZXR1
cF9JT19BUElDX2lycXMgKHZvaWQpKQ0KIHsNCiAJc3RydWN0IElPX0FQSUNf
cm91dGVfZW50cnkgZW50cnk7DQogCWludCBpLCBpZHgsIGJ1cywgaXJxLCBm
aXJzdF9ub3Rjb249MTsNCkBAIC0yMTQsMTIgKzI3MiwxMiBAQA0KIAkJICov
DQogCQltZW1zZXQoJmVudHJ5LDAsc2l6ZW9mKGVudHJ5KSk7DQogDQotCQll
bnRyeS5kZWxpdmVyeV9tb2RlID0gMTsJCS8qIGxvd2VzdCBwcmlvICovDQor
CQllbnRyeS5kZWxpdmVyeV9tb2RlID0gZGVzdF9Mb3dlc3RQcmlvOw0KIAkJ
ZW50cnkuZGVzdF9tb2RlID0gMTsJCQkvKiBsb2dpY2FsIGRlbGl2ZXJ5ICov
DQogCQllbnRyeS5tYXNrID0gMDsJCQkJLyogZW5hYmxlIElSUSAqLw0KIAkJ
ZW50cnkuZGVzdC5sb2dpY2FsLmxvZ2ljYWxfZGVzdCA9IDB4ZmY7CS8qIGFs
bCBDUFVzICovDQogDQotCQlpZHggPSBmaW5kX2lycV9lbnRyeShpKTsNCisJ
CWlkeCA9IGZpbmRfaXJxX2VudHJ5KGksbXBfSU5UKTsNCiAJCWlmIChpZHgg
PT0gLTEpIHsNCiAJCQlpZiAoZmlyc3Rfbm90Y29uKSB7DQogCQkJCXByaW50
aygiIElPLUFQSUMgcGluICVkIiwgaSk7DQpAQCAtMzYxLDYgKzQxOSwyMiBA
QA0KIAkJCX0NCiAJCX0NCiANCisJLyoNCisJICogVGhlcmUgYXJlIGJyb2tl
biBtcHRhYmxlcyB3aGljaCByZWdpc3RlciBJU0EraGlnaC1hY3RpdmUrbGV2
ZWwgSVJRcywNCisJICogdGhlc2UgYXJlIGlsbGVnYWwgYW5kIGFyZSBjb252
ZXJ0ZWQgaGVyZSB0byBJU0EraGlnaC1hY3RpdmUrZWRnZQ0KKwkgKiBJUlEg
c291cmNlcy4gQ2FyZWZ1bCwgSVNBK2xvdy1hY3RpdmUrbGV2ZWwgaXMgYW5v
dGhlciBicm9rZW4gZW50cnkNCisJICogdHlwZSwgaXQgcmVwcmVzZW50cyBQ
Q0kgSVJRcyAnZW1iZWRkZWQgaW50byBhbiBJU0EgYnVzJywgdGhleSBoYXZl
DQorCSAqIHRvIGJlIGFjY2VwdGVkLiBZZXMsIHVnaC4NCisJICovDQorCQlp
ZiAoIChtcF9idXNfaWRfdG9fdHlwZVtidXNdID09IE1QX0JVU19JU0EpICYm
DQorCQkJKGVudHJ5LnBvbGFyaXR5ID09IDApIC8qIGFjdGl2ZS1oaWdoICov
ICYmDQorCQkJKGVudHJ5LnRyaWdnZXIgPT0gMSkgLyogbGV2ZWwgKi8gKQ0K
KwkJew0KKwkJCXByaW50aygiYnJva2VuIEJJT1MsIGNoYW5naW5nIHBpbiAl
ZCB0byBlZGdlXG4iLCBpKTsNCisJCQllbnRyeS50cmlnZ2VyID0gMDsNCisJ
CX0NCisNCisNCiAJCWlvX2FwaWNfd3JpdGUoMHgxMCsyKmksICooKChpbnQg
KikmZW50cnkpKzApKTsNCiAJCWlvX2FwaWNfd3JpdGUoMHgxMSsyKmksICoo
KChpbnQgKikmZW50cnkpKzEpKTsNCiAJfQ0KQEAgLTM2OSw3ICs0NDMsNyBA
QA0KIAkJcHJpbnRrKCIgbm90IGNvbm5lY3RlZC5cbiIpOw0KIH0NCiANCi12
b2lkIHNldHVwX0lPX0FQSUNfaXJxX0lTQV9kZWZhdWx0ICh1bnNpZ25lZCBp
bnQgaXJxKQ0KK19faW5pdGZ1bmModm9pZCBzZXR1cF9JT19BUElDX2lycV9J
U0FfZGVmYXVsdCAodW5zaWduZWQgaW50IGlycSkpDQogew0KIAlzdHJ1Y3Qg
SU9fQVBJQ19yb3V0ZV9lbnRyeSBlbnRyeTsNCiANCkBAIC0zNzgsOSArNDUy
LDkgQEANCiAJICovDQogCW1lbXNldCgmZW50cnksMCxzaXplb2YoZW50cnkp
KTsNCiANCi0JZW50cnkuZGVsaXZlcnlfbW9kZSA9IDE7CQkJLyogbG93ZXN0
IHByaW8gKi8NCisJZW50cnkuZGVsaXZlcnlfbW9kZSA9IGRlc3RfTG93ZXN0
UHJpbzsJCS8qIGxvd2VzdCBwcmlvICovDQogCWVudHJ5LmRlc3RfbW9kZSA9
IDE7CQkJCS8qIGxvZ2ljYWwgZGVsaXZlcnkgKi8NCi0JZW50cnkubWFzayA9
IDE7CQkJCQkvKiB1bm1hc2sgSVJRIG5vdyAqLw0KKwllbnRyeS5tYXNrID0g
MDsJCQkJCS8qIHVubWFzayBJUlEgbm93ICovDQogCWVudHJ5LmRlc3QubG9n
aWNhbC5sb2dpY2FsX2Rlc3QgPSAweGZmOwkJLyogYWxsIENQVXMgKi8NCiAN
CiAJZW50cnkudmVjdG9yID0gSU9fQVBJQ19WRUNUT1IoaXJxKTsNCkBAIC0z
OTIsNTYgKzQ2Niw0MiBAQA0KIAlpb19hcGljX3dyaXRlKDB4MTErMippcnEs
ICooKChpbnQgKikmZW50cnkpKzEpKTsNCiB9DQogDQotaW50IElPX0FQSUNf
Z2V0X1BDSV9pcnFfdmVjdG9yIChpbnQgYnVzLCBpbnQgc2xvdCwgaW50IHBj
aV9waW4pDQotew0KLQlpbnQgaTsNCi0NCi0JZm9yIChpPTA7IGk8bXBfaXJx
X2VudHJpZXM7IGkrKykgew0KLQkJaW50IGxidXMgPSBtcF9pcnFzW2ldLm1w
Y19zcmNidXM7DQotDQotCQlpZiAoSU9fQVBJQ19JUlEobXBfaXJxc1tpXS5t
cGNfZHN0aXJxKSAmJg0KLQkJICAgIChtcF9idXNfaWRfdG9fdHlwZVtsYnVz
XSA9PSBNUF9CVVNfUENJKSAmJg0KLQkJICAgICFtcF9pcnFzW2ldLm1wY19p
cnF0eXBlICYmDQotCQkgICAgKGJ1cyA9PSBtcF9idXNfaWRfdG9fcGNpX2J1
c1ttcF9pcnFzW2ldLm1wY19zcmNidXNdKSAmJg0KLQkJICAgIChzbG90ID09
ICgobXBfaXJxc1tpXS5tcGNfc3JjYnVzaXJxID4+IDIpICYgMHgxZikpICYm
DQotCQkgICAgKHBjaV9waW4gPT0gKG1wX2lycXNbaV0ubXBjX3NyY2J1c2ly
cSAmIDMpKSkNCi0NCi0JCQlyZXR1cm4gbXBfaXJxc1tpXS5tcGNfZHN0aXJx
Ow0KLQl9DQotCXJldHVybiAtMTsNCi19DQotDQogLyoNCi0gKiBUaGVyZSBp
cyBhIG5hc3R5IGJ1ZyBpbiBzb21lIG9sZGVyIFNNUCBib2FyZHMsIHRoZWly
IG1wdGFibGUgbGllcw0KLSAqIGFib3V0IHRoZSB0aW1lciBJUlEuIFdlIGRv
IHRoZSBmb2xsb3dpbmcgdG8gd29yayBhcm91bmQgdGhlIHNpdHVhdGlvbjoN
Ci0gKg0KLSAqCS0gdGltZXIgSVJRIGRlZmF1bHRzIHRvIElPLUFQSUMgSVJR
DQotICoJLSBpZiB0aGlzIGZ1bmN0aW9uIGRldGVjdHMgdGhhdCB0aW1lciBJ
UlFzIGFyZSBkZWZ1bmN0LCB0aGVuIHdlIGZhbGwNCi0gKgkgIGJhY2sgdG8g
SVNBIHRpbWVyIElSUXMNCisgKiBTZXQgdXAgYSBjZXJ0YWluIHBpbiBhcyBF
eHRJTlQgZGVsaXZlcmVkIGludGVycnVwdA0KICAqLw0KLXN0YXRpYyBpbnQg
dGltZXJfaXJxX3dvcmtzICh2b2lkKQ0KK19faW5pdGZ1bmModm9pZCBzZXR1
cF9FeHRJTlRfcGluICh1bnNpZ25lZCBpbnQgcGluKSkNCiB7DQotCXVuc2ln
bmVkIGludCB0MT1qaWZmaWVzOw0KLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0K
KwlzdHJ1Y3QgSU9fQVBJQ19yb3V0ZV9lbnRyeSBlbnRyeTsNCiANCi0Jc2F2
ZV9mbGFncyhmbGFncyk7DQotCXN0aSgpOw0KKwkvKg0KKwkgKiBhZGQgaXQg
dG8gdGhlIElPLUFQSUMgaXJxLXJvdXRpbmcgdGFibGU6DQorCSAqLw0KKwlt
ZW1zZXQoJmVudHJ5LDAsc2l6ZW9mKGVudHJ5KSk7DQogDQotCXVkZWxheSgx
MDAqMTAwMCk7DQorCWVudHJ5LmRlbGl2ZXJ5X21vZGUgPSBkZXN0X0V4dElO
VDsNCisJZW50cnkuZGVzdF9tb2RlID0gMTsJCQkJLyogbG9naWNhbCBkZWxp
dmVyeSAqLw0KKwllbnRyeS5tYXNrID0gMDsJCQkJCS8qIHVubWFzayBJUlEg
bm93ICovDQorCWVudHJ5LmRlc3QubG9naWNhbC5sb2dpY2FsX2Rlc3QgPSAw
eGZmOwkJLyogYWxsIENQVXMgKi8NCiANCi0JaWYgKGppZmZpZXMtdDE+MSkN
Ci0JCXJldHVybiAxOw0KKwllbnRyeS52ZWN0b3IgPSBJT19BUElDX1ZFQ1RP
UihwaW4pOwkJLyogaXQncyBpZ25vcmVkICovDQogDQotCXJldHVybiAwOw0K
KwllbnRyeS5wb2xhcml0eT0wOw0KKwllbnRyeS50cmlnZ2VyPTA7DQorDQor
CWlvX2FwaWNfd3JpdGUoMHgxMCsyKnBpbiwgKigoKGludCAqKSZlbnRyeSkr
MCkpOw0KKwlpb19hcGljX3dyaXRlKDB4MTErMipwaW4sICooKChpbnQgKikm
ZW50cnkpKzEpKTsNCiB9DQogDQotdm9pZCBwcmludF9JT19BUElDICh2b2lk
KQ0KK19faW5pdGZ1bmModm9pZCBwcmludF9JT19BUElDICh2b2lkKSkNCiB7
DQogCWludCBpOw0KIAlzdHJ1Y3QgSU9fQVBJQ19yZWdfMDAgcmVnXzAwOw0K
IAlzdHJ1Y3QgSU9fQVBJQ19yZWdfMDEgcmVnXzAxOw0KIAlzdHJ1Y3QgSU9f
QVBJQ19yZWdfMDIgcmVnXzAyOw0KIA0KKyAJcHJpbnRrKCJuciBvZiBNUCBp
cnEgc291cmNlczogJWQuXG4iLCBtcF9pcnFfZW50cmllcyk7DQorIAlwcmlu
dGsoIm5yIG9mIElPLUFQSUMgcmVnaXN0ZXJzOiAlZC5cbiIsIG5yX2lvYXBp
Y19yZWdpc3RlcnMpOw0KKw0KIAkqKGludCAqKSZyZWdfMDAgPSBpb19hcGlj
X3JlYWQoMCk7DQogCSooaW50ICopJnJlZ18wMSA9IGlvX2FwaWNfcmVhZCgx
KTsNCiAJKihpbnQgKikmcmVnXzAyID0gaW9fYXBpY19yZWFkKDIpOw0KQEAg
LTUxMywxNCArNTczLDQxIEBADQogCXJldHVybjsNCiB9DQogDQotc3RhdGlj
IHZvaWQgaW5pdF9zeW1fbW9kZSAodm9pZCkNCitfX2luaXRmdW5jKHN0YXRp
YyB2b2lkIGluaXRfc3ltX21vZGUgKHZvaWQpKQ0KIHsNCisJaW50IGk7DQor
DQorCWlmICghcGlycXNfZW5hYmxlZCkNCisJCWZvciAoaT0wOyBpPE1BWF9Q
SVJRUzsgaSsrKQ0KKwkJCXBpcnFfZW50cmllc1tpXT0tMTsNCisNCiAJcHJp
bnRrKCJlbmFibGluZyBTeW1tZXRyaWMgSU8gbW9kZSAuLi4gIik7DQotCQlv
dXRiX3AgKDB4NzAsIDB4MjIpOw0KLQkJb3V0Yl9wICgweDAxLCAweDIzKTsN
CisNCisJb3V0YigweDcwLCAweDIyKTsNCisJb3V0YigweDAxLCAweDIzKTsN
CisNCiAJcHJpbnRrKCIuLi5kb25lLlxuIik7DQorDQorCS8qDQorCSAqIFRo
ZSBudW1iZXIgb2YgSU8tQVBJQyBpcnEtcmVnaXN0ZXJzICg9PSAjcGlucyk6
DQorCSAqLw0KKwl7DQorCQlzdHJ1Y3QgSU9fQVBJQ19yZWdfMDEgcmVnXzAx
Ow0KKw0KKwkJKihpbnQgKikmcmVnXzAxID0gaW9fYXBpY19yZWFkKDEpOw0K
KwkJbnJfaW9hcGljX3JlZ2lzdGVycyA9IHJlZ18wMS5lbnRyaWVzKzE7DQor
CX0NCisNCisJLyoNCisJICogRG8gbm90IHRydXN0IHRoZSBJTy1BUElDIGJl
aW5nIGVtcHR5IGF0IGJvb3R1cA0KKwkgKi8NCisJZm9yIChpPTA7IGk8bnJf
aW9hcGljX3JlZ2lzdGVyczsgaSsrKQ0KKwkJY2xlYXJfSU9fQVBJQ19waW4g
KGkpOw0KIH0NCiANCisvKg0KKyAqIE5vdCBhbiBpbml0ZnVuYywgbmVlZGVk
IGJ5IHRoZSByZWJvb3QgY29kZQ0KKyAqLw0KIHZvaWQgaW5pdF9waWNfbW9k
ZSAodm9pZCkNCiB7DQogCXByaW50aygiZGlzYWJsaW5nIFN5bW1ldHJpYyBJ
TyBtb2RlIC4uLiAiKTsNCkBAIC01NTEsOCArNjM4LDcgQEANCiAJeyAwCQks
CTAJCX0NCiB9Ow0KIA0KLQ0KLXN0YXRpYyBpbnQgaW5faW9hcGljX2xpc3Qg
KHN0cnVjdCBpb2FwaWNfbGlzdF9lbnRyeSAqIHRhYmxlKQ0KK19faW5pdGZ1
bmMoc3RhdGljIGludCBpbl9pb2FwaWNfbGlzdCAoc3RydWN0IGlvYXBpY19s
aXN0X2VudHJ5ICogdGFibGUpKQ0KIHsNCiAJZm9yICg7dGFibGUtPm9lbV9p
ZDsgdGFibGUrKykNCiAJCWlmICgoIXN0cmNtcCh0YWJsZS0+b2VtX2lkLGlv
YXBpY19PRU1fSUQpKSAmJg0KQEAgLTU2MSw3ICs2NDcsNyBAQA0KIAlyZXR1
cm4gMDsNCiB9DQogDQotc3RhdGljIGludCBpb2FwaWNfd2hpdGVsaXN0ZWQg
KHZvaWQpDQorX19pbml0ZnVuYyhzdGF0aWMgaW50IGlvYXBpY193aGl0ZWxp
c3RlZCAodm9pZCkpDQogew0KIC8qDQogICogUmlnaHQgbm93LCB3aGl0ZWxp
c3QgZXZlcnl0aGluZyB0byBzZWUgd2hldGhlciB0aGUgbmV3IHBhcnNpbmcN
CkBAIC01NzQsMTIgKzY2MCwxMiBAQA0KICNlbmRpZg0KIH0NCiANCi1zdGF0
aWMgaW50IGlvYXBpY19ibGFja2xpc3RlZCAodm9pZCkNCitfX2luaXRmdW5j
KHN0YXRpYyBpbnQgaW9hcGljX2JsYWNrbGlzdGVkICh2b2lkKSkNCiB7DQog
CXJldHVybiBpbl9pb2FwaWNfbGlzdChpb2FwaWNfYmxhY2tsaXN0KTsNCiB9
DQogDQotc3RhdGljIHZvaWQgc2V0dXBfaW9hcGljX2lkICh2b2lkKQ0KK19f
aW5pdGZ1bmMoc3RhdGljIHZvaWQgc2V0dXBfaW9hcGljX2lkICh2b2lkKSkN
CiB7DQogCXN0cnVjdCBJT19BUElDX3JlZ18wMCByZWdfMDA7DQogDQpAQCAt
NTk4LDcgKzY4NCw3IEBADQogCQlwYW5pYygiQVBJQyBJRCAyIGFscmVhZHkg
dXNlZCIpOw0KIA0KIAkvKg0KLQkgKiBzZXQgdGhlIElEDQorCSAqIFNldCB0
aGUgSUQNCiAJICovDQogCSooaW50ICopJnJlZ18wMCA9IGlvX2FwaWNfcmVh
ZCgwKTsNCiAJcHJpbnRrKCIuLi4gY2hhbmdpbmcgSU8tQVBJQyBwaHlzaWNh
bCBBUElDIElEIHRvIDIgLi4uXG4iKTsNCkBAIC02MTMsNyArNjk5LDcgQEAN
CiAJCXBhbmljKCJjb3VsZCBub3Qgc2V0IElEIik7DQogfQ0KIA0KLXN0YXRp
YyB2b2lkIGNvbnN0cnVjdF9kZWZhdWx0X0lTQV9tcHRhYmxlICh2b2lkKQ0K
K19faW5pdGZ1bmMoc3RhdGljIHZvaWQgY29uc3RydWN0X2RlZmF1bHRfSVNB
X21wdGFibGUgKHZvaWQpKQ0KIHsNCiAJaW50IGksIHBvcz0wOw0KIA0KQEAg
LTY1MCwzMSArNzM2LDg0IEBADQogDQogCXNldHVwX2lvYXBpY19pZCgpOw0K
IH0NCi0JCQkNCi12b2lkIHNldHVwX0lPX0FQSUMgKHZvaWQpDQorDQorLyoN
CisgKiBUaGVyZSBpcyBhIG5hc3R5IGJ1ZyBpbiBzb21lIG9sZGVyIFNNUCBi
b2FyZHMsIHRoZWlyIG1wdGFibGUgbGllcw0KKyAqIGFib3V0IHRoZSB0aW1l
ciBJUlEuIFdlIGRvIHRoZSBmb2xsb3dpbmcgdG8gd29yayBhcm91bmQgdGhl
IHNpdHVhdGlvbjoNCisgKg0KKyAqCS0gdGltZXIgSVJRIGRlZmF1bHRzIHRv
IElPLUFQSUMgSVJRDQorICoJLSBpZiB0aGlzIGZ1bmN0aW9uIGRldGVjdHMg
dGhhdCB0aW1lciBJUlFzIGFyZSBkZWZ1bmN0LCB0aGVuIHdlIGZhbGwNCisg
KgkgIGJhY2sgdG8gSVNBIHRpbWVyIElSUXMNCisgKi8NCitfX2luaXRmdW5j
KHN0YXRpYyBpbnQgdGltZXJfaXJxX3dvcmtzICh2b2lkKSkNCiB7DQotCWlu
dCBpOw0KKwl1bnNpZ25lZCBpbnQgdDE9amlmZmllczsNCisJdW5zaWduZWQg
bG9uZyBmbGFnczsNCiANCi0JaWYgKCFwaXJxc19lbmFibGVkKQ0KLQkJZm9y
IChpPTA7IGk8TUFYX1BJUlFTOyBpKyspDQotCQkJcGlycV9lbnRyaWVzW2ld
PS0xOw0KKwlzYXZlX2ZsYWdzKGZsYWdzKTsNCisJc3RpKCk7DQogDQotCWlu
aXRfc3ltX21vZGUoKTsNCi0Jew0KLQkJc3RydWN0IElPX0FQSUNfcmVnXzAx
IHJlZ18wMTsNCisJdWRlbGF5KDEwKjEwMDAwKTsNCiANCi0JCSooaW50ICop
JnJlZ18wMSA9IGlvX2FwaWNfcmVhZCgxKTsNCi0JCW5yX2lvYXBpY19yZWdp
c3RlcnMgPSByZWdfMDEuZW50cmllcysxOw0KKwlpZiAoamlmZmllcy10MT4x
KQ0KKwkJcmV0dXJuIDE7DQorDQorCXJldHVybiAwOw0KK30NCisNCisvKg0K
KyAqIFRoaXMgY29kZSBtYXkgbG9vayBhIGJpdCBwYXJhbm9pZCwgYnV0IGl0
J3Mgc3VwcG9zZWQgdG8gY29vcGVyYXRlIHdpdGgNCisgKiBhIHdpZGUgcmFu
Z2Ugb2YgYm9hcmRzIGFuZCBCSU9TIGJ1Z3MgLi4uIGZvcnR1bmF0ZWx5IG9u
bHkgdGhlIHRpbWVyIElSUQ0KKyAqIGlzIHNvIHNjcmV3eS4gVGhhbmtzIHRv
IEJyaWFuIFBlcmtpbnMgZm9yIHRlc3RpbmcvaGFja2luZyB0aGlzIGJlYXN0
DQorICogZmFuYXRpY2FsbHkgb24gaGlzIHRydWx5IGJ1Z2dlZCBib2FyZC4N
CisgKi8NCitfX2luaXRmdW5jKHN0YXRpYyB2b2lkIGNoZWNrX3RpbWVyICh2
b2lkKSkNCit7DQorCWludCBwaW4xLCBwaW4yOw0KKw0KKwlwaW4xID0gZmlu
ZF90aW1lcl9waW4gKG1wX0lOVCk7DQorCXBpbjIgPSBmaW5kX3RpbWVyX3Bp
biAobXBfRXh0SU5UKTsNCisNCisJaWYgKCF0aW1lcl9pcnFfd29ya3MgKCkp
IHsNCisJCWlmIChwaW4xICE9IC0xKQ0KKwkJCXByaW50aygiLi5NUC1CSU9T
IGJ1ZzogODI1NCB0aW1lciBub3QgY29ubmVjdGVkIHRvIElPLUFQSUNcbiIp
Ow0KKwkJcHJpbnRrKCIuLnRyeWluZyB0byBzZXQgdXAgdGltZXIgYXMgRXh0
SU5UIC4uLiAiKTsNCisNCisJCWlmIChwaW4yICE9IC0xKSB7DQorCQkJcHJp
bnRrKCIuLiAoZm91bmQgcGluICVkKSAuLi4iLCBwaW4yKTsNCisJCQlzZXR1
cF9FeHRJTlRfcGluIChwaW4yKTsNCisJCQltYWtlXzgyNTlBX2lycSgwKTsN
CisJCX0NCisNCisJCWlmICghdGltZXJfaXJxX3dvcmtzICgpKSB7DQorCQkJ
cHJpbnRrKCIgZmFpbGVkLlxuIik7DQorCQkJcHJpbnRrKCIuLnRyeWluZyB0
byBzZXQgdXAgdGltZXIgYXMgQlAgaXJxIC4uLiIpOw0KKwkJCS8qDQorCQkJ
ICogSnVzdCBpbiBjYXNlIC4uLg0KKwkJCSAqLw0KKwkJCWlmIChwaW4xICE9
IC0xKQ0KKwkJCQljbGVhcl9JT19BUElDX3BpbiAocGluMSk7DQorCQkJaWYg
KHBpbjIgIT0gLTEpDQorCQkJCWNsZWFyX0lPX0FQSUNfcGluIChwaW4yKTsN
CisNCisJCQltYWtlXzgyNTlBX2lycSgwKTsNCisNCisJCQlpZiAoIXRpbWVy
X2lycV93b3JrcyAoKSkgew0KKwkJCQlwcmludGsoIiBmYWlsZWQuXG4iKTsN
CisJCQkJcGFuaWMoIklPLUFQSUMgKyB0aW1lciBkb2VzbnQgd29yayEiKTsN
CisJCQl9DQorCQl9DQorCQlwcmludGsoIiB3b3Jrcy5cbiIpOw0KIAl9DQor
fQ0KIA0KLQkvKg0KLQkgKiBkbyBub3QgdHJ1c3QgdGhlIElPLUFQSUMgYmVp
bmcgZW1wdHkgYXQgYm9vdHVwDQotCSAqLw0KLQlmb3IgKGk9MDsgaTxucl9p
b2FwaWNfcmVnaXN0ZXJzOyBpKyspDQotCQljbGVhcl9JT19BUElDX2lycSAo
aSk7DQorX19pbml0ZnVuYyh2b2lkIHNldHVwX0lPX0FQSUMgKHZvaWQpKQ0K
K3sNCisJaW5pdF9zeW1fbW9kZSgpOw0KIA0KIAkvKg0KLQkgKiB0aGUgZm9s
bG93aW5nIElPLUFQSUMncyBjYW4gYmUgZW5hYmxlZDoNCisJICogRGV0ZXJt
aW5lIHRoZSByYW5nZSBvZiBJUlFzIGhhbmRsZWQgYnkgdGhlIElPLUFQSUMu
IFRoZQ0KKwkgKiBmb2xsb3dpbmcgYm9hcmRzIGNhbiBiZSBmdWxseSBlbmFi
bGVkOg0KIAkgKg0KIAkgKiAtIHdoaXRlbGlzdGVkIG9uZXMNCiAJICogLSB0
aG9zZSB3aGljaCBoYXZlIG5vIFBDSSBwaW5zIGNvbm5lY3RlZA0KQEAgLTY5
OSw3ICs4MzgsNyBAQA0KIAkvKg0KIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXhw
bGljaXQgbXAgaXJxIGVudHJpZXM6IGl0J3MgZWl0aGVyIG9uZSBvZiB0aGUN
CiAJICogZGVmYXVsdCBjb25maWd1cmF0aW9uIHR5cGVzIG9yIHdlIGFyZSBi
cm9rZW4uIEluIGJvdGggY2FzZXMgaXQncw0KLQkgKiBmaW5lIHRvIHNldCB1
cCBtb3N0IG9mIHRoZSBsb3cgMTYgSU9BUElDIHBpbnMgdG8gSVNBIGRlZmF1
bHRzLg0KKwkgKiBmaW5lIHRvIHNldCB1cCBtb3N0IG9mIHRoZSBsb3cgMTYg
SU8tQVBJQyBwaW5zIHRvIElTQSBkZWZhdWx0cy4NCiAJICovDQogCWlmICgh
bXBfaXJxX2VudHJpZXMpIHsNCiAJCXByaW50aygibm8gZXhwbGljaXQgSVJR
IGVudHJpZXMsIHVzaW5nIGRlZmF1bHQgbXB0YWJsZVxuIik7DQpAQCAtNzA4
LDE4ICs4NDcsMTMgQEANCiANCiAJaW5pdF9JT19BUElDX3RyYXBzKCk7DQog
DQorCS8qDQorCSAqIFNldCB1cCB0aGUgSU8tQVBJQyBpcnEgcm91dGluZyB0
YWJsZSBieSBwYXJzaW5nIHRoZSBNUC1CSU9TDQorCSAqIG1wdGFibGU6DQor
CSAqLw0KIAlzZXR1cF9JT19BUElDX2lycXMgKCk7DQotDQotCWlmICghdGlt
ZXJfaXJxX3dvcmtzICgpKSB7DQotCQltYWtlXzgyNTlBX2lycSgwKTsNCi0J
CWlmICghdGltZXJfaXJxX3dvcmtzICgpKQ0KLQkJCXBhbmljKCJJTy1BUElD
ICsgdGltZXIgZG9lc250IHdvcmshIik7DQotCQlwcmludGsoIi4uTVAtQklP
UyBidWc6IGk4MjU0IHRpbWVyIG5vdCBjb25uZWN0ZWQgdG8gSU8tQVBJQ1xu
Iik7DQotCQlwcmludGsoIi4uZmFsbGluZyBiYWNrIHRvIDgyNTlBLWJhc2Vk
IHRpbWVyIGludGVycnVwdFxuIik7DQotCX0NCisJY2hlY2tfdGltZXIoKTsN
CiAgDQotIAlwcmludGsoIm5yIG9mIE1QIGlycSBzb3VyY2VzOiAlZC5cbiIs
IG1wX2lycV9lbnRyaWVzKTsNCi0gCXByaW50aygibnIgb2YgSU9BUElDIHJl
Z2lzdGVyczogJWQuXG4iLCBucl9pb2FwaWNfcmVnaXN0ZXJzKTsNCiAJcHJp
bnRfSU9fQVBJQygpOw0KIH0NCiANCg==
---1247997369-996308181-894300720=:8848--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu