[PATCH]Super Page patch for 2.4.18

Naohiko Shimizu (nshimizu@keyaki.cc.u-tokai.ac.jp)
Mon, 8 Jul 2002 19:02:20 +0900


This is a multi-part message in MIME format.

--Multipart_Mon__8_Jul_2002_19:02:20_+0900_08297bd0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Hi,

Attached file is the Super Page patch for 2.4.18.
It activates the super page feature of Alpha processor.
(It was known as the page granularity hint support patch, but
the super page is lucid for the people. I added TLB flush to the
two years old patch to avoid the Alpha architectual problem.)

When activated, the kernel will run upto 5 times faster
on a large matrix transpose benchmark.(it also attached for convinient)
I am testing with randomly malloc/free test program for a whole day,
and it seems quite stable. But I don't have any SMP machine,
then I have not tested on SMP.

I also have the IA32 port, and I will merge it when it seems to be stable enough.

I am not in the kernel list, then please cc to me for any comment to this mail.

Regards,

-- 

Naohiko Shimizu Department of Communications Engineering, School of Information Technology and Electronics, Tokai University 1117 Kitakaname Hiratsuka 259-1292 Japan TEL.+81-463-58-1211(ext. 4084) FAX.+81-463-58-8320 http://shimizu-lab.dt.u-tokai.ac.jp/

--Multipart_Mon__8_Jul_2002_19:02:20_+0900_08297bd0 Content-Type: application/octet-stream; name="super_page-2.4.18_020707-alpha.patch" Content-Disposition: attachment; filename="super_page-2.4.18_020707-alpha.patch" Content-Transfer-Encoding: base64

