From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v4 13/41] x86_64/mm: refactor memory_add() Date: Thu, 7 Dec 2017 18:10:02 +0800 Message-ID: <20171207101030.22364-14-haozhong.zhang@intel.com> References: <20171207101030.22364-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171207101030.22364-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Haozhong Zhang , Andrew Cooper , Jan Beulich , Chao Peng , Dan Williams List-Id: xen-devel@lists.xenproject.org U2VwYXJhdGUgdGhlIHJldmVydGlibGUgcGFydCBvZiBtZW1vcnlfYWRkX2NvbW1vbigpLCB3aGlj aCB3aWxsIGFsc28KYmUgdXNlZCBpbiBQTUVNIG1hbmFnZW1lbnQuIFRoZSBzZXBhcmF0aW9uIHdp bGwgZWFzZSB0aGUgZmFpbHVyZQpyZWNvdmVyeSBpbiBQTUVNIG1hbmFnZW1lbnQuIFNldmVyYWwg Y29kaW5nLXN0eWxlIGlzc3VlcyBpbiB0aGUKdG91Y2hlZCBjb2RlIGFyZSBmaXhlZCBhcyB3ZWxs LgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaXMgaW50cm9kdWNlZC4KClNpZ25lZC1vZmYtYnk6IEhh b3pob25nIFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Ci0tLQpDYzogSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNA Y2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYveDg2XzY0L21tLmMgfCA5OCArKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1 NiBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYveDg2XzY0L21tLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKaW5kZXggMzVhMTUzNWMx ZS4uOTAzNDEyNjdkOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCisrKyBi L3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYwpAQCAtMTMzNywyMSArMTMzNywxNiBAQCBzdGF0aWMg aW50IG1lbV9ob3RhZGRfY2hlY2sodW5zaWduZWQgbG9uZyBzcGZuLCB1bnNpZ25lZCBsb25nIGVw Zm4pCiAgICAgcmV0dXJuIDE7CiB9CiAKLS8qCi0gKiBBIGJpdCBwYXJhbm9pZCBmb3IgbWVtb3J5 IGFsbG9jYXRpb24gZmFpbHVyZSBpc3N1ZSBzaW5jZQotICogaXQgbWF5IGJlIHJlYXNvbiBmb3Ig bWVtb3J5IGFkZAotICovCi1pbnQgbWVtb3J5X2FkZCh1bnNpZ25lZCBsb25nIHNwZm4sIHVuc2ln bmVkIGxvbmcgZXBmbiwgdW5zaWduZWQgaW50IHB4bSkKK3N0YXRpYyBpbnQgbWVtb3J5X2FkZF9j b21tb24oc3RydWN0IG1lbV9ob3RhZGRfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHB4bSwgYm9vbCBkaXJlY3RfbWFwKQogewotICAgIHN0cnVj dCBtZW1faG90YWRkX2luZm8gaW5mbzsKKyAgICB1bnNpZ25lZCBsb25nIHNwZm4gPSBpbmZvLT5z cGZuLCBlcGZuID0gaW5mby0+ZXBmbjsKICAgICBpbnQgcmV0OwogICAgIG5vZGVpZF90IG5vZGU7 CiAgICAgdW5zaWduZWQgbG9uZyBvbGRfbWF4ID0gbWF4X3BhZ2UsIG9sZF90b3RhbCA9IHRvdGFs X3BhZ2VzOwogICAgIHVuc2lnbmVkIGxvbmcgb2xkX25vZGVfc3RhcnQsIG9sZF9ub2RlX3NwYW4s IG9yaWdfb25saW5lOwogICAgIHVuc2lnbmVkIGxvbmcgaTsKIAotICAgIGRwcmludGsoWEVOTE9H X0lORk8sICJtZW1vcnlfYWRkICVseCB+ICVseCB3aXRoIHB4bSAleFxuIiwgc3BmbiwgZXBmbiwg cHhtKTsKLQogICAgIGlmICggIW1lbV9ob3RhZGRfY2hlY2soc3BmbiwgZXBmbikgKQogICAgICAg ICByZXR1cm4gLUVJTlZBTDsKIApAQCAtMTM2NiwyMiArMTM2MSwyNSBAQCBpbnQgbWVtb3J5X2Fk ZCh1bnNpZ25lZCBsb25nIHNwZm4sIHVuc2lnbmVkIGxvbmcgZXBmbiwgdW5zaWduZWQgaW50IHB4 bSkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQogCi0gICAgaSA9IHZpcnRfdG9fbWZu KEhZUEVSVklTT1JfVklSVF9FTkQgLSAxKSArIDE7Ci0gICAgaWYgKCBzcGZuIDwgaSApCi0gICAg ewotICAgICAgICByZXQgPSBtYXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKW1mbl90b192 aXJ0KHNwZm4pLCBzcGZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbihlcGZu LCBpKSAtIHNwZm4sIFBBR0VfSFlQRVJWSVNPUik7Ci0gICAgICAgIGlmICggcmV0ICkKLSAgICAg ICAgICAgIGdvdG8gZGVzdHJveV9kaXJlY3RtYXA7Ci0gICAgfQotICAgIGlmICggaSA8IGVwZm4g KQorICAgIGlmICggZGlyZWN0X21hcCApCiAgICAgewotICAgICAgICBpZiAoIGkgPCBzcGZuICkK LSAgICAgICAgICAgIGkgPSBzcGZuOwotICAgICAgICByZXQgPSBtYXBfcGFnZXNfdG9feGVuKCh1 bnNpZ25lZCBsb25nKW1mbl90b192aXJ0KGkpLCBpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVwZm4gLSBpLCBfX1BBR0VfSFlQRVJWSVNPUl9SVyk7Ci0gICAgICAgIGlmICggcmV0 ICkKLSAgICAgICAgICAgIGdvdG8gZGVzdHJveV9kaXJlY3RtYXA7CisgICAgICAgIGkgPSB2aXJ0 X3RvX21mbihIWVBFUlZJU09SX1ZJUlRfRU5EIC0gMSkgKyAxOworICAgICAgICBpZiAoIHNwZm4g PCBpICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0ID0gbWFwX3BhZ2VzX3RvX3hlbigodW5z aWduZWQgbG9uZyltZm5fdG9fdmlydChzcGZuKSwgc3BmbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWluKGVwZm4sIGkpIC0gc3BmbiwgUEFHRV9IWVBFUlZJU09SKTsKKyAg ICAgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgICAgICBnb3RvIGRlc3Ryb3lfZGlyZWN0 bWFwOworICAgICAgICB9CisgICAgICAgIGlmICggaSA8IGVwZm4gKQorICAgICAgICB7CisgICAg ICAgICAgICBpZiAoIGkgPCBzcGZuICkKKyAgICAgICAgICAgICAgICBpID0gc3BmbjsKKyAgICAg ICAgICAgIHJldCA9IG1hcF9wYWdlc190b194ZW4oKHVuc2lnbmVkIGxvbmcpbWZuX3RvX3ZpcnQo aSksIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwZm4gLSBpLCBfX1BB R0VfSFlQRVJWSVNPUl9SVyk7CisgICAgICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICAg ICAgZ290byBkZXN0cm95X2RpcmVjdG1hcDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIG9sZF9u b2RlX3N0YXJ0ID0gbm9kZV9zdGFydF9wZm4obm9kZSk7CkBAIC0xMzk4LDIyICsxMzk2LDE4IEBA IGludCBtZW1vcnlfYWRkKHVuc2lnbmVkIGxvbmcgc3BmbiwgdW5zaWduZWQgbG9uZyBlcGZuLCB1 bnNpZ25lZCBpbnQgcHhtKQogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpZiAobm9k ZV9zdGFydF9wZm4obm9kZSkgPiBzcGZuKQorICAgICAgICBpZiAoIG5vZGVfc3RhcnRfcGZuKG5v ZGUpID4gc3BmbiApCiAgICAgICAgICAgICBOT0RFX0RBVEEobm9kZSktPm5vZGVfc3RhcnRfcGZu ID0gc3BmbjsKLSAgICAgICAgaWYgKG5vZGVfZW5kX3Bmbihub2RlKSA8IGVwZm4pCisgICAgICAg IGlmICggbm9kZV9lbmRfcGZuKG5vZGUpIDwgZXBmbiApCiAgICAgICAgICAgICBOT0RFX0RBVEEo bm9kZSktPm5vZGVfc3Bhbm5lZF9wYWdlcyA9IGVwZm4gLSBub2RlX3N0YXJ0X3Bmbihub2RlKTsK ICAgICB9CiAKLSAgICBpbmZvLnNwZm4gPSBzcGZuOwotICAgIGluZm8uZXBmbiA9IGVwZm47Ci0g ICAgaW5mby5jdXIgPSBzcGZuOwotCi0gICAgcmV0ID0gZXh0ZW5kX2ZyYW1lX3RhYmxlKCZpbmZv KTsKKyAgICByZXQgPSBleHRlbmRfZnJhbWVfdGFibGUoaW5mbyk7CiAgICAgaWYgKCByZXQgKQog ICAgICAgICBnb3RvIHJlc3RvcmVfbm9kZV9zdGF0dXM7CiAKICAgICAvKiBTZXQgbWF4X3BhZ2Ug YXMgc2V0dXBfbTJwX3RhYmxlIHdpbGwgdXNlIGl0Ki8KLSAgICBpZiAobWF4X3BhZ2UgPCBlcGZu KQorICAgIGlmICggbWF4X3BhZ2UgPCBlcGZuICkKICAgICB7CiAgICAgICAgIG1heF9wYWdlID0g ZXBmbjsKICAgICAgICAgbWF4X3BkeCA9IHBmbl90b19wZHgobWF4X3BhZ2UgLSAxKSArIDE7CkBA IC0xNDIxLDcgKzE0MTUsNyBAQCBpbnQgbWVtb3J5X2FkZCh1bnNpZ25lZCBsb25nIHNwZm4sIHVu c2lnbmVkIGxvbmcgZXBmbiwgdW5zaWduZWQgaW50IHB4bSkKICAgICB0b3RhbF9wYWdlcyArPSBl cGZuIC0gc3BmbjsKIAogICAgIHNldF9wZHhfcmFuZ2Uoc3BmbiwgZXBmbik7Ci0gICAgcmV0ID0g c2V0dXBfbTJwX3RhYmxlKCZpbmZvKTsKKyAgICByZXQgPSBzZXR1cF9tMnBfdGFibGUoaW5mbyk7 CiAKICAgICBpZiAoIHJldCApCiAgICAgICAgIGdvdG8gZGVzdHJveV9tMnA7CkBAIC0xNDI5LDEx ICsxNDIzLDEyIEBAIGludCBtZW1vcnlfYWRkKHVuc2lnbmVkIGxvbmcgc3BmbiwgdW5zaWduZWQg bG9uZyBlcGZuLCB1bnNpZ25lZCBpbnQgcHhtKQogICAgIGlmICggaW9tbXVfZW5hYmxlZCAmJiAh aW9tbXVfcGFzc3Rocm91Z2ggJiYgIW5lZWRfaW9tbXUoaGFyZHdhcmVfZG9tYWluKSApCiAgICAg ewogICAgICAgICBmb3IgKCBpID0gc3BmbjsgaSA8IGVwZm47IGkrKyApCi0gICAgICAgICAgICBp ZiAoIGlvbW11X21hcF9wYWdlKGhhcmR3YXJlX2RvbWFpbiwgaSwgaSwgSU9NTVVGX3JlYWRhYmxl fElPTU1VRl93cml0YWJsZSkgKQorICAgICAgICAgICAgaWYgKCBpb21tdV9tYXBfcGFnZShoYXJk d2FyZV9kb21haW4sIGksIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1V Rl9yZWFkYWJsZXxJT01NVUZfd3JpdGFibGUpICkKICAgICAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgaWYgKCBpICE9IGVwZm4gKQogICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoaS0t ID4gb2xkX21heCkKKyAgICAgICAgICAgIHdoaWxlICggaS0tID4gb2xkX21heCApCiAgICAgICAg ICAgICAgICAgLyogSWYgc3RhdGVtZW50IHRvIHNhdGlzZnkgX19tdXN0X2NoZWNrLiAqLwogICAg ICAgICAgICAgICAgIGlmICggaW9tbXVfdW5tYXBfcGFnZShoYXJkd2FyZV9kb21haW4sIGkpICkK ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNDQyLDE0ICsxNDM3LDEwIEBAIGlu dCBtZW1vcnlfYWRkKHVuc2lnbmVkIGxvbmcgc3BmbiwgdW5zaWduZWQgbG9uZyBlcGZuLCB1bnNp Z25lZCBpbnQgcHhtKQogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogV2UgY2FuJ3QgcmV2ZXJ0 IGFueSBtb3JlICovCi0gICAgc2hhcmVfaG90YWRkX20ycF90YWJsZSgmaW5mbyk7Ci0gICAgdHJh bnNmZXJfcGFnZXNfdG9faGVhcCgmaW5mbyk7Ci0KICAgICByZXR1cm4gMDsKIAogZGVzdHJveV9t MnA6Ci0gICAgZGVzdHJveV9tMnBfbWFwcGluZygmaW5mbyk7CisgICAgZGVzdHJveV9tMnBfbWFw cGluZyhpbmZvKTsKICAgICBtYXhfcGFnZSA9IG9sZF9tYXg7CiAgICAgdG90YWxfcGFnZXMgPSBv bGRfdG90YWw7CiAgICAgbWF4X3BkeCA9IHBmbl90b19wZHgobWF4X3BhZ2UgLSAxKSArIDE7CkBA IC0xNDU5LDkgKzE0NTAsMzIgQEAgcmVzdG9yZV9ub2RlX3N0YXR1czoKICAgICAgICAgbm9kZV9z ZXRfb2ZmbGluZShub2RlKTsKICAgICBOT0RFX0RBVEEobm9kZSktPm5vZGVfc3RhcnRfcGZuID0g b2xkX25vZGVfc3RhcnQ7CiAgICAgTk9ERV9EQVRBKG5vZGUpLT5ub2RlX3NwYW5uZWRfcGFnZXMg PSBvbGRfbm9kZV9zcGFuOwotIGRlc3Ryb3lfZGlyZWN0bWFwOgotICAgIGRlc3Ryb3lfeGVuX21h cHBpbmdzKCh1bnNpZ25lZCBsb25nKW1mbl90b192aXJ0KHNwZm4pLAotICAgICAgICAgICAgICAg ICAgICAgICAgICh1bnNpZ25lZCBsb25nKW1mbl90b192aXJ0KGVwZm4pKTsKK2Rlc3Ryb3lfZGly ZWN0bWFwOgorICAgIGlmICggZGlyZWN0X21hcCApCisgICAgICAgIGRlc3Ryb3lfeGVuX21hcHBp bmdzKCh1bnNpZ25lZCBsb25nKW1mbl90b192aXJ0KHNwZm4pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAodW5zaWduZWQgbG9uZyltZm5fdG9fdmlydChlcGZuKSk7CisKKyAgICByZXR1 cm4gcmV0OworfQorCisvKgorICogQSBiaXQgcGFyYW5vaWQgZm9yIG1lbW9yeSBhbGxvY2F0aW9u IGZhaWx1cmUgaXNzdWUgc2luY2UKKyAqIGl0IG1heSBiZSByZWFzb24gZm9yIG1lbW9yeSBhZGQK KyAqLworaW50IG1lbW9yeV9hZGQodW5zaWduZWQgbG9uZyBzcGZuLCB1bnNpZ25lZCBsb25nIGVw Zm4sIHVuc2lnbmVkIGludCBweG0pCit7CisgICAgc3RydWN0IG1lbV9ob3RhZGRfaW5mbyBpbmZv ID0geyAuc3BmbiA9IHNwZm4sIC5lcGZuID0gZXBmbiwgLmN1ciA9IHNwZm4gfTsKKyAgICBpbnQg cmV0OworCisgICAgZHByaW50ayhYRU5MT0dfSU5GTywgIm1lbW9yeV9hZGQgJWx4IH4gJWx4IHdp dGggcHhtICV4XG4iLCBzcGZuLCBlcGZuLCBweG0pOworCisgICAgcmV0ID0gbWVtb3J5X2FkZF9j b21tb24oJmluZm8sIHB4bSwgdHJ1ZSk7CisgICAgaWYgKCAhcmV0ICkKKyAgICB7CisgICAgICAg IC8qIFdlIGNhbid0IHJldmVydCBhbnkgbW9yZSAqLworICAgICAgICBzaGFyZV9ob3RhZGRfbTJw X3RhYmxlKCZpbmZvKTsKKyAgICAgICAgdHJhbnNmZXJfcGFnZXNfdG9faGVhcCgmaW5mbyk7Cisg ICAgfQogCiAgICAgcmV0dXJuIHJldDsKIH0KLS0gCjIuMTUuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=