From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v4 2/8] mm: Extract allocation loop from alloc_heap_pages() Date: Fri, 19 May 2017 11:50:34 -0400 Message-ID: <1495209040-11101-3-git-send-email-boris.ostrovsky@oracle.com> References: <1495209040-11101-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1495209040-11101-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, jbeulich@suse.com, Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org VGhpcyB3aWxsIG1ha2UgY29kZSBhIGJpdCBtb3JlIHJlYWRhYmxlLCBlc3BlY2lhbGx5IHdpdGgg Y2hhbmdlcyB0aGF0CndpbGwgYmUgaW50cm9kdWNlZCBpbiBzdWJzZXF1ZW50IHBhdGNoZXMuCgpT aWduZWQtb2ZmLWJ5OiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29t PgotLS0KQ2hhbmdlIGluIHY0OgoqIE5ldyBwYXRjaAoKIHhlbi9jb21tb24vcGFnZV9hbGxvYy5j IHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQog MSBmaWxlIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3hlbi9jb21tb24vcGFnZV9hbGxvYy5jIGIveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMK aW5kZXggYzY1ZDIxNC4uMWU1Nzg4NSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9wYWdlX2FsbG9j LmMKKysrIGIveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMKQEAgLTY5NCwyMiArNjk0LDE1IEBAIHN0 YXRpYyB2b2lkIHBhZ2VfbGlzdF9hZGRfc2NydWIoc3RydWN0IHBhZ2VfaW5mbyAqcGcsIHVuc2ln bmVkIGludCBub2RlLAogICAgICAgICBwYWdlX2xpc3RfYWRkKHBnLCAmaGVhcChub2RlLCB6b25l LCBvcmRlcikpOwogfQogCi0vKiBBbGxvY2F0ZSAyXkBvcmRlciBjb250aWd1b3VzIHBhZ2VzLiAq Lwotc3RhdGljIHN0cnVjdCBwYWdlX2luZm8gKmFsbG9jX2hlYXBfcGFnZXMoCi0gICAgdW5zaWdu ZWQgaW50IHpvbmVfbG8sIHVuc2lnbmVkIGludCB6b25lX2hpLAotICAgIHVuc2lnbmVkIGludCBv cmRlciwgdW5zaWduZWQgaW50IG1lbWZsYWdzLAotICAgIHN0cnVjdCBkb21haW4gKmQpCitzdGF0 aWMgc3RydWN0IHBhZ2VfaW5mbyAqZ2V0X2ZyZWVfYnVkZHkodW5zaWduZWQgaW50IHpvbmVfbG8s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHpv bmVfaGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IG9yZGVyLCB1bnNpZ25lZCBpbnQgbWVtZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICB1bnNpZ25lZCBpbnQg aSwgaiwgem9uZSA9IDAsIG5vZGVtYXNrX3JldHJ5ID0gMDsKICAgICBub2RlaWRfdCBmaXJzdF9u b2RlLCBub2RlID0gTUVNRl9nZXRfbm9kZShtZW1mbGFncyksIHJlcV9ub2RlID0gbm9kZTsKLSAg ICB1bnNpZ25lZCBsb25nIHJlcXVlc3QgPSAxVUwgPDwgb3JkZXI7CisgICAgbm9kZW1hc2tfdCBu b2RlbWFzayA9IGQgPyBkLT5ub2RlX2FmZmluaXR5IDogbm9kZV9vbmxpbmVfbWFwOworICAgIHVu c2lnbmVkIGludCBqLCB6b25lLCBub2RlbWFza19yZXRyeSA9IDAsIHJlcXVlc3QgPSAxVUwgPDwg b3JkZXI7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7Ci0gICAgbm9kZW1hc2tfdCBub2RlbWFz ayA9IChkICE9IE5VTEwgKSA/IGQtPm5vZGVfYWZmaW5pdHkgOiBub2RlX29ubGluZV9tYXA7Ci0g ICAgYm9vbCBuZWVkX3NjcnViLCBuZWVkX3RsYmZsdXNoID0gMDsKLSAgICB1aW50MzJfdCB0bGJm bHVzaF90aW1lc3RhbXAgPSAwOwotCi0gICAgLyogTWFrZSBzdXJlIHRoZXJlIGFyZSBlbm91Z2gg Yml0cyBpbiBtZW1mbGFncyBmb3Igbm9kZUlELiAqLwotICAgIEJVSUxEX0JVR19PTigoX01FTUZf Yml0cyAtIF9NRU1GX25vZGUpIDwgKDggKiBzaXplb2Yobm9kZWlkX3QpKSk7CiAKICAgICBpZiAo IG5vZGUgPT0gTlVNQV9OT19OT0RFICkKICAgICB7CkBAIC03MjUsMzYgKzcxOCw4IEBAIHN0YXRp YyBzdHJ1Y3QgcGFnZV9pbmZvICphbGxvY19oZWFwX3BhZ2VzKAogICAgIGZpcnN0X25vZGUgPSBu b2RlOwogCiAgICAgQVNTRVJUKG5vZGUgPCBNQVhfTlVNTk9ERVMpOwotICAgIEFTU0VSVCh6b25l X2xvIDw9IHpvbmVfaGkpOwotICAgIEFTU0VSVCh6b25lX2hpIDwgTlJfWk9ORVMpOwotCi0gICAg aWYgKCB1bmxpa2VseShvcmRlciA+IE1BWF9PUkRFUikgKQotICAgICAgICByZXR1cm4gTlVMTDsK LQotICAgIHNwaW5fbG9jaygmaGVhcF9sb2NrKTsKLQotICAgIC8qCi0gICAgICogQ2xhaW1lZCBt ZW1vcnkgaXMgY29uc2lkZXJlZCB1bmF2YWlsYWJsZSB1bmxlc3MgdGhlIHJlcXVlc3QKLSAgICAg KiBpcyBtYWRlIGJ5IGEgZG9tYWluIHdpdGggc3VmZmljaWVudCB1bmNsYWltZWQgcGFnZXMuCi0g ICAgICovCi0gICAgaWYgKCAob3V0c3RhbmRpbmdfY2xhaW1zICsgcmVxdWVzdCA+Ci0gICAgICAg ICAgdG90YWxfYXZhaWxfcGFnZXMgKyB0bWVtX2ZyZWVhYmxlX3BhZ2VzKCkpICYmCi0gICAgICAg ICAgKChtZW1mbGFncyAmIE1FTUZfbm9fcmVmY291bnQpIHx8Ci0gICAgICAgICAgICFkIHx8IGQt Pm91dHN0YW5kaW5nX3BhZ2VzIDwgcmVxdWVzdCkgKQotICAgICAgICBnb3RvIG5vdF9mb3VuZDsK LQotICAgIC8qCi0gICAgICogVE1FTTogV2hlbiBhdmFpbGFibGUgbWVtb3J5IGlzIHNjYXJjZSBk dWUgdG8gdG1lbSBhYnNvcmJpbmcgaXQsIGFsbG93Ci0gICAgICogb25seSBtaWQtc2l6ZSBhbGxv Y2F0aW9ucyB0byBhdm9pZCB3b3JzdCBvZiBmcmFnbWVudGF0aW9uIGlzc3Vlcy4KLSAgICAgKiBP dGhlcnMgdHJ5IHRtZW0gcG9vbHMgdGhlbiBmYWlsLiAgVGhpcyBpcyBhIHdvcmthcm91bmQgdW50 aWwgYWxsCi0gICAgICogcG9zdC1kb20wLWNyZWF0aW9uLW11bHRpLXBhZ2UgYWxsb2NhdGlvbnMg Y2FuIGJlIGVsaW1pbmF0ZWQuCi0gICAgICovCi0gICAgaWYgKCAoKG9yZGVyID09IDApIHx8IChv cmRlciA+PSA5KSkgJiYKLSAgICAgICAgICh0b3RhbF9hdmFpbF9wYWdlcyA8PSBtaWRzaXplX2Fs bG9jX3pvbmVfcGFnZXMpICYmCi0gICAgICAgICB0bWVtX2ZyZWVhYmxlX3BhZ2VzKCkgKQotICAg ICAgICBnb3RvIHRyeV90bWVtOwogCi0gICAgLyoKKyAgIC8qCiAgICAgICogU3RhcnQgd2l0aCBy ZXF1ZXN0ZWQgbm9kZSwgYnV0IGV4aGF1c3QgYWxsIG5vZGUgbWVtb3J5IGluIHJlcXVlc3RlZCAK ICAgICAgKiB6b25lIGJlZm9yZSBmYWlsaW5nLCBvbmx5IGNhbGMgbmV3IG5vZGUgdmFsdWUgaWYg d2UgZmFpbCB0byBmaW5kIG1lbW9yeSAKICAgICAgKiBpbiB0YXJnZXQgbm9kZSwgdGhpcyBhdm9p ZHMgbmVlZGxlc3MgY29tcHV0YXRpb24gb24gZmFzdC1wYXRoLgpAQCAtNzcwLDExICs3MzUsMTEg QEAgc3RhdGljIHN0cnVjdCBwYWdlX2luZm8gKmFsbG9jX2hlYXBfcGFnZXMoCiAgICAgICAgICAg ICAvKiBGaW5kIHNtYWxsZXN0IG9yZGVyIHdoaWNoIGNhbiBzYXRpc2Z5IHRoZSByZXF1ZXN0LiAq LwogICAgICAgICAgICAgZm9yICggaiA9IG9yZGVyOyBqIDw9IE1BWF9PUkRFUjsgaisrICkKICAg ICAgICAgICAgICAgICBpZiAoIChwZyA9IHBhZ2VfbGlzdF9yZW1vdmVfaGVhZCgmaGVhcChub2Rl LCB6b25lLCBqKSkpICkKLSAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZDsKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHBnOwogICAgICAgICB9IHdoaWxlICggem9uZS0tID4gem9uZV9s byApOyAvKiBjYXJlZnVsOiB1bnNpZ25lZCB6b25lIG1heSB3cmFwICovCiAKICAgICAgICAgaWYg KCAobWVtZmxhZ3MgJiBNRU1GX2V4YWN0X25vZGUpICYmIHJlcV9ub2RlICE9IE5VTUFfTk9fTk9E RSApCi0gICAgICAgICAgICBnb3RvIG5vdF9mb3VuZDsKKyAgICAgICAgICAgIHJldHVybiBOVUxM OwogCiAgICAgICAgIC8qIFBpY2sgbmV4dCBub2RlLiAqLwogICAgICAgICBpZiAoICFub2RlX2lz c2V0KG5vZGUsIG5vZGVtYXNrKSApCkBAIC03OTEsNDIgKzc1Niw5MyBAQCBzdGF0aWMgc3RydWN0 IHBhZ2VfaW5mbyAqYWxsb2NfaGVhcF9wYWdlcygKICAgICAgICAgewogICAgICAgICAgICAgLyog V2hlbiB3ZSBoYXZlIHRyaWVkIGFsbCBpbiBub2RlbWFzaywgd2UgZmFsbCBiYWNrIHRvIG90aGVy cy4gKi8KICAgICAgICAgICAgIGlmICggKG1lbWZsYWdzICYgTUVNRl9leGFjdF9ub2RlKSB8fCBu b2RlbWFza19yZXRyeSsrICkKLSAgICAgICAgICAgICAgICBnb3RvIG5vdF9mb3VuZDsKKyAgICAg ICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIG5vZGVzX2FuZG5vdChub2RlbWFz aywgbm9kZV9vbmxpbmVfbWFwLCBub2RlbWFzayk7CiAgICAgICAgICAgICBmaXJzdF9ub2RlID0g bm9kZSA9IGZpcnN0X25vZGUobm9kZW1hc2spOwogICAgICAgICAgICAgaWYgKCBub2RlID49IE1B WF9OVU1OT0RFUyApCi0gICAgICAgICAgICAgICAgZ290byBub3RfZm91bmQ7CisgICAgICAgICAg ICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Cit9CisKKy8qIEFsbG9jYXRlIDJe QG9yZGVyIGNvbnRpZ3VvdXMgcGFnZXMuICovCitzdGF0aWMgc3RydWN0IHBhZ2VfaW5mbyAqYWxs b2NfaGVhcF9wYWdlcygKKyAgICB1bnNpZ25lZCBpbnQgem9uZV9sbywgdW5zaWduZWQgaW50IHpv bmVfaGksCisgICAgdW5zaWduZWQgaW50IG9yZGVyLCB1bnNpZ25lZCBpbnQgbWVtZmxhZ3MsCisg ICAgc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBub2RlaWRfdCBub2RlOworICAgIHVuc2lnbmVk IGludCBpLCBidWRkeV9vcmRlciwgem9uZTsKKyAgICB1bnNpZ25lZCBsb25nIHJlcXVlc3QgPSAx VUwgPDwgb3JkZXI7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CisgICAgYm9vbCBuZWVkX3Nj cnViLCBuZWVkX3RsYmZsdXNoID0gZmFsc2U7CisgICAgdWludDMyX3QgdGxiZmx1c2hfdGltZXN0 YW1wID0gMDsKKworICAgIC8qIE1ha2Ugc3VyZSB0aGVyZSBhcmUgZW5vdWdoIGJpdHMgaW4gbWVt ZmxhZ3MgZm9yIG5vZGVJRC4gKi8KKyAgICBCVUlMRF9CVUdfT04oKF9NRU1GX2JpdHMgLSBfTUVN Rl9ub2RlKSA8ICg4ICogc2l6ZW9mKG5vZGVpZF90KSkpOworCisgICAgQVNTRVJUKHpvbmVfbG8g PD0gem9uZV9oaSk7CisgICAgQVNTRVJUKHpvbmVfaGkgPCBOUl9aT05FUyk7CisKKyAgICBpZiAo IHVubGlrZWx5KG9yZGVyID4gTUFYX09SREVSKSApCisgICAgICAgIHJldHVybiBOVUxMOworCisg ICAgc3Bpbl9sb2NrKCZoZWFwX2xvY2spOworCisgICAgLyoKKyAgICAgKiBDbGFpbWVkIG1lbW9y eSBpcyBjb25zaWRlcmVkIHVuYXZhaWxhYmxlIHVubGVzcyB0aGUgcmVxdWVzdAorICAgICAqIGlz IG1hZGUgYnkgYSBkb21haW4gd2l0aCBzdWZmaWNpZW50IHVuY2xhaW1lZCBwYWdlcy4KKyAgICAg Ki8KKyAgICBpZiAoIChvdXRzdGFuZGluZ19jbGFpbXMgKyByZXF1ZXN0ID4KKyAgICAgICAgICB0 b3RhbF9hdmFpbF9wYWdlcyArIHRtZW1fZnJlZWFibGVfcGFnZXMoKSkgJiYKKyAgICAgICAgICAo KG1lbWZsYWdzICYgTUVNRl9ub19yZWZjb3VudCkgfHwKKyAgICAgICAgICAgIWQgfHwgZC0+b3V0 c3RhbmRpbmdfcGFnZXMgPCByZXF1ZXN0KSApCisgICAgeworICAgICAgICBzcGluX3VubG9jaygm aGVhcF9sb2NrKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gdHJ5X3RtZW06Ci0g ICAgLyogVHJ5IHRvIGZyZWUgbWVtb3J5IGZyb20gdG1lbSAqLwotICAgIGlmICggKHBnID0gdG1l bV9yZWxpbnF1aXNoX3BhZ2VzKG9yZGVyLCBtZW1mbGFncykpICE9IE5VTEwgKQorICAgIC8qCisg ICAgICogVE1FTTogV2hlbiBhdmFpbGFibGUgbWVtb3J5IGlzIHNjYXJjZSBkdWUgdG8gdG1lbSBh YnNvcmJpbmcgaXQsIGFsbG93CisgICAgICogb25seSBtaWQtc2l6ZSBhbGxvY2F0aW9ucyB0byBh dm9pZCB3b3JzdCBvZiBmcmFnbWVudGF0aW9uIGlzc3Vlcy4KKyAgICAgKiBPdGhlcnMgdHJ5IHRt ZW0gcG9vbHMgdGhlbiBmYWlsLiAgVGhpcyBpcyBhIHdvcmthcm91bmQgdW50aWwgYWxsCisgICAg ICogcG9zdC1kb20wLWNyZWF0aW9uLW11bHRpLXBhZ2UgYWxsb2NhdGlvbnMgY2FuIGJlIGVsaW1p bmF0ZWQuCisgICAgICovCisgICAgaWYgKCAoKG9yZGVyID09IDApIHx8IChvcmRlciA+PSA5KSkg JiYKKyAgICAgICAgICh0b3RhbF9hdmFpbF9wYWdlcyA8PSBtaWRzaXplX2FsbG9jX3pvbmVfcGFn ZXMpICYmCisgICAgICAgICB0bWVtX2ZyZWVhYmxlX3BhZ2VzKCkgKQogICAgIHsKLSAgICAgICAg LyogcmVhc3NpZ25pbmcgYW4gYWxyZWFkeSBhbGxvY2F0ZWQgYW5vbnltb3VzIGhlYXAgcGFnZSAq LworICAgICAgICAvKiBUcnkgdG8gZnJlZSBtZW1vcnkgZnJvbSB0bWVtLiAqLworICAgICAgICBw ZyA9IHRtZW1fcmVsaW5xdWlzaF9wYWdlcyhvcmRlciwgbWVtZmxhZ3MpOwogICAgICAgICBzcGlu X3VubG9jaygmaGVhcF9sb2NrKTsKICAgICAgICAgcmV0dXJuIHBnOwogICAgIH0KIAotIG5vdF9m b3VuZDoKLSAgICAvKiBObyBzdWl0YWJsZSBtZW1vcnkgYmxvY2tzLiBGYWlsIHRoZSByZXF1ZXN0 LiAqLwotICAgIHNwaW5fdW5sb2NrKCZoZWFwX2xvY2spOwotICAgIHJldHVybiBOVUxMOworICAg IHBnID0gZ2V0X2ZyZWVfYnVkZHkoem9uZV9sbywgem9uZV9oaSwgb3JkZXIsIG1lbWZsYWdzLCBk KTsKKyAgICBpZiAoICFwZyApCisgICAgeworICAgICAgICAvKiBObyBzdWl0YWJsZSBtZW1vcnkg YmxvY2tzLiBGYWlsIHRoZSByZXF1ZXN0LiAqLworICAgICAgICBzcGluX3VubG9jaygmaGVhcF9s b2NrKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbm9kZSA9IHBoeXNfdG9f bmlkKHBhZ2VfdG9fbWFkZHIocGcpKTsKKyAgICB6b25lID0gcGFnZV90b196b25lKHBnKTsKKyAg ICBidWRkeV9vcmRlciA9IFBGTl9PUkRFUihwZyk7CiAKLSBmb3VuZDogCiAgICAgbmVlZF9zY3J1 YiA9IChwZy0+dS5mcmVlLmZpcnN0X2RpcnR5ICE9IElOVkFMSURfRElSVFlfSURYKTsKIAogICAg IC8qIFdlIG1heSBoYXZlIHRvIGhhbHZlIHRoZSBjaHVuayBhIG51bWJlciBvZiB0aW1lcy4gKi8K LSAgICB3aGlsZSAoIGogIT0gb3JkZXIgKQorICAgIHdoaWxlICggYnVkZHlfb3JkZXIgIT0gb3Jk ZXIgKQogICAgIHsKICAgICAgICAgLyoKICAgICAgICAgICogU29tZSBvZiB0aGUgc3ViLWNodW5r cyBtYXkgYmUgY2xlYW4gYnV0IHdlIHdpbGwgbWFyayB0aGVtCiAgICAgICAgICAqIGFzIGRpcnR5 IChpZiBuZWVkX3NjcnViIGlzIHNldCkgdG8gYXZvaWQgdHJhdmVyc2luZyB0aGUKICAgICAgICAg ICogbGlzdCBoZXJlLgogICAgICAgICAgKi8KLSAgICAgICAgcGFnZV9saXN0X2FkZF9zY3J1Yihw Zywgbm9kZSwgem9uZSwgLS1qLAorICAgICAgICBwYWdlX2xpc3RfYWRkX3NjcnViKHBnLCBub2Rl LCB6b25lLCAtLWJ1ZGR5X29yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRf c2NydWIgPyAwIDogSU5WQUxJRF9ESVJUWV9JRFgpOwotICAgICAgICBwZyArPSAxIDw8IGo7Cisg ICAgICAgIHBnICs9IDEgPDwgYnVkZHlfb3JkZXI7CiAgICAgfQogCiAgICAgQVNTRVJUKGF2YWls W25vZGVdW3pvbmVdID49IHJlcXVlc3QpOwotLSAKMS44LjMuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=