[patch] highmem-2.3.30-B4, 64GB/PAE fixes

Ingo Molnar (mingo@chiara.csoma.elte.hu)
Fri, 3 Dec 1999 14:04:31 +0100 (CET)


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.

--79888902-478184044-944226271=:4160
Content-Type: TEXT/PLAIN; charset=US-ASCII

the attached highmem-2.3.30-B4 patch (against 2.3.30-pre5) fixes the bug
noticed by Stephen: PAE mode must always use atomic 64-bit stores to
update page table entries, otherwise TLBs might get corrupted. (we do not
use atomic load-modify-stores because access to pagetables is serialized
by the pagetable spinlock.)

this actually was a bit more complex because a number of places within the
x86 architecture modified ptes directly.

with this patch the 64GB kernel runs very stable under high load. (2-level
page table kernels compile cleanly/boot/work as well)

-- mingo

--79888902-478184044-944226271=:4160
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="highmem-2.3.30-B4"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.9912031404310.4160@chiara.csoma.elte.hu>
Content-Description:
Content-Disposition: attachment; filename="highmem-2.3.30-B4"

LS0tIGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvc3lzdGVtLmgub3JpZwlGcmkg
RGVjICAzIDAxOjE1OjI3IDE5OTkNCisrKyBsaW51eC9pbmNsdWRlL2FzbS1p
Mzg2L3N5c3RlbS5oCUZyaSBEZWMgIDMgMDQ6NTM6MzkgMTk5OQ0KQEAgLTEy
MiwxMSArMTIyLDYxIEBADQogDQogI2RlZmluZSBub3AoKSBfX2FzbV9fIF9f
dm9sYXRpbGVfXyAoIm5vcCIpDQogDQotI2RlZmluZSB4Y2hnKHB0cix4KSAo
KF9fdHlwZW9mX18oKihwdHIpKSlfX3hjaGcoKHVuc2lnbmVkIGxvbmcpKHgp
LChwdHIpLHNpemVvZigqKHB0cikpKSkNCisjZGVmaW5lIHhjaGcocHRyLHYp
ICgoX190eXBlb2ZfXygqKHB0cikpKV9feGNoZygodW5zaWduZWQgbG9uZyko
diksKHB0ciksc2l6ZW9mKCoocHRyKSkpKQ0KKw0KICNkZWZpbmUgdGFzKHB0
cikgKHhjaGcoKHB0ciksMSkpDQogDQogc3RydWN0IF9feGNoZ19kdW1teSB7
IHVuc2lnbmVkIGxvbmcgYVsxMDBdOyB9Ow0KICNkZWZpbmUgX194Zyh4KSAo
KHN0cnVjdCBfX3hjaGdfZHVtbXkgKikoeCkpDQorDQorDQorLyoNCisgKiBU
aGUgc2VtYW50aWNzIG9mIFhDSEdDTVA4QiBhcmUgYSBiaXQgc3RyYW5nZSwg
dGhpcyBpcyB3aHkNCisgKiB0aGVyZSBpcyBhIGxvb3AgYW5kIHRoZSBsb2Fk
aW5nIG9mICUlZWF4IGFuZCAlJWVkeCBoYXMgdG8NCisgKiBiZSBpbnNpZGUu
IFRoaXMgaW5saW5lcyB3ZWxsIGluIG1vc3QgY2FzZXMsIHRoZSBjYWNoZWQN
CisgKiBjb3N0IGlzIGFyb3VuZCB+MzggY3ljbGVzLiAoaW4gdGhlIGZ1dHVy
ZSB3ZSBtaWdodCB3YW50DQorICogdG8gZG8gYW4gU0lNRC8zRE5PVyEvTU1Y
L0ZQVSA2NC1iaXQgc3RvcmUgaGVyZSwgYnV0IHRoYXQNCisgKiBtaWdodCBo
YXZlIGFuIGltcGxpY2l0IEZQVS1zYXZlIGFzIGEgY29zdCwgc28gaXQncyBu
b3QNCisgKiBjbGVhciB3aGljaCBwYXRoIHRvIGdvLikNCisgKi8NCitleHRl
cm4gaW5saW5lIHZvaWQgX19zZXRfNjRiaXQgKHVuc2lnbmVkIGxvbmcgbG9u
ZyAqIHB0ciwNCisJCXVuc2lnbmVkIGludCBsb3csIHVuc2lnbmVkIGludCBo
aWdoKQ0KK3sNCitfX2FzbV9fIF9fdm9sYXRpbGVfXyAoDQorCSIxOgltb3Zs
ICglMCksICUlZWF4Ow0KKwkJbW92bCA0KCUwKSwgJSVlZHg7DQorCQlsb2Nr
OyBjbXB4Y2hnOGIgKCUwKTsNCisJCWpueiAxYiINCisJOjoJCSJEIihwdHIp
LA0KKwkJCSJiIihsb3cpLA0KKwkJCSJjIihoaWdoKQ0KKwk6DQorCQkJImF4
IiwiZHgiLCJtZW1vcnkiKTsNCit9DQorDQorZXh0ZXJuIHZvaWQgaW5saW5l
IF9fc2V0XzY0Yml0X2NvbnN0YW50ICh1bnNpZ25lZCBsb25nIGxvbmcgKnB0
ciwNCisJCQkJCQkgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQ0KK3sNCisJ
X19zZXRfNjRiaXQocHRyLCh1bnNpZ25lZCBpbnQpKHZhbHVlKSwgKHVuc2ln
bmVkIGludCkoKHZhbHVlKT4+MzJVTEwpKTsNCit9DQorI2RlZmluZSBsbF9s
b3coeCkJKigoKHVuc2lnbmVkIGludCopJih4KSkrMCkNCisjZGVmaW5lIGxs
X2hpZ2goeCkJKigoKHVuc2lnbmVkIGludCopJih4KSkrMSkNCisNCitleHRl
cm4gdm9pZCBpbmxpbmUgX19zZXRfNjRiaXRfdmFyICh1bnNpZ25lZCBsb25n
IGxvbmcgKnB0ciwNCisJCQkgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQ0K
K3sNCisJX19zZXRfNjRiaXQocHRyLGxsX2xvdyh2YWx1ZSksIGxsX2hpZ2go
dmFsdWUpKTsNCit9DQorDQorI2RlZmluZSBzZXRfNjRiaXQocHRyLHZhbHVl
KSBcDQorKF9fYnVpbHRpbl9jb25zdGFudF9wKHZhbHVlKSA/IFwNCisgX19z
ZXRfNjRiaXRfY29uc3RhbnQocHRyLCB2YWx1ZSkgOiBcDQorIF9fc2V0XzY0
Yml0X3ZhcihwdHIsIHZhbHVlKSApDQorDQorI2RlZmluZSBfc2V0XzY0Yml0
KHB0cix2YWx1ZSkgXA0KKyhfX2J1aWx0aW5fY29uc3RhbnRfcCh2YWx1ZSkg
PyBcDQorIF9fc2V0XzY0Yml0KHB0ciwgKHVuc2lnbmVkIGludCkodmFsdWUp
LCAodW5zaWduZWQgaW50KSgodmFsdWUpPj4zMlVMTCkgKSA6IFwNCisgX19z
ZXRfNjRiaXQocHRyLCBsbF9sb3codmFsdWUpLCBsbF9oaWdoKHZhbHVlKSkg
KQ0KIA0KIC8qDQogICogTm90ZTogbm8gImxvY2siIHByZWZpeCBldmVuIG9u
IFNNUDogeGNoZyBhbHdheXMgaW1wbGllcyBsb2NrIGFueXdheQ0KLS0tIGxp
bnV4L2luY2x1ZGUvYXNtLWkzODYvcGdhbGxvYy5oLm9yaWcJRnJpIERlYyAg
MyAwMToyMDoxNiAxOTk5DQorKysgbGludXgvaW5jbHVkZS9hc20taTM4Ni9w
Z2FsbG9jLmgJRnJpIERlYyAgMyAwMzo1ODowMSAxOTk5DQpAQCAtMTA3LDcg
KzEwNyw3IEBADQogCQkNCiAJCWlmICghcGFnZSkNCiAJCQlyZXR1cm4gZ2V0
X3B0ZV9rZXJuZWxfc2xvdyhwbWQsIGFkZHJlc3MpOw0KLQkJcG1kX3ZhbCgq
cG1kKSA9IF9LRVJOUEdfVEFCTEUgKyBfX3BhKHBhZ2UpOw0KKwkJc2V0X3Bt
ZChwbWQsIF9fcG1kKF9LRVJOUEdfVEFCTEUgKyBfX3BhKHBhZ2UpKSk7DQog
CQlyZXR1cm4gcGFnZSArIGFkZHJlc3M7DQogCX0NCiAJaWYgKHBtZF9iYWQo
KnBtZCkpIHsNCkBAIC0xMzIsNyArMTMyLDcgQEANCiAJDQogCWlmICghcGFn
ZSkNCiAJCXJldHVybiBnZXRfcHRlX3Nsb3cocG1kLCBhZGRyZXNzKTsNCi0J
cG1kX3ZhbCgqcG1kKSA9IF9QQUdFX1RBQkxFICsgX19wYShwYWdlKTsNCisJ
c2V0X3BtZChwbWQsIF9fcG1kKF9QQUdFX1RBQkxFICsgX19wYShwYWdlKSkp
Ow0KIAlyZXR1cm4gKHB0ZV90ICopcGFnZSArIGFkZHJlc3M7DQogfQ0KIGZp
eDoNCi0tLSBsaW51eC9pbmNsdWRlL2FzbS1pMzg2L3BnYWxsb2MtM2xldmVs
Lmgub3JpZwlGcmkgRGVjICAzIDAxOjIwOjI0IDE5OTkNCisrKyBsaW51eC9p
bmNsdWRlL2FzbS1pMzg2L3BnYWxsb2MtM2xldmVsLmgJRnJpIERlYyAgMyAw
Mzo1NjozNCAxOTk5DQpAQCAtNTQsNyArNTQsNyBAQA0KIAkJCXBhZ2UgPSBn
ZXRfcG1kX3Nsb3coKTsNCiAJCWlmIChwYWdlKSB7DQogCQkJaWYgKHBnZF9u
b25lKCpwZ2QpKSB7DQotCQkJCXBnZF92YWwoKnBnZCkgPSAxICsgX19wYShw
YWdlKTsNCisJCQkJc2V0X3BnZChwZ2QsIF9fcGdkKDEgKyBfX3BhKHBhZ2Up
KSk7DQogCQkJCV9fZmx1c2hfdGxiKCk7DQogCQkJCXJldHVybiBwYWdlICsg
YWRkcmVzczsNCiAJCQl9IGVsc2UNCi0tLSBsaW51eC9pbmNsdWRlL2FzbS1p
Mzg2L3BndGFibGUuaC5vcmlnCUZyaSBEZWMgIDMgMDE6MjA6NDYgMTk5OQ0K
KysrIGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvcGd0YWJsZS5oCUZyaSBEZWMg
IDMgMDM6NTg6MDEgMTk5OQ0KQEAgLTUyLDEzICs1Miw2IEBADQogI2VuZGlm
DQogI2VuZGlmDQogDQotLyoNCi0gKiBDZXJ0YWluIGFyY2hpdGVjdHVyZXMg
bmVlZCB0byBkbyBzcGVjaWFsIHRoaW5ncyB3aGVuIFBURXMNCi0gKiB3aXRo
aW4gYSBwYWdlIHRhYmxlIGFyZSBkaXJlY3RseSBtb2RpZmllZC4gIFRodXMs
IHRoZSBmb2xsb3dpbmcNCi0gKiBob29rIGlzIG1hZGUgYXZhaWxhYmxlLg0K
LSAqLw0KLSNkZWZpbmUgc2V0X3B0ZShwdGVwdHIsIHB0ZXZhbCkgKCgqKHB0
ZXB0cikpID0gKHB0ZXZhbCkpDQotDQogI2RlZmluZSBfX2JlZXAoKSBhc20o
Im1vdmIgJDB4MywlYWw7IG91dGIgJWFsLCQweDYxIikNCiANCiAjZGVmaW5l
IFBNRF9TSVpFCSgxVUwgPDwgUE1EX1NISUZUKQ0KQEAgLTE2NiwxMyArMTU5
LDEzIEBADQogDQogI2RlZmluZSBwdGVfbm9uZSh4KQkoIXB0ZV92YWwoeCkp
DQogI2RlZmluZSBwdGVfcHJlc2VudCh4KQkocHRlX3ZhbCh4KSAmIChfUEFH
RV9QUkVTRU5UIHwgX1BBR0VfUFJPVE5PTkUpKQ0KLSNkZWZpbmUgcHRlX2Ns
ZWFyKHhwKQlkbyB7IHB0ZV92YWwoKih4cCkpID0gMDsgfSB3aGlsZSAoMCkN
CisjZGVmaW5lIHB0ZV9jbGVhcih4cCkJZG8geyBzZXRfcHRlKHhwLCBfX3B0
ZSgwKSk7IH0gd2hpbGUgKDApDQogI2RlZmluZSBwdGVfcGFnZW5yKHgpCSgo
dW5zaWduZWQgbG9uZykoKHB0ZV92YWwoeCkgPj4gUEFHRV9TSElGVCkpKQ0K
IA0KICNkZWZpbmUgcG1kX25vbmUoeCkJKCFwbWRfdmFsKHgpKQ0KLSNkZWZp
bmUJcG1kX2JhZCh4KQkoKHBtZF92YWwoeCkgJiAoflBBR0VfTUFTSyAmIH5f
UEFHRV9VU0VSKSkgIT0gX0tFUk5QR19UQUJMRSkNCiAjZGVmaW5lIHBtZF9w
cmVzZW50KHgpCShwbWRfdmFsKHgpICYgX1BBR0VfUFJFU0VOVCkNCi0jZGVm
aW5lIHBtZF9jbGVhcih4cCkJZG8geyBwbWRfdmFsKCooeHApKSA9IDA7IH0g
d2hpbGUgKDApDQorI2RlZmluZSBwbWRfY2xlYXIoeHApCWRvIHsgc2V0X3Bt
ZCh4cCwgX19wbWQoMCkpOyB9IHdoaWxlICgwKQ0KKyNkZWZpbmUJcG1kX2Jh
ZCh4KQkoKHBtZF92YWwoeCkgJiAoflBBR0VfTUFTSyAmIH5fUEFHRV9VU0VS
KSkgIT0gX0tFUk5QR19UQUJMRSkNCiANCiAvKg0KICAqIFBlcm1hbmVudCBh
ZGRyZXNzIG9mIGEgcGFnZS4gT2J2aW91c2x5IG11c3QgbmV2ZXIgYmUNCkBA
IC0xOTMsMTYgKzE4NiwxNiBAQA0KIGV4dGVybiBpbmxpbmUgaW50IHB0ZV95
b3VuZyhwdGVfdCBwdGUpCQl7IHJldHVybiBwdGVfdmFsKHB0ZSkgJiBfUEFH
RV9BQ0NFU1NFRDsgfQ0KIGV4dGVybiBpbmxpbmUgaW50IHB0ZV93cml0ZShw
dGVfdCBwdGUpCQl7IHJldHVybiBwdGVfdmFsKHB0ZSkgJiBfUEFHRV9SVzsg
fQ0KIA0KLWV4dGVybiBpbmxpbmUgcHRlX3QgcHRlX3JkcHJvdGVjdChwdGVf
dCBwdGUpCXsgcHRlX3ZhbChwdGUpICY9IH5fUEFHRV9VU0VSOyByZXR1cm4g
cHRlOyB9DQotZXh0ZXJuIGlubGluZSBwdGVfdCBwdGVfZXhwcm90ZWN0KHB0
ZV90IHB0ZSkJeyBwdGVfdmFsKHB0ZSkgJj0gfl9QQUdFX1VTRVI7IHJldHVy
biBwdGU7IH0NCi1leHRlcm4gaW5saW5lIHB0ZV90IHB0ZV9ta2NsZWFuKHB0
ZV90IHB0ZSkJeyBwdGVfdmFsKHB0ZSkgJj0gfl9QQUdFX0RJUlRZOyByZXR1
cm4gcHRlOyB9DQotZXh0ZXJuIGlubGluZSBwdGVfdCBwdGVfbWtvbGQocHRl
X3QgcHRlKQl7IHB0ZV92YWwocHRlKSAmPSB+X1BBR0VfQUNDRVNTRUQ7IHJl
dHVybiBwdGU7IH0NCi1leHRlcm4gaW5saW5lIHB0ZV90IHB0ZV93cnByb3Rl
Y3QocHRlX3QgcHRlKQl7IHB0ZV92YWwocHRlKSAmPSB+X1BBR0VfUlc7IHJl
dHVybiBwdGU7IH0NCi1leHRlcm4gaW5saW5lIHB0ZV90IHB0ZV9ta3JlYWQo
cHRlX3QgcHRlKQl7IHB0ZV92YWwocHRlKSB8PSBfUEFHRV9VU0VSOyByZXR1
cm4gcHRlOyB9DQotZXh0ZXJuIGlubGluZSBwdGVfdCBwdGVfbWtleGVjKHB0
ZV90IHB0ZSkJeyBwdGVfdmFsKHB0ZSkgfD0gX1BBR0VfVVNFUjsgcmV0dXJu
IHB0ZTsgfQ0KLWV4dGVybiBpbmxpbmUgcHRlX3QgcHRlX21rZGlydHkocHRl
X3QgcHRlKQl7IHB0ZV92YWwocHRlKSB8PSBfUEFHRV9ESVJUWTsgcmV0dXJu
IHB0ZTsgfQ0KLWV4dGVybiBpbmxpbmUgcHRlX3QgcHRlX21reW91bmcocHRl
X3QgcHRlKQl7IHB0ZV92YWwocHRlKSB8PSBfUEFHRV9BQ0NFU1NFRDsgcmV0
dXJuIHB0ZTsgfQ0KLWV4dGVybiBpbmxpbmUgcHRlX3QgcHRlX21rd3JpdGUo
cHRlX3QgcHRlKQl7IHB0ZV92YWwocHRlKSB8PSBfUEFHRV9SVzsgcmV0dXJu
IHB0ZTsgfQ0KK2V4dGVybiBpbmxpbmUgcHRlX3QgcHRlX3JkcHJvdGVjdChw
dGVfdCBwdGUpCXsgc2V0X3B0ZSgmcHRlLCBfX3B0ZShwdGVfdmFsKHB0ZSkg
JiB+X1BBR0VfVVNFUikpOyByZXR1cm4gcHRlOyB9DQorZXh0ZXJuIGlubGlu
ZSBwdGVfdCBwdGVfZXhwcm90ZWN0KHB0ZV90IHB0ZSkJeyBzZXRfcHRlKCZw
dGUsIF9fcHRlKHB0ZV92YWwocHRlKSAmIH5fUEFHRV9VU0VSKSk7IHJldHVy
biBwdGU7IH0NCitleHRlcm4gaW5saW5lIHB0ZV90IHB0ZV9ta2NsZWFuKHB0
ZV90IHB0ZSkJeyBzZXRfcHRlKCZwdGUsIF9fcHRlKHB0ZV92YWwocHRlKSAm
IH5fUEFHRV9ESVJUWSkpOyByZXR1cm4gcHRlOyB9DQorZXh0ZXJuIGlubGlu
ZSBwdGVfdCBwdGVfbWtvbGQocHRlX3QgcHRlKQl7IHNldF9wdGUoJnB0ZSwg
X19wdGUocHRlX3ZhbChwdGUpICYgfl9QQUdFX0FDQ0VTU0VEKSk7IHJldHVy
biBwdGU7IH0NCitleHRlcm4gaW5saW5lIHB0ZV90IHB0ZV93cnByb3RlY3Qo
cHRlX3QgcHRlKQl7IHNldF9wdGUoJnB0ZSwgX19wdGUocHRlX3ZhbChwdGUp
ICYgfl9QQUdFX1JXKSk7IHJldHVybiBwdGU7IH0NCitleHRlcm4gaW5saW5l
IHB0ZV90IHB0ZV9ta3JlYWQocHRlX3QgcHRlKQl7IHNldF9wdGUoJnB0ZSwg
X19wdGUocHRlX3ZhbChwdGUpIHwgX1BBR0VfVVNFUikpOyByZXR1cm4gcHRl
OyB9DQorZXh0ZXJuIGlubGluZSBwdGVfdCBwdGVfbWtleGVjKHB0ZV90IHB0
ZSkJeyBzZXRfcHRlKCZwdGUsIF9fcHRlKHB0ZV92YWwocHRlKSB8IF9QQUdF
X1VTRVIpKTsgcmV0dXJuIHB0ZTsgfQ0KK2V4dGVybiBpbmxpbmUgcHRlX3Qg
cHRlX21rZGlydHkocHRlX3QgcHRlKQl7IHNldF9wdGUoJnB0ZSwgX19wdGUo
cHRlX3ZhbChwdGUpIHwgX1BBR0VfRElSVFkpKTsgcmV0dXJuIHB0ZTsgfQ0K
K2V4dGVybiBpbmxpbmUgcHRlX3QgcHRlX21reW91bmcocHRlX3QgcHRlKQl7
IHNldF9wdGUoJnB0ZSwgX19wdGUocHRlX3ZhbChwdGUpIHwgX1BBR0VfQUND
RVNTRUQpKTsgcmV0dXJuIHB0ZTsgfQ0KK2V4dGVybiBpbmxpbmUgcHRlX3Qg
cHRlX21rd3JpdGUocHRlX3QgcHRlKQl7IHNldF9wdGUoJnB0ZSwgX19wdGUo
cHRlX3ZhbChwdGUpIHwgX1BBR0VfUlcpKTsgcmV0dXJuIHB0ZTsgfQ0KIA0K
IC8qDQogICogQ29udmVyc2lvbiBmdW5jdGlvbnM6IGNvbnZlcnQgYSBwYWdl
IGFuZCBwcm90ZWN0aW9uIHRvIGEgcGFnZSBlbnRyeSwNCkBAIC0yMTMsMTcg
KzIwNiwxNyBAQA0KICh7CQkJCQkJCQkJXA0KIAlwdGVfdCBfX3B0ZTsJCQkJ
CQkJXA0KIAkJCQkJCQkJCVwNCi0JcHRlX3ZhbChfX3B0ZSkgPSAoKHBhZ2Up
LW1lbV9tYXApKih1bnNpZ25lZCBsb25nIGxvbmcpUEFHRV9TSVpFICsgXA0K
LQkJCQlwZ3Byb3RfdmFsKHBncHJvdCk7CQkJXA0KKwlzZXRfcHRlKCZfX3B0
ZSwgX19wdGUoKChwYWdlKS1tZW1fbWFwKSAqIAkJCVwNCisJCSh1bnNpZ25l
ZCBsb25nIGxvbmcpUEFHRV9TSVpFICsgcGdwcm90X3ZhbChwZ3Byb3QpKSk7
CVwNCiAJX19wdGU7CQkJCQkJCQlcDQogfSkNCiANCiAvKiBUaGlzIHRha2Vz
IGEgcGh5c2ljYWwgcGFnZSBhZGRyZXNzIHRoYXQgaXMgdXNlZCBieSB0aGUg
cmVtYXBwaW5nIGZ1bmN0aW9ucyAqLw0KICNkZWZpbmUgbWtfcHRlX3BoeXMo
cGh5c3BhZ2UsIHBncHJvdCkgXA0KLSh7IHB0ZV90IF9fcHRlOyBwdGVfdmFs
KF9fcHRlKSA9IHBoeXNwYWdlICsgcGdwcm90X3ZhbChwZ3Byb3QpOyBfX3B0
ZTsgfSkNCisoeyBwdGVfdCBfX3B0ZTsgc2V0X3B0ZSgmX19wdGUsIF9fcHRl
KHBoeXNwYWdlICsgcGdwcm90X3ZhbChwZ3Byb3QpKSk7IF9fcHRlOyB9KQ0K
IA0KIGV4dGVybiBpbmxpbmUgcHRlX3QgcHRlX21vZGlmeShwdGVfdCBwdGUs
IHBncHJvdF90IG5ld3Byb3QpDQoteyBwdGVfdmFsKHB0ZSkgPSAocHRlX3Zh
bChwdGUpICYgX1BBR0VfQ0hHX01BU0spIHwgcGdwcm90X3ZhbChuZXdwcm90
KTsgcmV0dXJuIHB0ZTsgfQ0KK3sgc2V0X3B0ZSgmcHRlLCBfX3B0ZSgocHRl
X3ZhbChwdGUpICYgX1BBR0VfQ0hHX01BU0spIHwgcGdwcm90X3ZhbChuZXdw
cm90KSkpOyByZXR1cm4gcHRlOyB9DQogDQogI2RlZmluZSBwYWdlX3B0ZShw
YWdlKSBwYWdlX3B0ZV9wcm90KHBhZ2UsIF9fcGdwcm90KDApKQ0KIA0KLS0t
IGxpbnV4L2luY2x1ZGUvYXNtLWkzODYvcGd0YWJsZS0ybGV2ZWwuaC5vcmln
CUZyaSBEZWMgIDMgMDE6MjE6MzQgMTk5OQ0KKysrIGxpbnV4L2luY2x1ZGUv
YXNtLWkzODYvcGd0YWJsZS0ybGV2ZWwuaAlGcmkgRGVjICAzIDAyOjU3OjA1
IDE5OTkNCkBAIC0zNCw2ICszNCwxOSBAQA0KIGV4dGVybiBpbmxpbmUgaW50
IHBnZF9wcmVzZW50KHBnZF90IHBnZCkJeyByZXR1cm4gMTsgfQ0KICNkZWZp
bmUgcGdkX2NsZWFyKHhwKQkJCQlkbyB7IH0gd2hpbGUgKDApDQogDQorLyoN
CisgKiBDZXJ0YWluIGFyY2hpdGVjdHVyZXMgbmVlZCB0byBkbyBzcGVjaWFs
IHRoaW5ncyB3aGVuIFBURXMNCisgKiB3aXRoaW4gYSBwYWdlIHRhYmxlIGFy
ZSBkaXJlY3RseSBtb2RpZmllZC4gIFRodXMsIHRoZSBmb2xsb3dpbmcNCisg
KiBob29rIGlzIG1hZGUgYXZhaWxhYmxlLg0KKyAqLw0KKyNkZWZpbmUgc2V0
X3B0ZShwdGVwdHIsIHB0ZXZhbCkgKCoocHRlcHRyKSA9IHB0ZXZhbCkNCisv
Kg0KKyAqIChwbWRzIGFyZSBmb2xkZWQgaW50byBwZ2RzIHNvIHRoaXMgZG9l
c250IGdldCBhY3R1YWxseSBjYWxsZWQsDQorICogYnV0IHRoZSBkZWZpbmUg
aXMgbmVlZGVkIGZvciBhIGdlbmVyaWMgaW5saW5lIGZ1bmN0aW9uLikNCisg
Ki8NCisjZGVmaW5lIHNldF9wbWQocG1kcHRyLCBwbWR2YWwpICgqKHBtZHB0
cikgPSBwbWR2YWwpDQorI2RlZmluZSBzZXRfcGdkKHBnZHB0ciwgcGdkdmFs
KSAoKihwZ2RwdHIpID0gcGdkdmFsKQ0KKw0KICNkZWZpbmUgcGdkX3BhZ2Uo
cGdkKSBcDQogKCh1bnNpZ25lZCBsb25nKSBfX3ZhKHBnZF92YWwocGdkKSAm
IFBBR0VfTUFTSykpDQogDQotLS0gbGludXgvaW5jbHVkZS9hc20taTM4Ni9w
Z3RhYmxlLTNsZXZlbC5oLm9yaWcJRnJpIERlYyAgMyAwMToyMTo0MSAxOTk5
DQorKysgbGludXgvaW5jbHVkZS9hc20taTM4Ni9wZ3RhYmxlLTNsZXZlbC5o
CUZyaSBEZWMgIDMgMDM6NTY6MDAgMTk5OQ0KQEAgLTM1LDExICszNSwyMiBA
QA0KIA0KIC8qDQogICogU3VidGxlLCBpbiBQQUUgbW9kZSB3ZSBjYW5ub3Qg
aGF2ZSB6ZXJvZXMgaW4gdGhlIHRvcCBsZXZlbA0KLSAqIHBhZ2UgZGlyZWN0
b3J5LCB0aGUgQ1BVIGVuZm9yY2VzIHRoaXMuDQorICogcGFnZSBkaXJlY3Rv
cnksIHRoZSBDUFUgZW5mb3JjZXMgdGhpcy4gKGllLiB0aGUgUEdEIGVudHJ5
DQorICogYWx3YXlzIGhhcyB0byBoYXZlIHRoZSBwcmVzZW50IGJpdCBzZXQu
KSBUaGUgQ1BVIGNhY2hlcw0KKyAqIHRoZSA0IHBnZCBlbnRyaWVzIGludGVy
bmFsbHksIHNvIHRoZXJlIGlzIG5vIGV4dHJhIG1lbW9yeQ0KKyAqIGxvYWQg
b24gVExCIG1pc3MsIGRlc3BpdGUgb25lIG1vcmUgbGV2ZWwgb2YgaW5kaXJl
Y3Rpb24uDQogICovDQogI2RlZmluZSBwZ2Rfbm9uZSh4KQkocGdkX3ZhbCh4
KSA9PSAxVUxMKQ0KIGV4dGVybiBpbmxpbmUgaW50IHBnZF9iYWQocGdkX3Qg
cGdkKQkJeyByZXR1cm4gMDsgfQ0KIGV4dGVybiBpbmxpbmUgaW50IHBnZF9w
cmVzZW50KHBnZF90IHBnZCkJeyByZXR1cm4gIXBnZF9ub25lKHBnZCk7IH0N
CisNCisjZGVmaW5lIHNldF9wdGUocHRlcHRyLHB0ZXZhbCkgXA0KKwkJc2V0
XzY0Yml0KCh1bnNpZ25lZCBsb25nIGxvbmcgKikocHRlcHRyKSxwdGVfdmFs
KHB0ZXZhbCkpDQorI2RlZmluZSBzZXRfcG1kKHBtZHB0cixwbWR2YWwpIFwN
CisJCXNldF82NGJpdCgodW5zaWduZWQgbG9uZyBsb25nICopKHBtZHB0ciks
cG1kX3ZhbChwbWR2YWwpKQ0KKyNkZWZpbmUgc2V0X3BnZChwZ2RwdHIscGdk
dmFsKSBcDQorCQlzZXRfNjRiaXQoKHVuc2lnbmVkIGxvbmcgbG9uZyAqKShw
Z2RwdHIpLHBnZF92YWwocGdkdmFsKSkNCisNCiAvKg0KICAqIFBlbnRpdW0t
SUkgZXJyYXRhIEExMzogaW4gUEFFIG1vZGUgd2UgZXhwbGljaXRseSBoYXZl
IHRvIGZsdXNoDQogICogdGhlIFRMQiB2aWEgY3IzIGlmIHRoZSB0b3AtbGV2
ZWwgcGdkIGlzIGNoYW5nZWQuLi4gVGhpcyB3YXMgb25lIHRvdWdoDQpAQCAt
NDgsNyArNTksNyBAQA0KICAqLw0KIGV4dGVybiBpbmxpbmUgdm9pZCBfX3Bn
ZF9jbGVhciAocGdkX3QgKiBwZ2QpDQogew0KLQlwZ2RfdmFsKCpwZ2QpID0g
MTsgLy8gbm8gemVybyBhbGxvd2VkIQ0KKwlzZXRfcGdkKHBnZCwgX19wZ2Qo
MVVMTCkpOw0KIH0NCiANCiBleHRlcm4gaW5saW5lIHZvaWQgcGdkX2NsZWFy
IChwZ2RfdCAqIHBnZCkNCi0tLSBsaW51eC9pbmNsdWRlL2FzbS1pMzg2L3Bh
Z2UuaC5vcmlnCUZyaSBEZWMgIDMgMDI6NDQ6MDkgMTk5OQ0KKysrIGxpbnV4
L2luY2x1ZGUvYXNtLWkzODYvcGFnZS5oCUZyaSBEZWMgIDMgMDM6NTg6MDEg
MTk5OQ0KQEAgLTUwLDYgKzUwLDkgQEANCiAjZGVmaW5lIHBnZF92YWwoeCkJ
KCh4KS5wZ2QpDQogI2RlZmluZSBwZ3Byb3RfdmFsKHgpCSgoeCkucGdwcm90
KQ0KIA0KKyNkZWZpbmUgX19wdGUoeCkgKChwdGVfdCkgeyAoeCkgfSApDQor
I2RlZmluZSBfX3BtZCh4KSAoKHBtZF90KSB7ICh4KSB9ICkNCisjZGVmaW5l
IF9fcGdkKHgpICgocGdkX3QpIHsgKHgpIH0gKQ0KICNkZWZpbmUgX19wZ3By
b3QoeCkJKChwZ3Byb3RfdCkgeyAoeCkgfSApDQogDQogI2VuZGlmIC8qICFf
X0FTU0VNQkxZX18gKi8NCi0tLSBsaW51eC9hcmNoL2kzODYvbW0vaW5pdC5j
Lm9yaWcJRnJpIERlYyAgMyAwMjoyNDoyMiAxOTk5DQorKysgbGludXgvYXJj
aC9pMzg2L21tL2luaXQuYwlGcmkgRGVjICAzIDAyOjUzOjA2IDE5OTkNCkBA
IC03Niw3ICs3Niw3IEBADQogCXBtZF90IHY7DQogCWludCBpOw0KIA0KLQlw
bWRfdmFsKHYpID0gX1BBR0VfVEFCTEUgKyBfX3BhKGVtcHR5X2JhZF9wdGVf
dGFibGUpOw0KKwlzZXRfcG1kKCZ2LCBfX3BtZChfUEFHRV9UQUJMRSArIF9f
cGEoZW1wdHlfYmFkX3B0ZV90YWJsZSkpKTsNCiANCiAJZm9yIChpID0gMDsg
aSA8IFBBR0VfU0laRS9zaXplb2YocG1kX3QpOyBpKyspDQogCQllbXB0eV9i
YWRfcG1kX3RhYmxlW2ldID0gdjsNCkBAIC0xMDMsMTMgKzEwMywxMyBAQA0K
IHZvaWQgX19oYW5kbGVfYmFkX3BtZChwbWRfdCAqcG1kKQ0KIHsNCiAJcG1k
X0VSUk9SKCpwbWQpOw0KLQlwbWRfdmFsKCpwbWQpID0gX1BBR0VfVEFCTEUg
KyBfX3BhKGdldF9iYWRfcHRlX3RhYmxlKCkpOw0KKwlzZXRfcG1kKHBtZCwg
X19wbWQoX1BBR0VfVEFCTEUgKyBfX3BhKGdldF9iYWRfcHRlX3RhYmxlKCkp
KSk7DQogfQ0KIA0KIHZvaWQgX19oYW5kbGVfYmFkX3BtZF9rZXJuZWwocG1k
X3QgKnBtZCkNCiB7DQogCXBtZF9FUlJPUigqcG1kKTsNCi0JcG1kX3ZhbCgq
cG1kKSA9IF9LRVJOUEdfVEFCTEUgKyBfX3BhKGdldF9iYWRfcHRlX3RhYmxl
KCkpOw0KKwlzZXRfcG1kKHBtZCwgX19wbWQoX0tFUk5QR19UQUJMRSArIF9f
cGEoZ2V0X2JhZF9wdGVfdGFibGUoKSkpKTsNCiB9DQogDQogcHRlX3QgKmdl
dF9wdGVfa2VybmVsX3Nsb3cocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBv
ZmZzZXQpDQpAQCAtMTIwLDEwICsxMjAsMTAgQEANCiAJaWYgKHBtZF9ub25l
KCpwbWQpKSB7DQogCQlpZiAocHRlKSB7DQogCQkJY2xlYXJfcGFnZShwdGUp
Ow0KLQkJCXBtZF92YWwoKnBtZCkgPSBfS0VSTlBHX1RBQkxFICsgX19wYShw
dGUpOw0KKwkJCXNldF9wbWQocG1kLCBfX3BtZChfS0VSTlBHX1RBQkxFICsg
X19wYShwdGUpKSk7DQogCQkJcmV0dXJuIHB0ZSArIG9mZnNldDsNCiAJCX0N
Ci0JCXBtZF92YWwoKnBtZCkgPSBfS0VSTlBHX1RBQkxFICsgX19wYShnZXRf
YmFkX3B0ZV90YWJsZSgpKTsNCisJCXNldF9wbWQocG1kLCBfX3BtZChfS0VS
TlBHX1RBQkxFICsgX19wYShnZXRfYmFkX3B0ZV90YWJsZSgpKSkpOw0KIAkJ
cmV0dXJuIE5VTEw7DQogCX0NCiAJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25n
KXB0ZSk7DQpAQCAtMTQyLDEwICsxNDIsMTAgQEANCiAJaWYgKHBtZF9ub25l
KCpwbWQpKSB7DQogCQlpZiAocHRlKSB7DQogCQkJY2xlYXJfcGFnZSgodm9p
ZCAqKXB0ZSk7DQotCQkJcG1kX3ZhbCgqcG1kKSA9IF9QQUdFX1RBQkxFICsg
X19wYShwdGUpOw0KKwkJCXNldF9wbWQocG1kLCBfX3BtZChfUEFHRV9UQUJM
RSArIF9fcGEocHRlKSkpOw0KIAkJCXJldHVybiAocHRlX3QgKilwdGUgKyBv
ZmZzZXQ7DQogCQl9DQotCQlwbWRfdmFsKCpwbWQpID0gX1BBR0VfVEFCTEUg
KyBfX3BhKGdldF9iYWRfcHRlX3RhYmxlKCkpOw0KKwkJc2V0X3BtZChwbWQs
IF9fcG1kKF9QQUdFX1RBQkxFICsgX19wYShnZXRfYmFkX3B0ZV90YWJsZSgp
KSkpOw0KIAkJcmV0dXJuIE5VTEw7DQogCX0NCiAJZnJlZV9wYWdlKHB0ZSk7
DQpAQCAtMjY4LDcgKzI2OCw3IEBADQogCQlwcmludGsoIkludmFsaWQgc2V0
X2ZpeG1hcFxuIik7DQogCQlyZXR1cm47DQogCX0NCi0Jc2V0X3B0ZV9waHlz
IChhZGRyZXNzLHBoeXMpOw0KKwlzZXRfcHRlX3BoeXMoYWRkcmVzcyxwaHlz
KTsNCiB9DQogDQogc3RhdGljIHZvaWQgX19pbml0IGZpeHJhbmdlX2luaXQg
KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBwZ2Rf
dCAqcGdkX2Jhc2UpDQpAQCAtMjg2LDcgKzI4Niw3IEBADQogI2lmIENPTkZJ
R19YODZfUEFFDQogCQlpZiAocGdkX25vbmUoKnBnZCkpIHsNCiAJCQlwbWQg
PSAocG1kX3QgKikgYWxsb2NfYm9vdG1lbV9sb3dfcGFnZXMoUEFHRV9TSVpF
KTsNCi0JCQlwZ2RfdmFsKCpwZ2QpID0gX19wYShwbWQpICsgMHgxOw0KKwkJ
CXNldF9wZ2QocGdkLCBfX3BnZChfX3BhKHBtZCkgKyAweDEpKTsNCiAJCQlp
ZiAocG1kICE9IHBtZF9vZmZzZXQocGdkLCBzdGFydCkpDQogCQkJCUJVRygp
Ow0KIAkJfQ0KQEAgLTI5Nyw3ICsyOTcsNyBAQA0KIAkJZm9yICg7IChqIDwg
UFRSU19QRVJfUE1EKSAmJiBzdGFydDsgcG1kKyssIGorKykgew0KIAkJCWlm
IChwbWRfbm9uZSgqcG1kKSkgew0KIAkJCQlwdGUgPSAocHRlX3QgKikgYWxs
b2NfYm9vdG1lbV9sb3dfcGFnZXMoUEFHRV9TSVpFKTsNCi0JCQkJcG1kX3Zh
bCgqcG1kKSA9IF9LRVJOUEdfVEFCTEUgKyBfX3BhKHB0ZSk7DQorCQkJCXNl
dF9wbWQocG1kLCBfX3BtZChfS0VSTlBHX1RBQkxFICsgX19wYShwdGUpKSk7
DQogCQkJCWlmIChwdGUgIT0gcHRlX29mZnNldChwbWQsIDApKQ0KIAkJCQkJ
QlVHKCk7DQogCQkJfQ0KQEAgLTMyNiw3ICszMjYsNyBAQA0KIAkJdmFkZHIg
PSBpKlBHRElSX1NJWkU7DQogI2lmIENPTkZJR19YODZfUEFFDQogCQlwbWQg
PSAocG1kX3QgKikgYWxsb2NfYm9vdG1lbV9sb3dfcGFnZXMoUEFHRV9TSVpF
KTsNCi0JCXBnZF92YWwoKnBnZCkgPSBfX3BhKHBtZCkgKyAweDE7DQorCQlz
ZXRfcGdkKHBnZCwgX19wZ2QoX19wYShwbWQpICsgMHgxKSk7DQogI2Vsc2UN
CiAJCXBtZCA9IChwbWRfdCAqKXBnZDsNCiAjZW5kaWYNCkBAIC0zNDUsMTIg
KzM0NSwxMiBAQA0KIAkJCQkJc2V0X2luX2NyNChYODZfQ1I0X1BHRSk7DQog
CQkJCQlfX3BlICs9IF9QQUdFX0dMT0JBTDsNCiAJCQkJfQ0KLQkJCQlwbWRf
dmFsKCpwbWQpID0gX19wZTsNCisJCQkJc2V0X3BtZChwbWQsIF9fcG1kKF9f
cGUpKTsNCiAJCQkJY29udGludWU7DQogCQkJfQ0KIA0KIAkJCXB0ZSA9IChw
dGVfdCAqKSBhbGxvY19ib290bWVtX2xvd19wYWdlcyhQQUdFX1NJWkUpOw0K
LQkJCXBtZF92YWwoKnBtZCkgPSBfS0VSTlBHX1RBQkxFICsgX19wYShwdGUp
Ow0KKwkJCXNldF9wbWQocG1kLCBfX3BtZChfS0VSTlBHX1RBQkxFICsgX19w
YShwdGUpKSk7DQogDQogCQkJaWYgKHB0ZSAhPSBwdGVfb2Zmc2V0KHBtZCwg
MCkpDQogCQkJCUJVRygpOw0KQEAgLTQxMiw3ICs0MTIsNyBAQA0KICNpZiBD
T05GSUdfWDg2X1BBRQ0KIAkJcGdkX2NsZWFyKHN3YXBwZXJfcGdfZGlyK2kp
Ow0KICNlbHNlDQotCQlwZ2RfdmFsKHN3YXBwZXJfcGdfZGlyW2ldKSA9IDA7
DQorCQlzZXRfcGdkKHN3YXBwZXJfcGdfZGlyK2ksIF9fcGdkKDApKTsNCiAj
ZW5kaWYNCiAJZmx1c2hfdGxiX2FsbCgpOw0KIH0NCg==
--79888902-478184044-944226271=:4160--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/