From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Sat, 07 Sep 2002 22:08:32 -0700 From: "Martin J. Bligh" Subject: Cleanup of alloc_pages code (removes _alloc_pages) Message-ID: <185353754.1031436512@[10.10.2.3]> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==========185371270==========" Sender: owner-linux-mm@kvack.org Return-Path: To: Andrew Morton Cc: linux-mm mailing list List-ID: --==========185371270========== Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline This patch is was originally from Andrea's tree (from SGI??), and has been tweaked since by both Christoph (who cleaned up all the code), and myself (who just hit it until it worked). It removes _alloc_pages, and adds all nodes to the zonelists directly, which also changes the fallback zone order to something more sensible ... instead of: "foreach (node) { foreach (zone) }" we now do something more like "foreach (zone_type) { foreach (node) }" Christoph has a more recent version that's fancier and does a couple more cleanups, but it seems to have a bug in it that I can't track down easily, so I propose we do the simple thing for now, and take the rest of the cleanups when it works ... it seems to build nicely on top of this seperately to me. Tested on 16-way NUMA-Q with discontigmem + NUMA support and on a standard PC (well, boots and appears functional). On top of 2.5.33-mm4 M. --==========185371270========== Content-Type: application/octet-stream; name=33-alloc_pages Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=33-alloc_pages; size=11920 ZGlmZiAtdXJOIC1YIC9ob21lL21ibGlnaC8uZGlmZi5leGNsdWRlIDMyLWZyZWVfYXJlYV9pbml0 L2FyY2gvc3BhcmM2NC9tbS9pbml0LmMgMzMtYWxsb2NfcGFnZXMvYXJjaC9zcGFyYzY0L21tL2lu aXQuYwotLS0gMzItZnJlZV9hcmVhX2luaXQvYXJjaC9zcGFyYzY0L21tL2luaXQuYwlGcmkgU2Vw ICA2IDIyOjQwOjQ3IDIwMDIKKysrIDMzLWFsbG9jX3BhZ2VzL2FyY2gvc3BhcmM2NC9tbS9pbml0 LmMJU2F0IFNlcCAgNyAwOTowMzozMyAyMDAyCkBAIC0xNzM0LDcgKzE3MzQsNyBAQAogCSAqIFNl dCB1cCB0aGUgemVybyBwYWdlLCBtYXJrIGl0IHJlc2VydmVkLCBzbyB0aGF0IHBhZ2UgY291bnQK IAkgKiBpcyBub3QgbWFuaXB1bGF0ZWQgd2hlbiBmcmVlaW5nIHRoZSBwYWdlIGZyb20gdXNlciBw dGVzLgogCSAqLwotCW1lbV9tYXBfemVybyA9IF9hbGxvY19wYWdlcyhHRlBfS0VSTkVMLCAwKTsK KwltZW1fbWFwX3plcm8gPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMLCAwKTsKIAlpZiAobWVtX21h cF96ZXJvID09IE5VTEwpIHsKIAkJcHJvbV9wcmludGYoInBhZ2luZ19pbml0OiBDYW5ub3QgYWxs b2MgemVybyBwYWdlLlxuIik7CiAJCXByb21faGFsdCgpOwpkaWZmIC11ck4gLVggL2hvbWUvbWJs aWdoLy5kaWZmLmV4Y2x1ZGUgMzItZnJlZV9hcmVhX2luaXQvaW5jbHVkZS9hc20tYWxwaGEvbW16 b25lLmggMzMtYWxsb2NfcGFnZXMvaW5jbHVkZS9hc20tYWxwaGEvbW16b25lLmgKLS0tIDMyLWZy ZWVfYXJlYV9pbml0L2luY2x1ZGUvYXNtLWFscGhhL21tem9uZS5oCUZyaSBTZXAgIDYgMjM6MDM6 MTkgMjAwMgorKysgMzMtYWxsb2NfcGFnZXMvaW5jbHVkZS9hc20tYWxwaGEvbW16b25lLmgJU2F0 IFNlcCAgNyAwOTowMzo1OCAyMDAyCkBAIC0zNiwxMiArMzYsMTAgQEAKIAogI2lmZGVmIENPTkZJ R19BTFBIQV9XSUxERklSRQogIyBkZWZpbmUgQUxQSEFfUEFfVE9fTklEKHBhKQkoKHBhKSA+PiAz NikJLyogMTYgbm9kZXMgbWF4IGR1ZSA0M2JpdCBrc2VnICovCi0jZGVmaW5lIE5PREVfTUFYX01F TV9TSVpFCSg2NEwgKiAxMDI0TCAqIDEwMjRMICogMTAyNEwpIC8qIDY0IEdCICovCi0jZGVmaW5l IE1BWF9OVU1OT0RFUwkJV0lMREZJUkVfTUFYX1FCQgorIyBkZWZpbmUgTk9ERV9NQVhfTUVNX1NJ WkUJKDY0TCAqIDEwMjRMICogMTAyNEwgKiAxMDI0TCkgLyogNjQgR0IgKi8KICNlbHNlCiAjIGRl ZmluZSBBTFBIQV9QQV9UT19OSUQocGEpCSgwKQotI2RlZmluZSBOT0RFX01BWF9NRU1fU0laRQko fjBVTCkKLSNkZWZpbmUgTUFYX05VTU5PREVTCQkxCisjIGRlZmluZSBOT0RFX01BWF9NRU1fU0la RQkofjBVTCkKICNlbmRpZgogCiAjZGVmaW5lIFBIWVNBRERSX1RPX05JRChwYSkJCUFMUEhBX1BB X1RPX05JRChwYSkKZGlmZiAtdXJOIC1YIC9ob21lL21ibGlnaC8uZGlmZi5leGNsdWRlIDMyLWZy ZWVfYXJlYV9pbml0L2luY2x1ZGUvYXNtLWFscGhhL251bW5vZGVzLmggMzMtYWxsb2NfcGFnZXMv aW5jbHVkZS9hc20tYWxwaGEvbnVtbm9kZXMuaAotLS0gMzItZnJlZV9hcmVhX2luaXQvaW5jbHVk ZS9hc20tYWxwaGEvbnVtbm9kZXMuaAlXZWQgRGVjIDMxIDE2OjAwOjAwIDE5NjkKKysrIDMzLWFs bG9jX3BhZ2VzL2luY2x1ZGUvYXNtLWFscGhhL251bW5vZGVzLmgJU2F0IFNlcCAgNyAwOTowMzoz MyAyMDAyCkBAIC0wLDAgKzEsMTIgQEAKKyNpZm5kZWYgX0FTTV9NQVhfTlVNTk9ERVNfSAorI2Rl ZmluZSBfQVNNX01BWF9OVU1OT0RFU19ICisKKy8qCisgKiBDdXJyZW50bHkgdGhlIFdpbGRmaXJl IGlzIHRoZSBvbmx5IGRpc2NvbnRpZ21lbS9OVU1BIGNhcGFibGUgQWxwaGEgY29yZS4KKyAqLwor I2lmIGRlZmluZWQoQ09ORklHX0FMUEhBX1dJTERGSVJFKSB8fCBkZWZpbmVkKENPTkZJR19BTFBI QV9HRU5FUklDKQorIyBpbmNsdWRlIDxhc20vY29yZV93aWxkZmlyZS5oPgorIyBkZWZpbmUgTUFY X05VTU5PREVTCQlXSUxERklSRV9NQVhfUUJCCisjZW5kaWYKKworI2VuZGlmIC8qIF9BU01fTUFY X05VTU5PREVTX0ggKi8KZGlmZiAtdXJOIC1YIC9ob21lL21ibGlnaC8uZGlmZi5leGNsdWRlIDMy LWZyZWVfYXJlYV9pbml0L2luY2x1ZGUvYXNtLWkzODYvbWF4X251bW5vZGVzLmggMzMtYWxsb2Nf cGFnZXMvaW5jbHVkZS9hc20taTM4Ni9tYXhfbnVtbm9kZXMuaAotLS0gMzItZnJlZV9hcmVhX2lu aXQvaW5jbHVkZS9hc20taTM4Ni9tYXhfbnVtbm9kZXMuaAlGcmkgU2VwICA2IDIyOjQwOjUxIDIw MDIKKysrIDMzLWFsbG9jX3BhZ2VzL2luY2x1ZGUvYXNtLWkzODYvbWF4X251bW5vZGVzLmgJV2Vk IERlYyAzMSAxNjowMDowMCAxOTY5CkBAIC0xLDEyICswLDAgQEAKLSNpZm5kZWYgX0FTTV9NQVhf TlVNTk9ERVNfSAotI2RlZmluZSBfQVNNX01BWF9OVU1OT0RFU19ICi0KLSNpbmNsdWRlIDxsaW51 eC9jb25maWcuaD4KLQotI2lmZGVmIENPTkZJR19YODZfTlVNQVEKLSNpbmNsdWRlIDxhc20vbnVt YXEuaD4KLSNlbHNlCi0jZGVmaW5lIE1BWF9OVU1OT0RFUwkxCi0jZW5kaWYgLyogQ09ORklHX1g4 Nl9OVU1BUSAqLwotCi0jZW5kaWYgLyogX0FTTV9NQVhfTlVNTk9ERVNfSCAqLwpkaWZmIC11ck4g LVggL2hvbWUvbWJsaWdoLy5kaWZmLmV4Y2x1ZGUgMzItZnJlZV9hcmVhX2luaXQvaW5jbHVkZS9h c20taTM4Ni9tbXpvbmUuaCAzMy1hbGxvY19wYWdlcy9pbmNsdWRlL2FzbS1pMzg2L21tem9uZS5o Ci0tLSAzMi1mcmVlX2FyZWFfaW5pdC9pbmNsdWRlL2FzbS1pMzg2L21tem9uZS5oCUZyaSBTZXAg IDYgMjM6MDM6MTkgMjAwMgorKysgMzMtYWxsb2NfcGFnZXMvaW5jbHVkZS9hc20taTM4Ni9tbXpv bmUuaAlTYXQgU2VwICA3IDExOjMxOjI2IDIwMDIKQEAgLTYsNiArNiw4IEBACiAjaWZuZGVmIF9B U01fTU1aT05FX0hfCiAjZGVmaW5lIF9BU01fTU1aT05FX0hfCiAKKyNpbmNsdWRlIDxhc20vc21w Lmg+CisKICNpZmRlZiBDT05GSUdfRElTQ09OVElHTUVNCiAKICNpZmRlZiBDT05GSUdfWDg2X05V TUFRCmRpZmYgLXVyTiAtWCAvaG9tZS9tYmxpZ2gvLmRpZmYuZXhjbHVkZSAzMi1mcmVlX2FyZWFf aW5pdC9pbmNsdWRlL2FzbS1pMzg2L251bW5vZGVzLmggMzMtYWxsb2NfcGFnZXMvaW5jbHVkZS9h c20taTM4Ni9udW1ub2Rlcy5oCi0tLSAzMi1mcmVlX2FyZWFfaW5pdC9pbmNsdWRlL2FzbS1pMzg2 L251bW5vZGVzLmgJV2VkIERlYyAzMSAxNjowMDowMCAxOTY5CisrKyAzMy1hbGxvY19wYWdlcy9p bmNsdWRlL2FzbS1pMzg2L251bW5vZGVzLmgJRnJpIFNlcCAgNiAyMjo0MDo1MSAyMDAyCkBAIC0w LDAgKzEsMTIgQEAKKyNpZm5kZWYgX0FTTV9NQVhfTlVNTk9ERVNfSAorI2RlZmluZSBfQVNNX01B WF9OVU1OT0RFU19ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKworI2lmZGVmIENPTkZJ R19YODZfTlVNQVEKKyNpbmNsdWRlIDxhc20vbnVtYXEuaD4KKyNlbHNlCisjZGVmaW5lIE1BWF9O VU1OT0RFUwkxCisjZW5kaWYgLyogQ09ORklHX1g4Nl9OVU1BUSAqLworCisjZW5kaWYgLyogX0FT TV9NQVhfTlVNTk9ERVNfSCAqLwpkaWZmIC11ck4gLVggL2hvbWUvbWJsaWdoLy5kaWZmLmV4Y2x1 ZGUgMzItZnJlZV9hcmVhX2luaXQvaW5jbHVkZS9saW51eC9nZnAuaCAzMy1hbGxvY19wYWdlcy9p bmNsdWRlL2xpbnV4L2dmcC5oCi0tLSAzMi1mcmVlX2FyZWFfaW5pdC9pbmNsdWRlL2xpbnV4L2dm cC5oCVNhdCBBdWcgMzEgMTU6MDQ6NTMgMjAwMgorKysgMzMtYWxsb2NfcGFnZXMvaW5jbHVkZS9s aW51eC9nZnAuaAlTYXQgU2VwICA3IDA5OjA4OjQ2IDIwMDIKQEAgLTM5LDE4ICszOSwyNSBAQAog ICogY2FuIGFsbG9jYXRlIGhpZ2htZW0gcGFnZXMsIHRoZSAqZ2V0KnBhZ2UqKCkgdmFyaWFudHMg cmV0dXJuCiAgKiB2aXJ0dWFsIGtlcm5lbCBhZGRyZXNzZXMgdG8gdGhlIGFsbG9jYXRlZCBwYWdl KHMpLgogICovCi1leHRlcm4gc3RydWN0IHBhZ2UgKiBGQVNUQ0FMTChfYWxsb2NfcGFnZXModW5z aWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpKTsKIGV4dGVybiBzdHJ1Y3Qg cGFnZSAqIEZBU1RDQUxMKF9fYWxsb2NfcGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNp Z25lZCBpbnQgb3JkZXIsIHN0cnVjdCB6b25lbGlzdCAqem9uZWxpc3QpKTsKIGV4dGVybiBzdHJ1 Y3QgcGFnZSAqIGFsbG9jX3BhZ2VzX25vZGUoaW50IG5pZCwgdW5zaWduZWQgaW50IGdmcF9tYXNr LCB1bnNpZ25lZCBpbnQgb3JkZXIpOwogCisvKgorICogV2UgZ2V0IHRoZSB6b25lIGxpc3QgZnJv bSB0aGUgY3VycmVudCBub2RlIGFuZCB0aGUgZ2ZwX21hc2suCisgKiBUaGlzIHpvbmUgbGlzdCBj b250YWlucyBhIG1heGltdW0gb2YgTUFYTk9ERVMqTUFYX05SX1pPTkVTIHpvbmVzLgorICoKKyAq IEZvciB0aGUgbm9ybWFsIGNhc2Ugb2Ygbm9uLURJU0NPTlRJR01FTSBzeXN0ZW1zIHRoZSBOT0RF X0RBVEEoKSBnZXRzCisgKiBvcHRpbWl6ZWQgdG8gJmNvbnRpZ19wYWdlX2RhdGEgYXQgY29tcGls ZS10aW1lLgorICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICogYWxsb2NfcGFnZXModW5z aWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiB7Ci0JLyoKLQkgKiBHZXRz IG9wdGltaXplZCBhd2F5IGJ5IHRoZSBjb21waWxlci4KLQkgKi8KLQlpZiAob3JkZXIgPj0gTUFY X09SREVSKQorCXBnX2RhdGFfdCAqcGdkYXQgPSBOT0RFX0RBVEEobnVtYV9ub2RlX2lkKCkpOwor CXVuc2lnbmVkIGludCBpZHggPSAoZ2ZwX21hc2sgJiBHRlBfWk9ORU1BU0spOworCisJaWYgKHVu bGlrZWx5KG9yZGVyID49IE1BWF9PUkRFUikpCiAJCXJldHVybiBOVUxMOwotCXJldHVybiBfYWxs b2NfcGFnZXMoZ2ZwX21hc2ssIG9yZGVyKTsKKworCXJldHVybiBfX2FsbG9jX3BhZ2VzKGdmcF9t YXNrLCBvcmRlciwgcGdkYXQtPm5vZGVfem9uZWxpc3RzICsgaWR4KTsKIH0KIAogI2RlZmluZSBh bGxvY19wYWdlKGdmcF9tYXNrKSBhbGxvY19wYWdlcyhnZnBfbWFzaywgMCkKZGlmZiAtdXJOIC1Y IC9ob21lL21ibGlnaC8uZGlmZi5leGNsdWRlIDMyLWZyZWVfYXJlYV9pbml0L2luY2x1ZGUvbGlu dXgvbW16b25lLmggMzMtYWxsb2NfcGFnZXMvaW5jbHVkZS9saW51eC9tbXpvbmUuaAotLS0gMzIt ZnJlZV9hcmVhX2luaXQvaW5jbHVkZS9saW51eC9tbXpvbmUuaAlGcmkgU2VwICA2IDIzOjIxOjUx IDIwMDIKKysrIDMzLWFsbG9jX3BhZ2VzL2luY2x1ZGUvbGludXgvbW16b25lLmgJU2F0IFNlcCAg NyAwOToxODowMSAyMDAyCkBAIC0xMCwxMSArMTAsMTQgQEAKICNpbmNsdWRlIDxsaW51eC93YWl0 Lmg+CiAjaW5jbHVkZSA8bGludXgvY2FjaGUuaD4KICNpbmNsdWRlIDxhc20vYXRvbWljLmg+Cisj aWZkZWYgQ09ORklHX0RJU0NPTlRJR01FTQorI2luY2x1ZGUgPGFzbS9udW1ub2Rlcy5oPgorI2Vu ZGlmCisjaWZuZGVmIE1BWF9OVU1OT0RFUworI2RlZmluZSBNQVhfTlVNTk9ERVMgMQorI2VuZGlm CiAKLS8qCi0gKiBGcmVlIG1lbW9yeSBtYW5hZ2VtZW50IC0gem9uZWQgYnVkZHkgYWxsb2NhdG9y LgotICovCi0KKy8qIEZyZWUgbWVtb3J5IG1hbmFnZW1lbnQgLSB6b25lZCBidWRkeSBhbGxvY2F0 b3IuICAqLwogI2lmbmRlZiBDT05GSUdfRk9SQ0VfTUFYX1pPTkVPUkRFUgogI2RlZmluZSBNQVhf T1JERVIgMTUKICNlbHNlCkBAIC0xMzcsNyArMTQwLDcgQEAKICAqIGZvb3RwcmludCBvZiB0aGlz IGNvbnN0cnVjdCBpcyB2ZXJ5IHNtYWxsLgogICovCiBzdHJ1Y3Qgem9uZWxpc3QgewotCXN0cnVj dCB6b25lICp6b25lc1tNQVhfTlJfWk9ORVMrMV07IC8vIE5VTEwgZGVsaW1pdGVkCisJc3RydWN0 IHpvbmUgKnpvbmVzW01BWF9OVU1OT0RFUyAqIE1BWF9OUl9aT05FUyArIDFdOyAvLyBOVUxMIGRl bGltaXRlZAogfTsKIAogI2RlZmluZSBHRlBfWk9ORU1BU0sJMHgwZgpAQCAtMTkwLDYgKzE5Myw3 IEBACiBleHRlcm4gdm9pZCBmcmVlX2FyZWFfaW5pdF9jb3JlKHBnX2RhdGFfdCAqcGdkYXQsIHVu c2lnbmVkIGxvbmcgKnpvbmVzX3NpemUsCiAJCXVuc2lnbmVkIGxvbmcgKnpob2xlc19zaXplKTsK IHZvaWQgZ2V0X3pvbmVfY291bnRzKHVuc2lnbmVkIGxvbmcgKmFjdGl2ZSwgdW5zaWduZWQgbG9u ZyAqaW5hY3RpdmUpOworZXh0ZXJuIHZvaWQgYnVpbGRfYWxsX3pvbmVsaXN0cyh2b2lkKTsKIAog ZXh0ZXJuIHBnX2RhdGFfdCBjb250aWdfcGFnZV9kYXRhOwogCmRpZmYgLXVyTiAtWCAvaG9tZS9t YmxpZ2gvLmRpZmYuZXhjbHVkZSAzMi1mcmVlX2FyZWFfaW5pdC9pbml0L21haW4uYyAzMy1hbGxv Y19wYWdlcy9pbml0L21haW4uYwotLS0gMzItZnJlZV9hcmVhX2luaXQvaW5pdC9tYWluLmMJRnJp IFNlcCAgNiAyMjo0MDo1MSAyMDAyCisrKyAzMy1hbGxvY19wYWdlcy9pbml0L21haW4uYwlTYXQg U2VwICA3IDA5OjAzOjMzIDIwMDIKQEAgLTM5Niw2ICszOTYsNyBAQAogCXByaW50ayhsaW51eF9i YW5uZXIpOwogCXNldHVwX2FyY2goJmNvbW1hbmRfbGluZSk7CiAJc2V0dXBfcGVyX2NwdV9hcmVh cygpOworCWJ1aWxkX2FsbF96b25lbGlzdHMoKTsKIAlwcmludGsoIktlcm5lbCBjb21tYW5kIGxp bmU6ICVzXG4iLCBzYXZlZF9jb21tYW5kX2xpbmUpOwogCXBhcnNlX29wdGlvbnMoY29tbWFuZF9s aW5lKTsKIAl0cmFwX2luaXQoKTsKZGlmZiAtdXJOIC1YIC9ob21lL21ibGlnaC8uZGlmZi5leGNs dWRlIDMyLWZyZWVfYXJlYV9pbml0L2tlcm5lbC9rc3ltcy5jIDMzLWFsbG9jX3BhZ2VzL2tlcm5l bC9rc3ltcy5jCi0tLSAzMi1mcmVlX2FyZWFfaW5pdC9rZXJuZWwva3N5bXMuYwlGcmkgU2VwICA2 IDIzOjAzOjE5IDIwMDIKKysrIDMzLWFsbG9jX3BhZ2VzL2tlcm5lbC9rc3ltcy5jCVNhdCBTZXAg IDcgMDk6MjA6MTggMjAwMgpAQCAtODksNyArODksNiBAQAogRVhQT1JUX1NZTUJPTChleGl0X21t KTsKIAogLyogaW50ZXJuYWwga2VybmVsIG1lbW9yeSBtYW5hZ2VtZW50ICovCi1FWFBPUlRfU1lN Qk9MKF9hbGxvY19wYWdlcyk7CiBFWFBPUlRfU1lNQk9MKF9fYWxsb2NfcGFnZXMpOwogRVhQT1JU X1NZTUJPTChhbGxvY19wYWdlc19ub2RlKTsKIEVYUE9SVF9TWU1CT0woX19nZXRfZnJlZV9wYWdl cyk7CkBAIC0xMTYsNiArMTE1LDcgQEAKIEVYUE9SVF9TWU1CT0wodm1hbGxvY190b19wYWdlKTsK IEVYUE9SVF9TWU1CT0wocmVtYXBfcGFnZV9yYW5nZSk7CiAjaWZuZGVmIENPTkZJR19ESVNDT05U SUdNRU0KK0VYUE9SVF9TWU1CT0woY29udGlnX3BhZ2VfZGF0YSk7CiBFWFBPUlRfU1lNQk9MKG1l bV9tYXApOwogRVhQT1JUX1NZTUJPTChtYXhfbWFwbnIpOwogI2VuZGlmCmRpZmYgLXVyTiAtWCAv aG9tZS9tYmxpZ2gvLmRpZmYuZXhjbHVkZSAzMi1mcmVlX2FyZWFfaW5pdC9tbS9udW1hLmMgMzMt YWxsb2NfcGFnZXMvbW0vbnVtYS5jCi0tLSAzMi1mcmVlX2FyZWFfaW5pdC9tbS9udW1hLmMJRnJp IFNlcCAgNiAyMzowMzoxOSAyMDAyCisrKyAzMy1hbGxvY19wYWdlcy9tbS9udW1hLmMJU2F0IFNl cCAgNyAwOTowMzozMyAyMDAyCkBAIC04NSw0OCArODUsNCBAQAogCW1lbXNldChwZ2RhdC0+dmFs aWRfYWRkcl9iaXRtYXAsIDAsIHNpemUpOwogfQogCi1zdGF0aWMgc3RydWN0IHBhZ2UgKiBhbGxv Y19wYWdlc19wZ2RhdChwZ19kYXRhX3QgKnBnZGF0LCB1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssCi0J dW5zaWduZWQgaW50IG9yZGVyKQotewotCXJldHVybiBfX2FsbG9jX3BhZ2VzKGdmcF9tYXNrLCBv cmRlciwgcGdkYXQtPm5vZGVfem9uZWxpc3RzICsgKGdmcF9tYXNrICYgR0ZQX1pPTkVNQVNLKSk7 Ci19Ci0KLS8qCi0gKiBUaGlzIGNhbiBiZSByZWZpbmVkLiBDdXJyZW50bHksIHRyaWVzIHRvIGRv IHJvdW5kIHJvYmluLCBpbnN0ZWFkCi0gKiBzaG91bGQgZG8gY29uY2VudHJhdGljIGNpcmNsZSBz ZWFyY2gsIHN0YXJ0aW5nIGZyb20gY3VycmVudCBub2RlLgotICovCi1zdHJ1Y3QgcGFnZSAqIF9h bGxvY19wYWdlcyh1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikKLXsK LQlzdHJ1Y3QgcGFnZSAqcmV0ID0gMDsKLQlwZ19kYXRhX3QgKnN0YXJ0LCAqdGVtcDsKLSNpZm5k ZWYgQ09ORklHX05VTUEKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCXN0YXRpYyBwZ19kYXRhX3Qg Km5leHQgPSAwOwotI2VuZGlmCi0KLQlpZiAob3JkZXIgPj0gTUFYX09SREVSKQotCQlyZXR1cm4g TlVMTDsKLSNpZmRlZiBDT05GSUdfTlVNQQotCXRlbXAgPSBOT0RFX0RBVEEobnVtYV9ub2RlX2lk KCkpOwotI2Vsc2UKLQlpZiAoIW5leHQpCi0JCW5leHQgPSBwZ2RhdF9saXN0OwotCXRlbXAgPSBu ZXh0OwotCW5leHQgPSBuZXh0LT5wZ2RhdF9uZXh0OwotI2VuZGlmCi0Jc3RhcnQgPSB0ZW1wOwot CXdoaWxlICh0ZW1wKSB7Ci0JCWlmICgocmV0ID0gYWxsb2NfcGFnZXNfcGdkYXQodGVtcCwgZ2Zw X21hc2ssIG9yZGVyKSkpCi0JCQlyZXR1cm4ocmV0KTsKLQkJdGVtcCA9IHRlbXAtPnBnZGF0X25l eHQ7Ci0JfQotCXRlbXAgPSBwZ2RhdF9saXN0OwotCXdoaWxlICh0ZW1wICE9IHN0YXJ0KSB7Ci0J CWlmICgocmV0ID0gYWxsb2NfcGFnZXNfcGdkYXQodGVtcCwgZ2ZwX21hc2ssIG9yZGVyKSkpCi0J CQlyZXR1cm4ocmV0KTsKLQkJdGVtcCA9IHRlbXAtPnBnZGF0X25leHQ7Ci0JfQotCXJldHVybigw KTsKLX0KLQogI2VuZGlmIC8qIENPTkZJR19ESVNDT05USUdNRU0gKi8KZGlmZiAtdXJOIC1YIC9o b21lL21ibGlnaC8uZGlmZi5leGNsdWRlIDMyLWZyZWVfYXJlYV9pbml0L21tL3BhZ2VfYWxsb2Mu YyAzMy1hbGxvY19wYWdlcy9tbS9wYWdlX2FsbG9jLmMKLS0tIDMyLWZyZWVfYXJlYV9pbml0L21t L3BhZ2VfYWxsb2MuYwlGcmkgU2VwICA2IDIzOjI4OjQxIDIwMDIKKysrIDMzLWFsbG9jX3BhZ2Vz L21tL3BhZ2VfYWxsb2MuYwlTYXQgU2VwICA3IDExOjQxOjAzIDIwMDIKQEAgLTI1NiwxNCArMjU2 LDYgQEAKIH0KICNlbmRpZiAvKiBDT05GSUdfU09GVFdBUkVfU1VTUEVORCAqLwogCi0jaWZuZGVm IENPTkZJR19ESVNDT05USUdNRU0KLXN0cnVjdCBwYWdlICpfYWxsb2NfcGFnZXModW5zaWduZWQg aW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpCi17Ci0JcmV0dXJuIF9fYWxsb2NfcGFn ZXMoZ2ZwX21hc2ssIG9yZGVyLAotCQljb250aWdfcGFnZV9kYXRhLm5vZGVfem9uZWxpc3RzKyhn ZnBfbWFzayAmIEdGUF9aT05FTUFTSykpOwotfQotI2VuZGlmCi0KIHN0YXRpYyAvKiBpbmxpbmUg Ki8gc3RydWN0IHBhZ2UgKgogYmFsYW5jZV9jbGFzc3pvbmUoc3RydWN0IHpvbmUqIGNsYXNzem9u ZSwgdW5zaWduZWQgaW50IGdmcF9tYXNrLAogCQkJdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgKiBm cmVlZCkKQEAgLTY3OSwxMyArNjcxLDQxIEBACiAvKgogICogQnVpbGRzIGFsbG9jYXRpb24gZmFs bGJhY2sgem9uZSBsaXN0cy4KICAqLwotc3RhdGljIGlubGluZSB2b2lkIGJ1aWxkX3pvbmVsaXN0 cyhwZ19kYXRhX3QgKnBnZGF0KQorc3RhdGljIGludCBfX2luaXQgYnVpbGRfem9uZWxpc3RzX25v ZGUocGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHpvbmVsaXN0ICp6b25lbGlzdCwgaW50IGosIGlu dCBrKQoreworCXN3aXRjaCAoaykgeworCQlzdHJ1Y3Qgem9uZSAqem9uZTsKKwlkZWZhdWx0Ogor CQlCVUcoKTsKKwljYXNlIFpPTkVfSElHSE1FTToKKwkJem9uZSA9IHBnZGF0LT5ub2RlX3pvbmVz ICsgWk9ORV9ISUdITUVNOworCQlpZiAoem9uZS0+c2l6ZSkgeworI2lmbmRlZiBDT05GSUdfSElH SE1FTQorCQkJQlVHKCk7CisjZW5kaWYKKwkJCXpvbmVsaXN0LT56b25lc1tqKytdID0gem9uZTsK KwkJfQorCWNhc2UgWk9ORV9OT1JNQUw6CisJCXpvbmUgPSBwZ2RhdC0+bm9kZV96b25lcyArIFpP TkVfTk9STUFMOworCQlpZiAoem9uZS0+c2l6ZSkKKwkJCXpvbmVsaXN0LT56b25lc1tqKytdID0g em9uZTsKKwljYXNlIFpPTkVfRE1BOgorCQl6b25lID0gcGdkYXQtPm5vZGVfem9uZXMgKyBaT05F X0RNQTsKKwkJaWYgKHpvbmUtPnNpemUpCisJCQl6b25lbGlzdC0+em9uZXNbaisrXSA9IHpvbmU7 CisJfQorCisJcmV0dXJuIGo7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBidWlsZF96b25lbGlz dHMocGdfZGF0YV90ICpwZ2RhdCkKIHsKLQlpbnQgaSwgaiwgazsKKwlpbnQgaSwgaiwgaywgbm9k ZSwgbG9jYWxfbm9kZTsKIAorCWxvY2FsX25vZGUgPSBwZ2RhdC0+bm9kZV9pZDsKKwlwcmludGso IkJ1aWxkaW5nIHpvbmVsaXN0IGZvciBub2RlIDogJWRcbiIsIGxvY2FsX25vZGUpOwogCWZvciAo aSA9IDA7IGkgPD0gR0ZQX1pPTkVNQVNLOyBpKyspIHsKIAkJc3RydWN0IHpvbmVsaXN0ICp6b25l bGlzdDsKLQkJc3RydWN0IHpvbmUgKnpvbmU7CiAKIAkJem9uZWxpc3QgPSBwZ2RhdC0+bm9kZV96 b25lbGlzdHMgKyBpOwogCQltZW1zZXQoem9uZWxpc3QsIDAsIHNpemVvZigqem9uZWxpc3QpKTsK QEAgLTY5NywzMyArNzE3LDMyIEBACiAJCWlmIChpICYgX19HRlBfRE1BKQogCQkJayA9IFpPTkVf RE1BOwogCi0JCXN3aXRjaCAoaykgewotCQkJZGVmYXVsdDoKLQkJCQlCVUcoKTsKLQkJCS8qCi0J CQkgKiBmYWxsdGhyb3VnaDoKLQkJCSAqLwotCQkJY2FzZSBaT05FX0hJR0hNRU06Ci0JCQkJem9u ZSA9IHBnZGF0LT5ub2RlX3pvbmVzICsgWk9ORV9ISUdITUVNOwotCQkJCWlmICh6b25lLT5zaXpl KSB7Ci0jaWZuZGVmIENPTkZJR19ISUdITUVNCi0JCQkJCUJVRygpOwotI2VuZGlmCi0JCQkJCXpv bmVsaXN0LT56b25lc1tqKytdID0gem9uZTsKLQkJCQl9Ci0JCQljYXNlIFpPTkVfTk9STUFMOgot CQkJCXpvbmUgPSBwZ2RhdC0+bm9kZV96b25lcyArIFpPTkVfTk9STUFMOwotCQkJCWlmICh6b25l LT5zaXplKQotCQkJCQl6b25lbGlzdC0+em9uZXNbaisrXSA9IHpvbmU7Ci0JCQljYXNlIFpPTkVf RE1BOgotCQkJCXpvbmUgPSBwZ2RhdC0+bm9kZV96b25lcyArIFpPTkVfRE1BOwotCQkJCWlmICh6 b25lLT5zaXplKQotCQkJCQl6b25lbGlzdC0+em9uZXNbaisrXSA9IHpvbmU7Ci0JCX0KKyAJCWog PSBidWlsZF96b25lbGlzdHNfbm9kZShwZ2RhdCwgem9uZWxpc3QsIGosIGspOworIAkJLyoKKyAJ CSAqIE5vdyB3ZSBidWlsZCB0aGUgem9uZWxpc3Qgc28gdGhhdCBpdCBjb250YWlucyB0aGUgem9u ZXMKKyAJCSAqIG9mIGFsbCB0aGUgb3RoZXIgbm9kZXMuCisgCQkgKiBXZSBkb24ndCB3YW50IHRv IHByZXNzdXJlIGEgcGFydGljdWxhciBub2RlLCBzbyB3aGVuCisgCQkgKiBidWlsZGluZyB0aGUg em9uZXMgZm9yIG5vZGUgTiwgd2UgbWFrZSBzdXJlIHRoYXQgdGhlCisgCQkgKiB6b25lcyBjb21p bmcgcmlnaHQgYWZ0ZXIgdGhlIGxvY2FsIG9uZXMgYXJlIHRob3NlIGZyb20KKyAJCSAqIG5vZGUg TisxIChtb2R1bG8gTikKKyAJCSAqLworIAkJZm9yIChub2RlID0gbG9jYWxfbm9kZSArIDE7IG5v ZGUgPCBudW1ub2Rlczsgbm9kZSsrKQorIAkJCWogPSBidWlsZF96b25lbGlzdHNfbm9kZShOT0RF X0RBVEEobm9kZSksIHpvbmVsaXN0LCBqLCBrKTsKKyAJCWZvciAobm9kZSA9IDA7IG5vZGUgPCBs b2NhbF9ub2RlOyBub2RlKyspCisgCQkJaiA9IGJ1aWxkX3pvbmVsaXN0c19ub2RlKE5PREVfREFU QShub2RlKSwgem9uZWxpc3QsIGosIGspOworIAogCQl6b25lbGlzdC0+em9uZXNbaisrXSA9IE5V TEw7CiAJfSAKIH0KIAordm9pZCBfX2luaXQgYnVpbGRfYWxsX3pvbmVsaXN0cyh2b2lkKQorewor CWludCBpOworCisJZm9yKGkgPSAwIDsgaSA8IG51bW5vZGVzIDsgaSsrKQorCQlidWlsZF96b25l bGlzdHMoTk9ERV9EQVRBKGkpKTsKK30KKwogdm9pZCBfX2luaXQgY2FsY3VsYXRlX3RvdGFscGFn ZXMgKHBnX2RhdGFfdCAqcGdkYXQsIHVuc2lnbmVkIGxvbmcgKnpvbmVzX3NpemUsCiAJdW5zaWdu ZWQgbG9uZyAqemhvbGVzX3NpemUpCiB7CkBAIC05MTksNyArOTM4LDYgQEAKIAkJCSAgKHVuc2ln bmVkIGxvbmcgKikgYWxsb2NfYm9vdG1lbV9ub2RlKHBnZGF0LCBiaXRtYXBfc2l6ZSk7CiAJCX0K IAl9Ci0JYnVpbGRfem9uZWxpc3RzKHBnZGF0KTsKIH0KIAogI2lmbmRlZiBDT05GSUdfRElTQ09O VElHTUVNCg== --==========185371270==========-- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/