ZGlmZiAtdXJOIGxpbnV4LTIuNC4xOC9Eb2N1bWVudGF0aW9uL3N1cGVyX3BhZ2UudHh0IGxpbnV4 L0RvY3VtZW50YXRpb24vc3VwZXJfcGFnZS50eHQKLS0tIGxpbnV4LTIuNC4xOC9Eb2N1bWVudGF0 aW9uL3N1cGVyX3BhZ2UudHh0CVRodSBKYW4gIDEgMDk6MDA6MDAgMTk3MAorKysgbGludXgvRG9j dW1lbnRhdGlvbi9zdXBlcl9wYWdlLnR4dAlGcmkgSnVuIDI4IDE0OjQwOjI1IDIwMDIKQEAgLTAs MCArMSwyNCBAQAorVGhlIEFscGhhIGFyY2hpdGVjdHVyZSBkZWZpbmVzIEdyYW51bGFyaXR5IEhp bnQoR0gpIGJpdHMgaW4gdGhlCitQYWdlIFRhYmxlIEVudHJ5KFBURSkuIElmIHRoZXNlIGJpdHMg YXJlIHNldCB0byBub24temVybyB2YWx1ZSwKK2l0IHN1cHBseSBhIGhpbnQgdG8gdHJhbnNsYXRp b24gYnVmZmVyIGltcGxlbWVudGF0aW9ucyB0aGF0CithIGJsb2NrIG9mIHBhZ2VzIGNhbiBiZSB0 cmVhdGVkIGFzIGEgc2luZ2xlIGxhcmdlciBwYWdlLgorSXQgbWVhbnMgdGhhdCBldmVuIGlmIHdl IGRvbid0IGhhdmUgdmFyaWFibGUgbGVuZ3RoIHBhZ2UgbWVjaGFuaXNtLAord2Ugd2lsbCBoYXZl IHRoZSBvcHBvcnR1bml0eSB0byByZWR1Y2UgdHJhbnNsYXRpb24gbWlzc2VzLgorRm9yIHRoZSBs YXJnZSB3b3JraW5nIHNldCBIUEMgYXBwbGljYXRpb25zIHRoZSBwZXJmb3JtYW5jZQorZGVncmFk YXRpb24gY2F1c2VkIGJ5IHRoZSB0cmFuc2xhdGlvbiBtaXNzZXMgc2hvdWxkIGJlIGF2b2lkZWQu CitUaGVuIGlmIHdlIGNhbiB1c2UgdGhpcyBmZWF0dXJlLCBtYW55IEhQQyBhcHBsaWNhdGlvbnMg d2lsbCBiZQorYXBwcmVjaWF0ZWQuCisKK0luIHRoaXMgcmVsZWFzZSB0aGVyZSBpcyBhIGNvbmZp Z3VyYXRpb24gb3B0aW9uIHRvIHN1cHBvcnQgdGhpcworZmVhdHVyZSBmb3IgQWxwaGEgYXJjaGl0 ZWN0dXJlLiBZb3UgY2FuIHR1cm4gb24gdGhpcyBmZWF0dXJlIGJ5IGFzc2VydAordGhlIENPTkZJ R19TVVBFUl9QQUdFIHZhcmlhYmxlLiBXaXRoIHRoaXMgcmVsZWFzZSwgeW91IGNhbiBzZXQgR0gg Yml0cyBpbgoreW91ciBwYWdlIHRhYmxlIHdoZW4geW91IGNhbGwgYnJrIHN5c3RlbSBjYWxsIG9y IG1tYXAgc3lzdGVtIGNhbGwgd2l0aAorTUFQX1BSSVZBVEUgZmxhZyBvbi4gVGhlbiBpZiB5b3Ug d2FudCB0byBydW4geW91ciBwcm9ncmFtIHdpdGgKK2Vub3VnaCBzcGVlZCwgeW91IHNob3VsZCBh bGxvY2F0ZSBtZW1vcnkgd2l0aCB0aGVzZSBjYWxsIChvciBtb3JlCitnZW5lcmFsIHlvdSBjYW4g dXNlIG1hbGxvYyBsaWJyYXJ5IGNhbGwpLiAKK1RoZSBHSCBiaXRzIG9ubHkgc2V0IG9uIHRoZSBo ZWFwIGFsbG9jYXRpb24sIGFmdGVyIHRoYXQgaWYgYW55IHByb2Nlc3MKK2NoYW5nZXMgdGhlIHRh YmxlIGl0IHdpbGwgZHJvcCB0aGUgYml0cyBmb3Igc2FmZXR5LiBZb3UgbWF5IHdhbnQgdG8KK3N0 b3Agc3dhcHBpbmcgZm9yIGNvbnRpbnVvdXMgaGlnaCBwZXJmb3JtYW5jZSBvcGVyYXRpb24uCisK KworTmFvaGlrbyBTaGltaXp1PG5zaGltaXp1QGtleWFraS5jYy51LXRva2FpLmFjLmpwPgpkaWZm IC11ck4gbGludXgtMi40LjE4L2FyY2gvYWxwaGEvY29uZmlnLmluIGxpbnV4L2FyY2gvYWxwaGEv Y29uZmlnLmluCi0tLSBsaW51eC0yLjQuMTgvYXJjaC9hbHBoYS9jb25maWcuaW4JV2VkIE5vdiAy MSAwODo0OTozMSAyMDAxCisrKyBsaW51eC9hcmNoL2FscGhhL2NvbmZpZy5pbglGcmkgSnVuIDI4 IDE2OjI2OjExIDIwMDIKQEAgLTIzMSw2ICsyMzEsOCBAQAogIyBMQVJHRV9WTUFMTE9DIGlzIHJh Y3ksIGlmIHlvdSAqcmVhbGx5KiBuZWVkIGl0IHRoZW4gZml4IGl0IGZpcnN0CiBkZWZpbmVfYm9v bCBDT05GSUdfQUxQSEFfTEFSR0VfVk1BTExPQyBuCiAKK2Jvb2wgJ1N1cGVyUGFnZSBTdXBwb3J0 JyBDT05GSUdfU1VQRVJfUEFHRQorCiBzb3VyY2UgZHJpdmVycy9wY2kvQ29uZmlnLmluCiAKIGJv b2wgJ1N1cHBvcnQgZm9yIGhvdC1wbHVnZ2FibGUgZGV2aWNlcycgQ09ORklHX0hPVFBMVUcKZGlm ZiAtdXJOIGxpbnV4LTIuNC4xOC9hcmNoL2FscGhhL21tL2luaXQuYyBsaW51eC9hcmNoL2FscGhh L21tL2luaXQuYwotLS0gbGludXgtMi40LjE4L2FyY2gvYWxwaGEvbW0vaW5pdC5jCUZyaSBTZXAg MjEgMTI6MDI6MDMgMjAwMQorKysgbGludXgvYXJjaC9hbHBoYS9tbS9pbml0LmMJRnJpIEp1biAy OCAxNDo0MDoyNSAyMDAyCkBAIC01LDYgKzUsNyBAQAogICovCiAKIC8qIDIuMy54IHpvbmUgYWxs b2NhdG9yLCAxOTk5IEFuZHJlYSBBcmNhbmdlbGkgPGFuZHJlYUBzdXNlLmRlPiAqLworLyogU1VQ RVJfUEFHRSBzdXBwb3J0LCAyMDAwIE5hb2hpa28gU2hpbWl6dSA8bnNoaW1penVAa2V5YWtpLmNj LnUtdG9rYWkuYWMuanA+ICovCiAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KICNpbmNsdWRl IDxsaW51eC9zaWduYWwuaD4KQEAgLTQ0LDYgKzQ1LDExIEBACiAKICNpZm5kZWYgQ09ORklHX1NN UAogc3RydWN0IHBndGFibGVfY2FjaGVfc3RydWN0IHF1aWNrbGlzdHM7CisjZW5kaWYKKworI2lm ZGVmIENPTkZJR19TVVBFUl9QQUdFCitpbnQgc3VwZXJfcGFnZV9vcmRlcltdID0gezAsMyw2LDl9 OworcGdwcm90X3Qgc3VwZXJfcGFnZV9wcm90W10gPSB7MHgwMDAwLDB4MDAyMCwweDAwNDAsMHgw MDYwfTsKICNlbmRpZgogCiBwZ2RfdCAqCmRpZmYgLXVyTiBsaW51eC0yLjQuMTgvaW5jbHVkZS9h c20tYWxwaGEvcGd0YWJsZS5oIGxpbnV4L2luY2x1ZGUvYXNtLWFscGhhL3BndGFibGUuaAotLS0g bGludXgtMi40LjE4L2luY2x1ZGUvYXNtLWFscGhhL3BndGFibGUuaAlGcmkgT2N0IDI2IDA2OjAw OjMyIDIwMDEKKysrIGxpbnV4L2luY2x1ZGUvYXNtLWFscGhhL3BndGFibGUuaAlTYXQgSnVsICA2 IDE2OjQ3OjE2IDIwMDIKQEAgLTE5LDcgKzE5LDEwIEBACiAgKiB3aXRoaW4gYSBwYWdlIHRhYmxl IGFyZSBkaXJlY3RseSBtb2RpZmllZC4gIFRodXMsIHRoZSBmb2xsb3dpbmcKICAqIGhvb2sgaXMg bWFkZSBhdmFpbGFibGUuCiAgKi8KLSNkZWZpbmUgc2V0X3B0ZShwdGVwdHIsIHB0ZXZhbCkgKCgq KHB0ZXB0cikpID0gKHB0ZXZhbCkpCisvKiAKKyAqICBTVVBFUl9QQUdFIHN1cHBvcnQgYWRkZWQg YnkgTmFvaGlrbyBTaGltaXp1CisJPG5zaGltaXp1QGtleWFraS5jYy51LXRva2FpLmFjLmpwPgor ICovCiAKIC8qIFBNRF9TSElGVCBkZXRlcm1pbmVzIHRoZSBzaXplIG9mIHRoZSBhcmVhIGEgc2Vj b25kLWxldmVsIHBhZ2UgdGFibGUgY2FuIG1hcCAqLwogI2RlZmluZSBQTURfU0hJRlQJKFBBR0Vf U0hJRlQgKyAoUEFHRV9TSElGVC0zKSkKQEAgLTI1NCw5ICsyNTcsNyBAQAogZXh0ZXJuIGlubGlu ZSB1bnNpZ25lZCBsb25nIHBnZF9wYWdlKHBnZF90IHBnZCkKIHsgcmV0dXJuIFBBR0VfT0ZGU0VU ICsgKChwZ2RfdmFsKHBnZCkgJiBfUEZOX01BU0spID4+ICgzMi1QQUdFX1NISUZUKSk7IH0KIAot ZXh0ZXJuIGlubGluZSBpbnQgcHRlX25vbmUocHRlX3QgcHRlKQkJeyByZXR1cm4gIXB0ZV92YWwo cHRlKTsgfQogZXh0ZXJuIGlubGluZSBpbnQgcHRlX3ByZXNlbnQocHRlX3QgcHRlKQl7IHJldHVy biBwdGVfdmFsKHB0ZSkgJiBfUEFHRV9WQUxJRDsgfQotZXh0ZXJuIGlubGluZSB2b2lkIHB0ZV9j bGVhcihwdGVfdCAqcHRlcCkJeyBwdGVfdmFsKCpwdGVwKSA9IDA7IH0KIAogZXh0ZXJuIGlubGlu ZSBpbnQgcG1kX25vbmUocG1kX3QgcG1kKQkJeyByZXR1cm4gIXBtZF92YWwocG1kKTsgfQogZXh0 ZXJuIGlubGluZSBpbnQgcG1kX2JhZChwbWRfdCBwbWQpCQl7IHJldHVybiAocG1kX3ZhbChwbWQp ICYgfl9QRk5fTUFTSykgIT0gX1BBR0VfVEFCTEU7IH0KQEAgLTI2OSw2ICsyNzAsNTggQEAKIGV4 dGVybiBpbmxpbmUgdm9pZCBwZ2RfY2xlYXIocGdkX3QgKiBwZ2RwKQl7IHBnZF92YWwoKnBnZHAp ID0gMDsgfQogCiAjZGVmaW5lIHBhZ2VfYWRkcmVzcyhwYWdlKQkoKHBhZ2UpLT52aXJ0dWFsKQor CisjaWZuZGVmIENPTkZJR19TVVBFUl9QQUdFCisjZGVmaW5lIHNldF9wdGUocHRlcHRyLCBwdGV2 YWwpICgoKihwdGVwdHIpKSA9IChwdGV2YWwpKQorZXh0ZXJuIGlubGluZSBpbnQgcHRlX25vbmUo cHRlX3QgcHRlKQkJeyByZXR1cm4gIShwdGVfdmFsKHB0ZSkpOyB9CitleHRlcm4gaW5saW5lIHZv aWQgcHRlX2NsZWFyKHB0ZV90ICpwdGVwKQl7IHB0ZV92YWwoKnB0ZXApPTA7IH0KKyNlbHNlCisj ZGVmaW5lIFNVUEVSX1BBR0VfTUFTSyAweDAwNjAKKyNkZWZpbmUgU1VQRVJfUEFHRV9NQVNLX1NI SUZUIDUKKyNkZWZpbmUgU1VQRVJfUEFHRV9OUiA0CitzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hf dGxiKHZvaWQpOworZXh0ZXJuIGludCBzdXBlcl9wYWdlX29yZGVyW107CitleHRlcm4gcGdwcm90 X3Qgc3VwZXJfcGFnZV9wcm90W107CitleHRlcm4gaW5saW5lIGludCBwdGVfbm9uZShwdGVfdCBw dGUpCQl7IHJldHVybiAhKHB0ZV92YWwocHRlKSAmIH5TVVBFUl9QQUdFX01BU0spOyB9CisjZGVm aW5lIHB0ZV90b19zcF9pbmRleCh4KSAgKChwdGVfdmFsKHgpICYgU1VQRVJfUEFHRV9NQVNLKSA+ PiBTVVBFUl9QQUdFX01BU0tfU0hJRlQpCitleHRlcm4gaW5saW5lIHB0ZV90IG1rX3B0ZV9zcF9j bGVhbihwdGVfdCBwdGUpIHtwdGVfdmFsKHB0ZSkgJj0gflNVUEVSX1BBR0VfTUFTSzsgcmV0dXJu IHB0ZTt9IAorZXh0ZXJuIGlubGluZSB2b2lkIGRvd25fcHRlX3NwKHB0ZV90ICpwdGVwdHIsIGlu dCBpbmRleCkgeworCQlpbnQgaSxvcmRlcjsKKwkJcHRlX3QgKmFkZHI7CisJCW9yZGVyID0gc3Vw ZXJfcGFnZV9vcmRlcltpbmRleF07CisJCWFkZHIgPSAocHRlX3QgKikoKHVuc2lnbmVkIGxvbmcp IHB0ZXB0ciAmIH4oKDFVTDw8KG9yZGVyICsgU0laRU9GX1BUUl9MT0cyKSkgLSAxKSk7CisJCWZv ciAoIGk9MDsgaSA8IDE8PG9yZGVyOyBpKyspIHsKKwkJCXB0ZV92YWwoKihhZGRyK2kpKSA9IChw dGVfdmFsKCooYWRkcitpKSkgJiB+U1VQRVJfUEFHRV9NQVNLKSB8IHBncHJvdF92YWwoc3VwZXJf cGFnZV9wcm90W2luZGV4IC0xXSk7CisJCX0KKwl9CitleHRlcm4gaW5saW5lIHZvaWQgY2xlYXJf cHRlX3NwKHB0ZV90ICpwdGVwdHIsIGludCBpbmRleCkgeworCQlpbnQgaSxvcmRlcjsKKwkJcHRl X3QgKmFkZHI7CisJCW9yZGVyID0gc3VwZXJfcGFnZV9vcmRlcltpbmRleF07CisJCWFkZHIgPSAo cHRlX3QgKikoKHVuc2lnbmVkIGxvbmcpIHB0ZXB0ciAmIH4oKDFVTDw8KG9yZGVyICsgU0laRU9G X1BUUl9MT0cyKSkgLSAxKSk7CisJCWZvciAoIGk9MDsgaSA8IDE8PG9yZGVyOyBpKyspIHsKKwkJ CXB0ZV92YWwoKihhZGRyK2kpKSAmPSAgflNVUEVSX1BBR0VfTUFTSzsKKwkJfQorCX0KK2V4dGVy biBpbmxpbmUgdm9pZCBzZXRfcHRlX3JhdyhwdGVfdCAqcHRlcHRyLCBwdGVfdCBwdGV2YWwpIHsK KyAgICAgICAgaW50IHN1cGVyX3BhZ2U9MDsKKwlyZXRyeToKKwlpZiAoIHB0ZV9wcmVzZW50KCpw dGVwdHIpICYmICggcHRlX3ZhbCgqcHRlcHRyKSAmIFNVUEVSX1BBR0VfTUFTSyApKSB7CisJCWRv d25fcHRlX3NwKHB0ZXB0ciwgcHRlX3RvX3NwX2luZGV4KCpwdGVwdHIpKTsKKyAgICAgICAgICAg ICAgICBzdXBlcl9wYWdlKys7CisJCWdvdG8gcmV0cnk7CisJfQorICAgICAgICBpZihzdXBlcl9w YWdlKSBmbHVzaF90bGIoKTsKKwkqcHRlcHRyID0gcHRldmFsOworfQorZXh0ZXJuIGlubGluZSB2 b2lkIHNldF9wdGUocHRlX3QgKnB0ZXB0ciwgcHRlX3QgcHRldmFsKSB7CisJaWYgKCBwdGVfbm9u ZSgqcHRlcHRyKSAmJiAoIHB0ZV92YWwoKnB0ZXB0cikgJiBTVVBFUl9QQUdFX01BU0sgKSkgewor CQljbGVhcl9wdGVfc3AocHRlcHRyLCBwdGVfdG9fc3BfaW5kZXgoKnB0ZXB0cikpOworCX0KKwlz ZXRfcHRlX3JhdyhwdGVwdHIsIG1rX3B0ZV9zcF9jbGVhbihwdGV2YWwpKTsKK30KK2V4dGVybiBp bmxpbmUgdm9pZCBwdGVfY2xlYXIocHRlX3QgKnB0ZXApCXsgcHRlX3QgcHRlOyBwdGVfdmFsKHB0 ZSk9MDsgc2V0X3B0ZShwdGVwLCBwdGUpOyB9CisjZW5kaWYKIAogLyoKICAqIFRoZSBmb2xsb3dp bmcgb25seSB3b3JrIGlmIHB0ZV9wcmVzZW50KCkgaXMgdHJ1ZS4KZGlmZiAtdXJOIGxpbnV4LTIu NC4xOC9pbmNsdWRlL2xpbnV4L21tLmggbGludXgvaW5jbHVkZS9saW51eC9tbS5oCi0tLSBsaW51 eC0yLjQuMTgvaW5jbHVkZS9saW51eC9tbS5oCVNhdCBEZWMgMjIgMDI6NDI6MDMgMjAwMQorKysg bGludXgvaW5jbHVkZS9saW51eC9tbS5oCVNhdCBKdWwgIDYgMTY6NDc6MTYgMjAwMgpAQCAtMzM2 LDYgKzMzNiwxNSBAQAogI2RlZmluZSBQYWdlSGlnaE1lbShwYWdlKQkJMCAvKiBuZWVkZWQgdG8g b3B0aW1pemUgYXdheSBhdCBjb21waWxlIHRpbWUgKi8KICNlbmRpZgogCisjaWZuZGVmIENPTkZJ R19TVVBFUl9QQUdFCisjZGVmaW5lIFNVUEVSX1BBR0VfTlIgMQorI2RlZmluZSBTVVBFUl9QQUdF X01BU0sgKHBncHJvdF90KTAKKyNkZWZpbmUgcHRlX3RvX3NwX2luZGV4KHgpICgwKQorI2RlZmlu ZSBkb3duX3B0ZV9zcChwdGUsIG9yZGVyKQorI2RlZmluZSBzZXRfcHRlX3JhdyhwdGVwLCBwdGUp IHNldF9wdGUocHRlcCwgcHRlKQorI2VuZGlmCisKKwogI2RlZmluZSBTZXRQYWdlUmVzZXJ2ZWQo cGFnZSkJCXNldF9iaXQoUEdfcmVzZXJ2ZWQsICYocGFnZSktPmZsYWdzKQogI2RlZmluZSBDbGVh clBhZ2VSZXNlcnZlZChwYWdlKQkJY2xlYXJfYml0KFBHX3Jlc2VydmVkLCAmKHBhZ2UpLT5mbGFn cykKIApAQCAtNDE0LDYgKzQyMyw3IEBACiBleHRlcm4gcHRlX3QgKkZBU1RDQUxMKHB0ZV9hbGxv YyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNz KSk7CiBleHRlcm4gaW50IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgd3JpdGVf YWNjZXNzKTsKIGV4dGVybiBpbnQgbWFrZV9wYWdlc19wcmVzZW50KHVuc2lnbmVkIGxvbmcgYWRk ciwgdW5zaWduZWQgbG9uZyBlbmQpOworZXh0ZXJuIGludCBtYWtlX3B0ZXNfcHJlc2VudCh1bnNp Z25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kKTsKIGV4dGVybiBpbnQgYWNjZXNzX3By b2Nlc3Nfdm0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9p ZCAqYnVmLCBpbnQgbGVuLCBpbnQgd3JpdGUpOwogZXh0ZXJuIGludCBwdHJhY2VfcmVhZGRhdGEo c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGxvbmcgc3JjLCBjaGFyICpkc3QsIGlu dCBsZW4pOwogZXh0ZXJuIGludCBwdHJhY2Vfd3JpdGVkYXRhKHN0cnVjdCB0YXNrX3N0cnVjdCAq dHNrLCBjaGFyICogc3JjLCB1bnNpZ25lZCBsb25nIGRzdCwgaW50IGxlbik7CkBAIC00NDgsNiAr NDU4LDEyIEBACiBleHRlcm4gdm9pZCBzaG93X21lbSh2b2lkKTsKIGV4dGVybiB2b2lkIHNpX21l bWluZm8oc3RydWN0IHN5c2luZm8gKiB2YWwpOwogZXh0ZXJuIHZvaWQgc3dhcGluX3JlYWRhaGVh ZChzd3BfZW50cnlfdCk7CisKK2V4dGVybiB2b2lkIF9fYnJlYWtfYXJlYSAoc3RydWN0IHBhZ2Ug KnBhZ2UsIHVuc2lnbmVkIGxvbmcgb3JkZXIpOworc3RhdGljIGlubGluZSB2b2lkIGJyZWFrX2Fy ZWEoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgb3JkZXIpCit7CisJX19icmVha19h cmVhKHBhZ2UsIG9yZGVyKTsKK30KIAogZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlIHN3YXBw ZXJfc3BhY2U7CiAjZGVmaW5lIFBhZ2VTd2FwQ2FjaGUocGFnZSkgKChwYWdlKS0+bWFwcGluZyA9 PSAmc3dhcHBlcl9zcGFjZSkKZGlmZiAtdXJOIGxpbnV4LTIuNC4xOC9tbS9tZW1vcnkuYyBsaW51 eC9tbS9tZW1vcnkuYwotLS0gbGludXgtMi40LjE4L21tL21lbW9yeS5jCVR1ZSBGZWIgMjYgMDQ6 Mzg6MTMgMjAwMgorKysgbGludXgvbW0vbWVtb3J5LmMJU3VuIEp1bCAgNyAxMjo1MDozOCAyMDAy CkBAIC0zNCw2ICszNCw4IEBACiAgKgogICogMTYuMDcuOTkgIC0gIFN1cHBvcnQgb2YgQklHTUVN IGFkZGVkIGJ5IEdlcmhhcmQgV2ljaGVydCwgU2llbWVucyBBRwogICoJCShHZXJoYXJkLldpY2hl cnRAcGRiLnNpZW1lbnMuZGUpCisgKiAxMy4wNi4wMCAgLSAgU3VwcG9ydCBvZiBTVVBFUl9QQUdF IGFkZGVkIGJ5IE5hb2hpa28gU2hpbWl6dSwgVG9rYWkgVW5pdi4KKyAgICAgICAgICAgICAgICA8 bnNoaW1penVAa2V5YWtpLmNjLnUtdG9rYWkuYWMuanA+CiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4 L21tLmg+CkBAIC01NCw2ICs1NiwxMSBAQAogdm9pZCAqIGhpZ2hfbWVtb3J5Owogc3RydWN0IHBh Z2UgKmhpZ2htZW1fc3RhcnRfcGFnZTsKIAorI2lmbmRlZiBDT05GSUdfU1VQRVJfUEFHRQoraW50 IHN1cGVyX3BhZ2Vfb3JkZXJbXSA9IHswfTsKK3BncHJvdF90IHN1cGVyX3BhZ2VfcHJvdFtdID0g ezB4MDB9OworI2VuZGlmCisKIC8qCiAgKiBXZSBzcGVjaWFsLWNhc2UgdGhlIEMtTy1XIFpFUk9f UEFHRSwgYmVjYXVzZSBpdCdzIHN1Y2gKICAqIGEgY29tbW9uIG9jY3VycmVuY2UgKG5vIG5lZWQg dG8gcmVhZCB0aGUgcGFnZSB0byBrbm93CkBAIC0zMTAsNyArMzE3LDE0IEBACiAJZm9yIChvZmZz ZXQ9MDsgb2Zmc2V0IDwgc2l6ZTsgcHRlcCsrLCBvZmZzZXQgKz0gUEFHRV9TSVpFKSB7CiAJCXB0 ZV90IHB0ZSA9ICpwdGVwOwogCQlpZiAocHRlX25vbmUocHRlKSkKLQkJCWNvbnRpbnVlOworCQkJ eyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHB0ZV92YWwocHRlKSZTVVBFUl9QQUdFX01B U0spIHsKKwkgICAgICAgICAgICAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW0gPSBjdXJyZW50 LT5tbTsKKwkgICAgICAgICAgICAgICAgICAgc3Bpbl9sb2NrKCZtbS0+cGFnZV90YWJsZV9sb2Nr KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ZV9jbGVhcihwdGVwKTsKKwkgICAgICAg ICAgICAgICAgICAgc3Bpbl91bmxvY2soJm1tLT5wYWdlX3RhYmxlX2xvY2spOworICAgICAgICAg ICAgICAgICAgICAgICAgIH0KKwkJCWNvbnRpbnVlOyB9CiAJCWlmIChwdGVfcHJlc2VudChwdGUp KSB7CiAJCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHB0ZV9wYWdlKHB0ZSk7CiAJCQlpZiAoVkFMSURf UEFHRShwYWdlKSAmJiAhUGFnZVJlc2VydmVkKHBhZ2UpKQpAQCAtMTE4NCwzNCArMTE5OCw3OCBA QAogc3RhdGljIGludCBkb19hbm9ueW1vdXNfcGFnZShzdHJ1Y3QgbW1fc3RydWN0ICogbW0sIHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwgcHRlX3QgKnBhZ2VfdGFibGUsIGludCB3cml0ZV9h Y2Nlc3MsIHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKIAlwdGVfdCBlbnRyeTsKLQorICAgICAgICBp bnQgaTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBzcGFkZHI7CisgICAgICAgIHB0ZV90IG9sZHB0 ZTsKKyAgICAgICAgaW50IG9yZGVyOworICAgICAgICBwdGVfdCAqd2t0YWJsZTsKK3JldHJ5Ogog CS8qIFJlYWQtb25seSBtYXBwaW5nIG9mIFpFUk9fUEFHRS4gKi8KIAllbnRyeSA9IHB0ZV93cnBy b3RlY3QobWtfcHRlKFpFUk9fUEFHRShhZGRyKSwgdm1hLT52bV9wYWdlX3Byb3QpKTsKIAogCS8q IC4uZXhjZXB0IGlmIGl0J3MgYSB3cml0ZSBhY2Nlc3MgKi8KIAlpZiAod3JpdGVfYWNjZXNzKSB7 CiAJCXN0cnVjdCBwYWdlICpwYWdlOworICAgICAgICAgICAgICAgIG9sZHB0ZSA9ICpwYWdlX3Rh YmxlOworICAgICAgICAgICAgICAgIG9yZGVyID0gc3VwZXJfcGFnZV9vcmRlcltwdGVfdG9fc3Bf aW5kZXgob2xkcHRlKV07CisgICAgICAgICAgICAgICAgd2t0YWJsZSA9CisgICAgICAgICAgICAg ICAgICAgKHB0ZV90ICopKCh1bnNpZ25lZCBsb25nKXBhZ2VfdGFibGUgJiAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH4oKDFVTCA8PCAob3JkZXIgKyBTSVpFT0ZfUFRSX0xPRzIpKSAt MSkpOworCisgICAgICAgICAgICAgICBmb3IgKGk9MDsgaSA8IDEgPDwgb3JkZXI7IGkrKykgewor ICAgICAgICAgICAgICAgICBpZighcHRlX25vbmUoKih3a3RhYmxlK2kpKSkgeworICAgICAgICAg ICAgICAgICAgICBkb3duX3B0ZV9zcChwYWdlX3RhYmxlLCBwdGVfdG9fc3BfaW5kZXgob2xkcHRl KSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7CisgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgIH0KIAogCQkvKiBBbGxvY2F0ZSBvdXIgb3duIHByaXZhdGUg cGFnZS4gKi8KIAkJc3Bpbl91bmxvY2soJm1tLT5wYWdlX3RhYmxlX2xvY2spOwogCi0JCXBhZ2Ug PSBhbGxvY19wYWdlKEdGUF9ISUdIVVNFUik7Ci0JCWlmICghcGFnZSkKLQkJCWdvdG8gbm9fbWVt OwotCQljbGVhcl91c2VyX2hpZ2hwYWdlKHBhZ2UsIGFkZHIpOwotCisgICAgICAgICAgICAgICAg cGFnZSA9IGFsbG9jX3BhZ2VzKEdGUF9ISUdIVVNFUiwgb3JkZXIpOworICAgICAgICAgICAgICAg IGlmICghcGFnZSkgeworICAgICAgICAgICAgICAgICAgIGlmIChvcmRlcikgeworICAgICAgICAg ICAgICAgICAgICAgIGRvd25fcHRlX3NwKHBhZ2VfdGFibGUsIHB0ZV90b19zcF9pbmRleChvbGRw dGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHJ5OworICAgICAgICAgICAgICAg ICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgZWxzZSBnb3RvIG5vX21lbTsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgc3BhZGRyID0gYWRkciAmIH4oKFBBR0VfU0laRSA8 PCBvcmRlcikgLSAxKTsKKyAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaSA8IDEgPDwgb3JkZXI7 IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfdXNlcl9oaWdocGFnZShwYWdl K2ksIHNwYWRkcik7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGFkZHIgKz0gUEFHRV9TSVpF OworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChvcmRlcikgeworICAg ICAgICAgICAgICAgIGJyZWFrX2FyZWEocGFnZSwgb3JkZXIpOworCQlzcGluX2xvY2soJm1tLT5w YWdlX3RhYmxlX2xvY2spOworICAgICAgICAgICAgICAgIHNwYWRkciA9IGFkZHIgJiB+KChQQUdF X1NJWkUgPDwgb3JkZXIpIC0gMSk7CisgICAgICAgICAgICAgICAgZm9yIChpPTA7IGkgPCAxIDw8 IG9yZGVyOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICBlbnRyeSA9IHB0ZV9ta3dyaXRlKHB0 ZV9ta2RpcnR5KAorICAgICAgICAgICAgICAgICAgICAgbWtfcHRlKHBhZ2UraSwgX19wZ3Byb3Qo cGdwcm90X3ZhbCh2bWEtPnZtX3BhZ2VfcHJvdCl8CisgICAgICAgICAgICAgICAgICAgICAgICBw Z3Byb3RfdmFsKHN1cGVyX3BhZ2VfcHJvdFtwdGVfdG9fc3BfaW5kZXgob2xkcHRlKV0pKSkpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgIG1tLT5yc3MrKzsKKyAgICAgICAgICAgICAgICAgICAg ICAgIGZsdXNoX3BhZ2VfdG9fcmFtKHBhZ2UraSk7CisJCSAgICAgICAgbHJ1X2NhY2hlX2FkZChw YWdlK2kpOworCQkgICAgICAgIG1hcmtfcGFnZV9hY2Nlc3NlZChwYWdlK2kpOworICAgICAgICAg ICAgICAgICAgICAgICAgc2V0X3B0ZV9yYXcod2t0YWJsZStpLCBlbnRyeSk7CisgICAgICAgICAg ICAgICAgICAgICAgICBzcGFkZHIgKz0gUEFHRV9TSVpFOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgfSBlbHNlewogCQlzcGluX2xvY2soJm1tLT5wYWdlX3RhYmxlX2xvY2spOwog CQlpZiAoIXB0ZV9ub25lKCpwYWdlX3RhYmxlKSkgewogCQkJcGFnZV9jYWNoZV9yZWxlYXNlKHBh Z2UpOwogCQkJc3Bpbl91bmxvY2soJm1tLT5wYWdlX3RhYmxlX2xvY2spOwogCQkJcmV0dXJuIDE7 CiAJCX0KLQkJbW0tPnJzcysrOwotCQlmbHVzaF9wYWdlX3RvX3JhbShwYWdlKTsKLQkJZW50cnkg PSBwdGVfbWt3cml0ZShwdGVfbWtkaXJ0eShta19wdGUocGFnZSwgdm1hLT52bV9wYWdlX3Byb3Qp KSk7CisgICAgICAgICAgICAgICAgbW0tPnJzcysrOworICAgICAgICAgICAgICAgIGZsdXNoX3Bh Z2VfdG9fcmFtKHBhZ2UpOworICAgICAgICAgICAgICAgIGVudHJ5ID0gcHRlX21rd3JpdGUocHRl X21rZGlydHkoCisgICAgICAgICAgICAgICAgICAgICBta19wdGUocGFnZSwgdm1hLT52bV9wYWdl X3Byb3QpKSk7CiAJCWxydV9jYWNoZV9hZGQocGFnZSk7CiAJCW1hcmtfcGFnZV9hY2Nlc3NlZChw YWdlKTsKLQl9CisJICAgICAgICBzZXRfcHRlKHBhZ2VfdGFibGUsIGVudHJ5KTsKKyAgICAgICAg ICB9CisgICAgICAgIH0gZWxzZQogCiAJc2V0X3B0ZShwYWdlX3RhYmxlLCBlbnRyeSk7CiAKQEAg LTE0NjcsMyArMTUyNSw2NyBAQAogCQkJbGVuLCB3cml0ZSwgMCwgTlVMTCwgTlVMTCk7CiAJcmV0 dXJuIHJldCA9PSBsZW4gPyAwIDogLTE7CiB9CisgIC8qCisgICAqIEFsbG9jYXRpbmcgUFRFcyBm b3IgZnV0dXJlIGZhbHQgaGFuZGxpbmcuIAorICAgKi8KKyAgCisgIGludCBzZXRfc3BfcmFuZ2Uo dW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgb3JkZXIsIHBncHJvdF90IHByb3QpCisgIHsKKyAg ICAgICAgaW50IGk7CisgICAgICAgIHBnZF90ICogZGlyOworICAgICAgICBwbWRfdCAqcG1kOwor ICAgICAgICBwdGVfdCAqIHB0ZTsKKyAgCisgICAgICAgIGRpciA9IHBnZF9vZmZzZXQoY3VycmVu dC0+bW0sIGFkZHJlc3MpOworICAgICAgICBwbWQgPSBwbWRfYWxsb2MoY3VycmVudC0+bW0sIGRp ciwgYWRkcmVzcyk7CisgICAgICAgIGlmICghcG1kKSByZXR1cm4gLUVOT01FTTsKKyAgICAgICAg YWRkcmVzcyAmPSB+UEdESVJfTUFTSzsKKyAgICAgICAgcHRlID0gcHRlX2FsbG9jKGN1cnJlbnQt Pm1tLCBwbWQsIGFkZHJlc3MpOworICAgICAgICBpZiAoIXB0ZSkKKyAgICAgICAgICAgICAgICBy ZXR1cm4gLUVOT01FTTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDE8PG9yZGVyOyBpICsrKQor ICAgICAgICAgICAgICAgIGlmKCFwdGVfbm9uZSgqKHB0ZStpKSkpIHJldHVybiAwOworICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgMTw8b3JkZXI7IGkgKyspIHsKKyAgICAgICAgICAgICAgICBzZXRf cHRlX3JhdyhwdGUsIHB0ZV9tb2RpZnkoKnB0ZSwgcHJvdCkpOworICAgICAgICAgICAgICAgIHB0 ZSsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICB9CisgIAorICAvKgorICAgKiBT aW1wbGlzdGljIG5ldyBwYWdlIHRhYmxlIGFsbG9jYXRpb24gZm9yIHN5c19icmsuLgorICAgKiBP bmx5IEdIIGJpdCAhPSAwIHRhYmxlcyB3aWxsIGJlIGFsbG9jYXRlZC4KKyAgICogQXQgdGhpcyB0 aW1lLCB3ZSB3aWxsIG5vdCBhbGxvY2F0ZSByZWFsIHN0b3JhZ2UsIGl0IHJlbWFpbnMKKyAgICog Zm9yIHRoZSBwYWdlX2ZhdWx0IGhhbmRsZXIuCisgICAqLworICBpbnQgbWFrZV9wdGVzX3ByZXNl bnQodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCkKKyAgeworICAgICAgICBp bnQgaTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyByZW07CisgICAgICAgIGlmIChhZGRyID49IGVu ZCkKKyAgICAgICAgICAgICAgICBCVUcoKTsKKyAgLyoKKyAgICogVGhlIGZpcnN0IG9yZGVyKGk9 MCkgaXMgdGhlIG9yZGluYXJ5IHB0ZSAoMXBhZ2UpLCB0aGVuIHdlIHNraXAgdG8KKyAgICogYWxs b2NhdGUgdGhlIHB0ZS4KKyAgICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBTVVBFUl9QQUdF X05SIC0gMTsgaSsrKSB7CisgICAgICAgICAgIHJlbSA9ICh+YWRkciArIDEpICYgKChQQUdFX1NJ WkUgPDwgc3VwZXJfcGFnZV9vcmRlcltpKzFdKSAtIDEpOworICAgICAgICAgICB3aGlsZSAocmVt ICYmCisgICAgICAgICAgICAgICAgICAoYWRkciAmICgoUEFHRV9TSVpFIDw8IHN1cGVyX3BhZ2Vf b3JkZXJbaV0pIC0gMSkpID09IDBVTCAmJgorICAgICAgICAgICAgICAgICAgKChlbmQgLSBhZGRy ICkgPj0gKFBBR0VfU0laRSA8PCBzdXBlcl9wYWdlX29yZGVyW2ldKSkpIHsKKyAgICAgICAgICAg ICAgICAgIGlmKGkpIHNldF9zcF9yYW5nZShhZGRyLCBzdXBlcl9wYWdlX29yZGVyW2ldLCBzdXBl cl9wYWdlX3Byb3RbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkciArPSBQQUdFX1NJ WkUgPDwgc3VwZXJfcGFnZV9vcmRlcltpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbSAg LT0gUEFHRV9TSVpFIDw8IHN1cGVyX3BhZ2Vfb3JkZXJbaV07CisgICAgICAgICAgICAgICAgfTsK KyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSBTVVBFUl9QQUdFX05SIC0gMTsgaSA+IDA7IGkt LSkgeworICAgICAgICAgICAgICAgIHdoaWxlICgKKyAgICAgICAgICAgICAgICAgICAgKGFkZHIg JiAoKFBBR0VfU0laRSA8PCBzdXBlcl9wYWdlX29yZGVyW2ldKSAtIDEpKSA9PSAwVUwgJiYKKyAg ICAgICAgICAgICAgICAgICAgKChlbmQgLSBhZGRyICkgPj0gKFBBR0VfU0laRSA8PCBzdXBlcl9w YWdlX29yZGVyW2ldKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9zcF9yYW5nZShh ZGRyLCBzdXBlcl9wYWdlX29yZGVyW2ldLCBzdXBlcl9wYWdlX3Byb3RbaV0pOworICAgICAgICAg ICAgICAgICAgICAgICAgYWRkciArPSBQQUdFX1NJWkUgPDwgc3VwZXJfcGFnZV9vcmRlcltpXTsK KyAgICAgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICB9CisK ZGlmZiAtdXJOIGxpbnV4LTIuNC4xOC9tbS9tbWFwLmMgbGludXgvbW0vbW1hcC5jCi0tLSBsaW51 eC0yLjQuMTgvbW0vbW1hcC5jCVR1ZSBGZWIgMjYgMDQ6Mzg6MTQgMjAwMgorKysgbGludXgvbW0v bW1hcC5jCVNhdCBKdW4gMjkgMTE6Mzk6MTkgMjAwMgpAQCAtNTYwLDYgKzU2MCwxNyBAQAogCQlt bS0+bG9ja2VkX3ZtICs9IGxlbiA+PiBQQUdFX1NISUZUOwogCQltYWtlX3BhZ2VzX3ByZXNlbnQo YWRkciwgYWRkciArIGxlbik7CiAJfQorCS8qCisJICogbW1hcCBtYXkgcHJvdmlkZSBuZXcgcGFn ZXMgYW5kIHdlIGhhdmUgdGhlIGNoYW5jZSB0byBzZXQgdGhlCisgICAgICAgICAqIFNVUEVSX1BB R0UgYml0cyBpbiB0aGUgVExCIGVudHJpZXMsIHRoZW4gd2UgY2FsbCBtYWtlX3B0ZXNfcHJlc2Vu dC4KKwkgKiBNQVBfUFJJVkFURSBmbGFnIGdpdmVzIGEgY2hhbmNlIHRvIHRlbGwgdXMgCisJICog dGhhdCBpdCBpcyBhIHBsYWluIGFsbG9jYXRpb24uCisJICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPE4uU2hpbWl6dT4KKwkgKi8KKyNpZmRlZiBDT05GSUdfU1VQ RVJfUEFHRQorCWlmICh2bV9mbGFncyAmIE1BUF9QUklWQVRFKQorCQltYWtlX3B0ZXNfcHJlc2Vu dChhZGRyLCBhZGRyICsgbGVuKTsKKyNlbmRpZgogCXJldHVybiBhZGRyOwogCiB1bm1hcF9hbmRf ZnJlZV92bWE6CkBAIC0xMDgwLDYgKzEwOTEsMTQgQEAKIAkJbW0tPmxvY2tlZF92bSArPSBsZW4g Pj4gUEFHRV9TSElGVDsKIAkJbWFrZV9wYWdlc19wcmVzZW50KGFkZHIsIGFkZHIgKyBsZW4pOwog CX0KKwkvKgorCSAqIGJyayBwcm92aWRlIG5ldyBwYWdlcyBhbmQgd2UgaGF2ZSB0aGUgY2hhbmNl IHRvIHNldCB0aGUKKyAgICAgICAgICogU1VQRVJfUEFHRSBiaXRzIGZvciBUTEIsIHRoZW4gd2Ug Y2FsbCBtYWtlX3B0ZXNfcHJlc2VudC4KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8Ti5TaGltaXp1PgorCSAqLworI2lmZGVmIENPTkZJR19TVVBFUl9QQUdF CisJbWFrZV9wdGVzX3ByZXNlbnQoYWRkciwgYWRkciArIGxlbik7CisjZW5kaWYKIAlyZXR1cm4g YWRkcjsKIH0KIApkaWZmIC11ck4gbGludXgtMi40LjE4L21tL3BhZ2VfYWxsb2MuYyBsaW51eC9t bS9wYWdlX2FsbG9jLmMKLS0tIGxpbnV4LTIuNC4xOC9tbS9wYWdlX2FsbG9jLmMJVHVlIEZlYiAy NiAwNDozODoxNCAyMDAyCisrKyBsaW51eC9tbS9wYWdlX2FsbG9jLmMJRnJpIEp1biAyOCAxNTo1 MjoxMiAyMDAyCkBAIC03LDYgKzcsNyBAQAogICogIFJlc2hhcGVkIGl0IHRvIGJlIGEgem9uZWQg YWxsb2NhdG9yLCBJbmdvIE1vbG5hciwgUmVkIEhhdCwgMTk5OQogICogIERpc2NvbnRpZ3VvdXMg bWVtb3J5IHN1cHBvcnQsIEthbm9qIFNhcmNhciwgU0dJLCBOb3YgMTk5OQogICogIFpvbmUgYmFs YW5jaW5nLCBLYW5vaiBTYXJjYXIsIFNHSSwgSmFuIDIwMDAKKyAqICBQYWdlIEdyYW51bGFyaXR5 IEhpbnQgc3VwcG9ydCwgTmFvaGlrbyBTaGltaXp1LCBUb2thaSBVbml2LiwgSnVsIDIwMDAKICAq LwogCiAjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CkBAIC0xNzUsNiArMTc2LDE3IEBACiAJaWYg KEJBRF9SQU5HRSh6b25lLHBhZ2UpKQogCQlCVUcoKTsKIAlyZXR1cm4gcGFnZTsKK30KKwordm9p ZCBfX2JyZWFrX2FyZWEgKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9yZGVyKSB7 CisJaW50IGk7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgbG9uZyBz aXplID0gMSA8PCBvcmRlcjsKKworCWZvciAoIGkgPSAwOyBpIDwgc2l6ZTsgaSsrICkgeworCQlz ZXRfcGFnZV9jb3VudChwYWdlICsgaSwgMSk7CisJfQorCXJldHVybjsKIH0KIAogc3RhdGljIEZB U1RDQUxMKHN0cnVjdCBwYWdlICogcm1xdWV1ZSh6b25lX3QgKnpvbmUsIHVuc2lnbmVkIGludCBv cmRlcikpOwo=

--Multipart_Mon__8_Jul_2002_19:02:20_+0900_08297bd0 Content-Type: application/octet-stream; name="trans2.c" Content-Disposition: attachment; filename="trans2.c" Content-Transfer-Encoding: base64

LyoKIFRoaXMgcHJvZ3JhbSBpcyBmb3IgdGVzdGluZyBsYXJnZSBzdHJpZGUgZGF0YSB0cmFuc2Zl cgoKSSBwdXQgdGhpcyBwcm9ncmFtIHVuZGVyIHRoZSBHUEwuCgpDb250YWN0Ok5hb2hpa28gU2hp bWl6dSwgCglTY2hvb2wgb2YgRW5naW5lZXJpbmcsIFRva2FpIFVuaXZlcnNpdHkuCgkxMTE3IEtp dGFrYW5hbWUsIEthbmFnYXdhIDI1OS0xMiBKYXBhbgoJZW1haWw6bnNoaW1penVAa2V5YWtpLmNj LnUtdG9rYWkuYWMuanAKCVRFTDogKzgxLTQ2My01OC0xMjExKGV4dC40MDg0KQoJRkFYOiArODEt NDYzLTU4LTgzMjAKCTxVUkw6aHR0cDovL3NoaW1penUtbGFiLmV0LnUtdG9rYWkuYWMuanAvPgoq LwoKCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx1bmlz dGQuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8c3lz L3RpbWUuaD4KI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4K CiNpZm5kZWYgRElNRU5TSU9OCiNkZWZpbmUgRElNRU5TSU9OIDEwMDAKI2VuZGlmCgojZGVmaW5l IElUUiAxMCo0MDAwKjQwMDAvKERJTUVOU0lPTipESU1FTlNJT04pCgpkb3VibGUgYVtESU1FTlNJ T05dW0RJTUVOU0lPTl07CmRvdWJsZSBiW0RJTUVOU0lPTl1bRElNRU5TSU9OXTsKCnN0cnVjdCBy dXNhZ2UgcnVzYWdlOwpkb3VibGUgZHRpbWUoKQp7CiBkb3VibGUgcTsKCiBnZXRydXNhZ2UoUlVT QUdFX1NFTEYsJnJ1c2FnZSk7CgogcSA9IChkb3VibGUpKHJ1c2FnZS5ydV91dGltZS50dl9zZWMp OwogcSA9IHEgKyAoZG91YmxlKShydXNhZ2UucnVfdXRpbWUudHZfdXNlYykgKiAxLjBlLTA2OwoJ CiByZXR1cm4gcTsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7CiBpbnQgaSxq LGs7CiBpbnQgICAgZGltPURJTUVOU0lPTjsKIGRvdWJsZSBzdGFydHRpbWUsZW5kdGltZSxzcyxs czsKIGZvcihpPTA7IGk8ZGltOyBpKyspIHsKCWZvcihqPTA7IGo8IGRpbTsgaisrKSB7CgkJYVtq XVtpXSA9IGJbaV1bal0gPSAwLjA7CgkJICB9CgkgfQoKIHN0YXJ0dGltZSA9IGR0aW1lKCk7CiAg IGZvcihrPTA7IGs8SVRSOyBrKyspCglmb3IoaT0wOyBpPGRpbTsgaSsrKSB7CgkJZm9yKGo9MDsg ajwgZGltOyBqKyspIHsKCQkJYVtqXVtpXSA9IGJbaV1bal07CgkJICB9CgkgfQogZW5kdGltZSA9 IGR0aW1lKCk7CiBzcz1lbmR0aW1lLXN0YXJ0dGltZTsKLy8gcHJpbnRmKCJzdG9yZSBzdHJpZGU6 ICU1LjJmTUIvU1xuIiwgSVRSKmRpbSpkaW0qc2l6ZW9mKGRvdWJsZSkqMWUtNi8oZW5kdGltZS1z dGFydHRpbWUpKTsKIHN0YXJ0dGltZSA9IGR0aW1lKCk7CiAgIGZvcihrPTA7IGs8SVRSOyBrKysp Cglmb3Ioaj0wOyBqPCBkaW07IGorKykgewoJCWZvcihpPTA7IGk8ZGltOyBpKyspIHsKCQkJYVtq XVtpXSA9IGJbaV1bal07CgkJICB9CgkgfQogZW5kdGltZSA9IGR0aW1lKCk7CiBscz1lbmR0aW1l LXN0YXJ0dGltZTsKLy8gcHJpbnRmKCJsb2FkIHN0cmlkZTogJTUuMmZNQi9TXG4iLCBJVFIqZGlt KmRpbSpzaXplb2YoZG91YmxlKSoxZS02LyhlbmR0aW1lLXN0YXJ0dGltZSkpOwpwcmludGYoIiVk ICU1LjJmICU1LjJmXG4iLCBkaW0sCiBJVFIqZGltKmRpbSpzaXplb2YoZG91YmxlKSoxZS02L3Nz LAogSVRSKmRpbSpkaW0qc2l6ZW9mKGRvdWJsZSkqMWUtNi9scwopOwogZXhpdCgwKTsKfQoKCg==

--Multipart_Mon__8_Jul_2002_19:02:20_+0900_08297bd0-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/