From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v4 05/41] x86/mm: exclude PMEM regions from initial frametable Date: Thu, 7 Dec 2017 18:09:54 +0800 Message-ID: <20171207101030.22364-6-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 , Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Jan Beulich , Chao Peng , Dan Williams List-Id: xen-devel@lists.xenproject.org Tm8gc3BlY2lmaWNhdGlvbiBkZWZpbmVzIHRoYXQgUE1FTSByZWdpb25zIGNhbm5vdCBhcHBlYXIg aW4gbWFyZ2lucwpiZXR3ZWVuIFJBTSByZWdpb25zLiBJZiB0aGF0IGRvZXMgaGFwcGVuLCBpbml0 X2ZyYW1ldGFibGUoKSB3aWxsIG5lZWQKdG8gYWxsb2NhdGUgUkFNIGZvciB0aGUgcGFydCBvZiBm cmFtZXRhYmxlIG9mIFBNRU0gcmVnaW9ucy4gSG93ZXZlciwKUE1FTSByZWdpb25zIGNhbiBiZSB2 ZXJ5IGxhcmdlIChzZXZlcmFsIHRlcmFieXRlcyBvciBtb3JlKSwgc28KaW5pdF9mcmFtZXRhYmxl KCkgbWF5IGZhaWwuCgpCZWNhdXNlIFhlbiBkb2VzIG5vdCB1c2UgUE1FTSBhdCB0aGUgYm9vdCB0 aW1lLCB3ZSBjYW4gZGVmZXIgdGhlCmFjdHVhbCByZXNvdXJjZSBhbGxvY2F0aW9uIG9mIGZyYW1l dGFibGUgb2YgUE1FTSByZWdpb25zLiBBdCB0aGUgYm9vdAp0aW1lLCBhbGwgcGFnZXMgb2YgZnJh bWV0YWJsZSBvZiBQTUVNIHJlZ2lvbnMgYXBwZWFyaW5nIGJldHdlZW4gUkFNCnJlZ2lvbnMgYXJl IG1hcHBlZCBvbmUgUkFNIHBhZ2UgZmlsbGVkIHdpdGggMHhmZi4KCkFueSBhdHRlbXB0LCB3aGlj aHMgd3JpdGUgdG8gdGhvc2UgZnJhbWV0YWJsZSBwYWdlcyBiZWZvcmUgdGhlIHRoZWlyCmFjdHVh bCByZXNvdXJjZSBpcyBhbGxvY2F0ZWQsIGltcGxpZXMgYnVncyBpbiBYZW4uIFRoZXJlZm9yZSwg dGhlCnJlYWQtb25seSBtYXBwaW5nIGlzIHVzZWQgaGVyZSB0byBtYWtlIHRob3NlIGJ1Z3MgZXhw bGljaXQuCgpTaWduZWQtb2ZmLWJ5OiBIYW96aG9uZyBaaGFuZyA8aGFvemhvbmcuemhhbmdAaW50 ZWwuY29tPgotLS0KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ CkNjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4g SmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1 bGljaEBzdXNlLmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3Jh Y2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4K Q2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4 LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgIHwgMTE4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHhlbi9hcmNoL3g4Ni9zZXR1cC5jICAg ICAgfCAgIDQgKysKIHhlbi9kcml2ZXJzL2FjcGkvTWFrZWZpbGUgfCAgIDIgKwogeGVuL2RyaXZl cnMvYWNwaS9uZml0LmMgICB8IDExNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FjcGkvYWN0YmwxLmggfCAgNDMgKysrKysrKysrKysr KysrKysKIHhlbi9pbmNsdWRlL3hlbi9hY3BpLmggICAgfCAgIDcgKysrCiA2IGZpbGVzIGNoYW5n ZWQsIDI3OSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB4ZW4vZHJpdmVycy9hY3BpL25maXQuYwoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS5j IGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggMTU1ZTQyNTY5Yi4uYjIwNDZjYTJmMCAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAgLTgzLDYg KzgzLDkgQEAKICAqIGFuIGFwcGxpY2F0aW9uLXN1cHBsaWVkIGJ1ZmZlcikuCiAgKi8KIAorI2lm ZGVmIENPTkZJR19OVkRJTU1fUE1FTQorI2luY2x1ZGUgPHhlbi9hY3BpLmg+CisjZW5kaWYKICNp bmNsdWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhlbi9rZXJuZWwuaD4KICNpbmNsdWRlIDx4 ZW4vbGliLmg+CkBAIC0xODgsMzQgKzE5MSwxMjcgQEAgc3RhdGljIGludCBfX2luaXQgcGFyc2Vf bW1pb19yZWxheChjb25zdCBjaGFyICpzKQogfQogY3VzdG9tX3BhcmFtKCJtbWlvLXJlbGF4Iiwg cGFyc2VfbW1pb19yZWxheCk7CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBpbml0X2ZyYW1ldGFibGVf Y2h1bmsodm9pZCAqc3RhcnQsIHZvaWQgKmVuZCkKK3N0YXRpYyB2b2lkIF9faW5pdCBpbml0X2Zy YW1ldGFibGVfcmFtX2NodW5rKHVuc2lnbmVkIGxvbmcgcywgdW5zaWduZWQgbG9uZyBlKQogewot ICAgIHVuc2lnbmVkIGxvbmcgcyA9ICh1bnNpZ25lZCBsb25nKXN0YXJ0OwotICAgIHVuc2lnbmVk IGxvbmcgZSA9ICh1bnNpZ25lZCBsb25nKWVuZDsKLSAgICB1bnNpZ25lZCBsb25nIHN0ZXA7Cisg ICAgdW5zaWduZWQgbG9uZyBjdXIsIHN0ZXA7CiAgICAgbWZuX3QgbWZuOwogCi0gICAgQVNTRVJU KCEocyAmICgoMSA8PCBMMl9QQUdFVEFCTEVfU0hJRlQpIC0gMSkpKTsKLSAgICBmb3IgKCA7IHMg PCBlOyBzICs9IHN0ZXAgPDwgUEFHRV9TSElGVCApCisgICAgZm9yICggY3VyID0gczsgY3VyIDwg ZTsgY3VyICs9IHN0ZXAgPDwgUEFHRV9TSElGVCApCiAgICAgewogICAgICAgICBzdGVwID0gMVVM IDw8IChjcHVfaGFzX3BhZ2UxZ2IgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIShzICYgKCgx VUwgPDwgTDNfUEFHRVRBQkxFX1NISUZUKSAtIDEpKSA/CisgICAgICAgICAgICAgICAgICAgICAg ICEoY3VyICYgKCgxVUwgPDwgTDNfUEFHRVRBQkxFX1NISUZUKSAtIDEpKSA/CiAgICAgICAgICAg ICAgICAgICAgICAgIEwzX1BBR0VUQUJMRV9TSElGVCAtIFBBR0VfU0hJRlQgOgogICAgICAgICAg ICAgICAgICAgICAgICBMMl9QQUdFVEFCTEVfU0hJRlQgLSBQQUdFX1NISUZUKTsKICAgICAgICAg LyoKICAgICAgICAgICogVGhlIGhhcmRjb2RlZCA0IGJlbG93IGlzIGFyYml0cmFyeSAtIGp1c3Qg cGljayB3aGF0ZXZlciB5b3UgdGhpbmsKICAgICAgICAgICogaXMgcmVhc29uYWJsZSB0byB3YXN0 ZSBhcyBhIHRyYWRlLW9mZiBmb3IgdXNpbmcgYSBsYXJnZSBwYWdlLgogICAgICAgICAgKi8KLSAg ICAgICAgd2hpbGUgKCBzdGVwICYmIHMgKyAoc3RlcCA8PCBQQUdFX1NISUZUKSA+IGUgKyAoNCA8 PCBQQUdFX1NISUZUKSApCisgICAgICAgIHdoaWxlICggc3RlcCAmJiBjdXIgKyAoc3RlcCA8PCBQ QUdFX1NISUZUKSA+IGUgKyAoNCA8PCBQQUdFX1NISUZUKSApCiAgICAgICAgICAgICBzdGVwID4+ PSBQQUdFVEFCTEVfT1JERVI7CiAgICAgICAgIG1mbiA9IGFsbG9jX2Jvb3RfcGFnZXMoc3RlcCwg c3RlcCk7Ci0gICAgICAgIG1hcF9wYWdlc190b194ZW4ocywgbWZuX3gobWZuKSwgc3RlcCwgUEFH RV9IWVBFUlZJU09SKTsKKyAgICAgICAgbWFwX3BhZ2VzX3RvX3hlbihjdXIsIG1mbl94KG1mbiks IHN0ZXAsIFBBR0VfSFlQRVJWSVNPUik7CiAgICAgfQogCi0gICAgbWVtc2V0KHN0YXJ0LCAwLCBl bmQgLSBzdGFydCk7Ci0gICAgbWVtc2V0KGVuZCwgLTEsIHMgLSBlKTsKKyAgICBtZW1zZXQoKHZv aWQgKilzLCAwLCBlIC0gcyk7CisgICAgbWVtc2V0KCh2b2lkICopZSwgLTEsIGN1ciAtIGUpOwog fQogCisjaWZkZWYgQ09ORklHX05WRElNTV9QTUVNCitzdGF0aWMgdm9pZCBfX2luaXQgaW5pdF9m cmFtZXRhYmxlX3BtZW1fY2h1bmsodW5zaWduZWQgbG9uZyBzLCB1bnNpZ25lZCBsb25nIGUpCit7 CisgICAgc3RhdGljIG1mbl90IHBtZW1faW5pdF9mcmFtZXRhYmxlX21mbiA9IElOVkFMSURfTUZO X0lOSVRJQUxJWkVSOworCisgICAgQVNTRVJUKCEoKHMgfCBlKSAmIChQQUdFX1NJWkUgLSAxKSkp OworCisgICAgaWYgKCBtZm5fZXEocG1lbV9pbml0X2ZyYW1ldGFibGVfbWZuLCBJTlZBTElEX01G TikgKQorICAgIHsKKyAgICAgICAgcG1lbV9pbml0X2ZyYW1ldGFibGVfbWZuID0gYWxsb2NfYm9v dF9wYWdlcygxLCAxKTsKKyAgICAgICAgaWYgKCBtZm5fZXEocG1lbV9pbml0X2ZyYW1ldGFibGVf bWZuLCBJTlZBTElEX01GTikgKQorICAgICAgICAgICAgcGFuaWMoIk5vdCBlbm91Z2ggbWVtb3J5 IGZvciBwbWVtIGluaXRpYWwgZnJhbWUgdGFibGUgcGFnZSIpOworICAgICAgICBtZW1zZXQobWZu X3RvX3ZpcnQobWZuX3gocG1lbV9pbml0X2ZyYW1ldGFibGVfbWZuKSksIC0xLCBQQUdFX1NJWkUp OworICAgIH0KKworICAgIHdoaWxlICggcyA8IGUgKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAg ICAgICogVGhlIHJlYWwgZnJhbWUgdGFibGUgZW50cmllcyBvZiBhIHBtZW0gcmVnaW9uIHdpbGwg YmUKKyAgICAgICAgICogY3JlYXRlZCB3aGVuIHRoZSBwbWVtIHJlZ2lvbiBpcyByZWdpc3RlcmVk IHRvIGh5cGVydmlzb3IuCisgICAgICAgICAqIEFueSB3cml0ZSBhdHRlbXB0IHRvIHRoZSBpbml0 aWFsIGVudHJpZXMgb2YgdGhhdCBwbWVtCisgICAgICAgICAqIHJlZ2lvbiBpbXBsaWVzIHBvdGVu dGlhbCBoeXBlcnZpc29yIGJ1Z3MuIEluIG9yZGVyIHRvIG1ha2UKKyAgICAgICAgICogdGhvc2Ug YnVncyBleHBsaWNpdCwgbWFwIHRob3NlIGluaXRpYWwgZW50cmllcyBhcyByZWFkLW9ubHkuCisg ICAgICAgICAqLworICAgICAgICBtYXBfcGFnZXNfdG9feGVuKHMsIG1mbl94KHBtZW1faW5pdF9m cmFtZXRhYmxlX21mbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgMSwgUEFHRV9IWVBFUlZJ U09SX1JPKTsKKyAgICAgICAgcyArPSBQQUdFX1NJWkU7CisgICAgfQorfQorI2VuZGlmIC8qIENP TkZJR19OVkRJTU1fUE1FTSAqLworCitzdGF0aWMgdm9pZCBfX2luaXQgaW5pdF9mcmFtZXRhYmxl X2NodW5rKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpCit7CisgICAgdW5zaWduZWQgbG9uZyBzID0g KHVuc2lnbmVkIGxvbmcpc3RhcnQ7CisgICAgdW5zaWduZWQgbG9uZyBlID0gKHVuc2lnbmVkIGxv bmcpZW5kOworI2lmZGVmIENPTkZJR19OVkRJTU1fUE1FTQorICAgIHVuc2lnbmVkIGxvbmcgcG1l bV9zbWZuLCBwbWVtX2VtZm47CisgICAgdW5zaWduZWQgbG9uZyBwbWVtX3NwYWdlID0gcywgcG1l bV9lcGFnZSA9IHM7CisgICAgdW5zaWduZWQgbG9uZyBwbWVtX3BhZ2VfYWxpZ25lZDsKKyAgICBi b29sIGZvdW5kID0gZmFsc2U7CisjZW5kaWYgLyogQ09ORklHX05WRElNTV9QTUVNICovCisKKyAg ICBBU1NFUlQoIShzICYgKCgxIDw8IEwyX1BBR0VUQUJMRV9TSElGVCkgLSAxKSkpOworCisjaWZu ZGVmIENPTkZJR19OVkRJTU1fUE1FTQorICAgIGluaXRfZnJhbWV0YWJsZV9yYW1fY2h1bmsocywg ZSk7CisjZWxzZQorICAgIHdoaWxlICggcyA8IGUgKQorICAgIHsKKyAgICAgICAgLyogTm8gcHJl dmlvdXMgZm91bmQgcG1lbSByZWdpb24gb3ZlcmxhcHMgd2l0aCBzIH4gZS4gKi8KKyAgICAgICAg aWYgKCBzID49IChwbWVtX2VwYWdlICYgUEFHRV9NQVNLKSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIGZvdW5kID0gYWNwaV9uZml0X2Jvb3Rfc2VhcmNoX3BtZW0oCisgICAgICAgICAgICAgICAg bWZuX3gocGFnZV90b19tZm4oKHN0cnVjdCBwYWdlX2luZm8gKilzKSksCisgICAgICAgICAgICAg ICAgbWZuX3gocGFnZV90b19tZm4oKHN0cnVjdCBwYWdlX2luZm8gKillKSksCisgICAgICAgICAg ICAgICAgJnBtZW1fc21mbiwgJnBtZW1fZW1mbik7CisgICAgICAgICAgICBpZiAoIGZvdW5kICkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwbWVtX3NwYWdlID0gKHVuc2lnbmVkIGxv bmcpbWZuX3RvX3BhZ2UoX21mbihwbWVtX3NtZm4pKTsKKyAgICAgICAgICAgICAgICBwbWVtX2Vw YWdlID0gKHVuc2lnbmVkIGxvbmcpbWZuX3RvX3BhZ2UoX21mbihwbWVtX2VtZm4pKTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIE5vIHBtZW0gcmVnaW9uIGZvdW5kIGlu IHMgfiBlLiAqLworICAgICAgICBpZiAoIHMgPj0gKHBtZW1fZXBhZ2UgJiBQQUdFX01BU0spICkK KyAgICAgICAgeworICAgICAgICAgICAgaW5pdF9mcmFtZXRhYmxlX3JhbV9jaHVuayhzLCBlKTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBzIDwgcG1lbV9z cGFnZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRfZnJhbWV0YWJsZV9yYW1fY2h1bmso cywgcG1lbV9zcGFnZSk7CisgICAgICAgICAgICBwbWVtX3BhZ2VfYWxpZ25lZCA9IChwbWVtX3Nw YWdlICsgUEFHRV9TSVpFIC0gMSkgJiBQQUdFX01BU0s7CisgICAgICAgICAgICBpZiAoIHBtZW1f cGFnZV9hbGlnbmVkID4gcG1lbV9lcGFnZSApCisgICAgICAgICAgICAgICAgbWVtc2V0KCh2b2lk ICopcG1lbV9lcGFnZSwgLTEsIHBtZW1fcGFnZV9hbGlnbmVkIC0gcG1lbV9lcGFnZSk7CisgICAg ICAgICAgICBzID0gcG1lbV9wYWdlX2FsaWduZWQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor ICAgICAgICB7CisgICAgICAgICAgICBwbWVtX3BhZ2VfYWxpZ25lZCA9IHBtZW1fZXBhZ2UgJiBQ QUdFX01BU0s7CisgICAgICAgICAgICBpZiAoIHBtZW1fcGFnZV9hbGlnbmVkID4gcyApCisgICAg ICAgICAgICAgICAgaW5pdF9mcmFtZXRhYmxlX3BtZW1fY2h1bmsocywgcG1lbV9wYWdlX2FsaWdu ZWQpOworICAgICAgICAgICAgaWYgKCBwbWVtX3BhZ2VfYWxpZ25lZCA8IHBtZW1fZXBhZ2UgKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGluaXRfZnJhbWV0YWJsZV9yYW1fY2h1bmso cG1lbV9wYWdlX2FsaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtaW4ocG1lbV9wYWdlX2FsaWduZWQgKyBQQUdFX1NJWkUsIGUpKTsKKyAgICAgICAgICAg ICAgICBtZW1zZXQoKHZvaWQgKilwbWVtX3BhZ2VfYWxpZ25lZCwgLTEsCisgICAgICAgICAgICAg ICAgICAgICAgIHBtZW1fZXBhZ2UgLSBwbWVtX3BhZ2VfYWxpZ25lZCk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBzID0gKHBtZW1fZXBhZ2UgKyBQQUdFX1NJWkUgLSAxKSAmIFBBR0VfTUFT SzsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorIH0KKwogdm9pZCBfX2luaXQgaW5pdF9mcmFt ZXRhYmxlKHZvaWQpCiB7CiAgICAgdW5zaWduZWQgaW50IHNpZHgsIGVpZHgsIG5pZHg7CmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvc2V0dXAuYyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCmluZGV4 IDMyYmIwMmUzYTUuLmQ3YzQxZTJlNWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5j CisrKyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCkBAIC0xMzU4LDYgKzEzNTgsMTAgQEAgdm9pZCBf X2luaXQgbm9yZXR1cm4gX19zdGFydF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICBCVUlM RF9CVUdfT04oTUFDSDJQSFlTX1ZJUlRfU1RBUlQgIT0gUk9fTVBUX1ZJUlRfU1RBUlQpOwogICAg IEJVSUxEX0JVR19PTihNQUNIMlBIWVNfVklSVF9FTkQgICAhPSBST19NUFRfVklSVF9FTkQpOwog CisjaWZkZWYgQ09ORklHX05WRElNTV9QTUVNCisgICAgYWNwaV9uZml0X2Jvb3RfaW5pdCgpOwor I2VuZGlmCisKICAgICBpbml0X2ZyYW1ldGFibGUoKTsKIAogICAgIGlmICggIWFjcGlfYm9vdF90 YWJsZV9pbml0X2RvbmUgKQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvYWNwaS9NYWtlZmlsZSBi L3hlbi9kcml2ZXJzL2FjcGkvTWFrZWZpbGUKaW5kZXggNDQ0YjExZDU4My4uYzhiYjg2OWNiOCAx MDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvYWNwaS9NYWtlZmlsZQorKysgYi94ZW4vZHJpdmVycy9h Y3BpL01ha2VmaWxlCkBAIC05LDMgKzksNSBAQCBvYmotJChDT05GSUdfSEFTX0NQVUZSRVEpICs9 IHBtc3RhdC5vCiAKIG9iai0kKENPTkZJR19YODYpICs9IGh3cmVncy5vCiBvYmotJChDT05GSUdf WDg2KSArPSByZWJvb3QubworCitvYmotJChDT05GSUdfTlZESU1NX1BNRU0pICs9IG5maXQubwpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvYWNwaS9uZml0LmMgYi94ZW4vZHJpdmVycy9hY3BpL25m aXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMDk5Mzc4ZWUwCi0t LSAvZGV2L251bGwKKysrIGIveGVuL2RyaXZlcnMvYWNwaS9uZml0LmMKQEAgLTAsMCArMSwxMTYg QEAKKy8qCisgKiB4ZW4vZHJpdmVycy9hY3BpL25maXQuYworICoKKyAqIENvcHlyaWdodCAoQykg MjAxNywgSW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBM aWNlbnNlLCB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHhlbi9hY3BpLmg+CisjaW5jbHVkZSA8eGVuL2lu aXQuaD4KKyNpbmNsdWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vcGZuLmg+CisKKy8qCisg KiBHVUlEIG9mIGEgYnl0ZSBhZGRyZXNzYWJsZSBwZXJzaXN0ZW50IG1lbW9yeSByZWdpb24KKyAq IChyZWYuIEFDUEkgNi4yLCBTZWN0aW9uIDUuMi4yNS4yKQorICovCitzdGF0aWMgY29uc3QgdWlu dDhfdCBuZml0X3NwYV9wbWVtX2d1aWRbXSA9Cit7CisgICAgMHg3OSwgMHhkMywgMHhmMCwgMHg2 NiwgMHhmMywgMHhiNCwgMHg3NCwgMHg0MCwKKyAgICAweGFjLCAweDQzLCAweDBkLCAweDMzLCAw eDE4LCAweGI3LCAweDhjLCAweGRiLAorfTsKKworc3RydWN0IGFjcGlfbmZpdF9kZXNjIHsKKyAg ICBzdHJ1Y3QgYWNwaV90YWJsZV9uZml0ICphY3BpX3RhYmxlOworfTsKKworc3RhdGljIHN0cnVj dCBhY3BpX25maXRfZGVzYyBuZml0X2Rlc2M7CisKK3ZvaWQgX19pbml0IGFjcGlfbmZpdF9ib290 X2luaXQodm9pZCkKK3sKKyAgICBhY3BpX3N0YXR1cyBzdGF0dXM7CisgICAgYWNwaV9waHlzaWNh bF9hZGRyZXNzIG5maXRfYWRkcjsKKyAgICBhY3BpX25hdGl2ZV91aW50IG5maXRfbGVuOworCisg ICAgc3RhdHVzID0gYWNwaV9nZXRfdGFibGVfcGh5cyhBQ1BJX1NJR19ORklULCAwLCAmbmZpdF9h ZGRyLCAmbmZpdF9sZW4pOworICAgIGlmICggQUNQSV9GQUlMVVJFKHN0YXR1cykgKQorICAgICAg ICByZXR1cm47CisKKyAgICBuZml0X2Rlc2MuYWNwaV90YWJsZSA9IChzdHJ1Y3QgYWNwaV90YWJs ZV9uZml0ICopX192YShuZml0X2FkZHIpOworICAgIG1hcF9wYWdlc190b194ZW4oKHVuc2lnbmVk IGxvbmcpbmZpdF9kZXNjLmFjcGlfdGFibGUsIFBGTl9ET1dOKG5maXRfYWRkciksCisgICAgICAg ICAgICAgICAgICAgICBQRk5fVVAobmZpdF9hZGRyICsgbmZpdF9sZW4pIC0gUEZOX0RPV04obmZp dF9hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgIFBBR0VfSFlQRVJWSVNPUik7Cit9CisKKy8q KgorICogU2VhcmNoIHBtZW0gcmVnaW9ucyBvdmVybGFwcGVkIHdpdGggdGhlIHNwZWNpZmllZCBh ZGRyZXNzIHJhbmdlLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKiAgQHNtZm4sIEBlbWZuOiB0aGUg c3RhcnQgYW5kIGVuZCBNRk4gb2YgYWRkcmVzcyByYW5nZSB0byBzZWFyY2gKKyAqICBAcmV0X3Nt Zm4sIEByZXRfZW1mbjogcmV0dXJuIHRoZSBhZGRyZXNzIHJhbmdlIG9mIHRoZSBmaXJzdCBwbWVt IHJlZ2lvbgorICogICAgICAgICAgICAgICAgICAgICAgICBpbiBhYm92ZSByYW5nZQorICoKKyAq IFJldHVybjoKKyAqICBSZXR1cm4gdHJ1ZSBpZiBhIHBtZW0gcmVnaW9uIGlzIG92ZXJsYXBwZWQg d2l0aCBAc21mbiAtIEBlbWZuLiBUaGUKKyAqICBzdGFydCBhbmQgZW5kIE1GTiBvZiB0aGUgbG93 ZXN0IHBtZW0gcmVnaW9uIGFyZSByZXR1cm5lZCB2aWEKKyAqICBAcmV0X3NtZm4gYW5kIEByZXRf ZW1mbiByZXNwZWN0aXZlbHkuCisgKgorICogIFJldHVybiBmYWxzZSBpZiBubyBwbWVtIHJlZ2lv biBpcyBvdmVybGFwcGVkIHdpdGggQHNtZm4gLSBAZW1mbi4KKyAqLworYm9vbCBfX2luaXQgYWNw aV9uZml0X2Jvb3Rfc2VhcmNoX3BtZW0odW5zaWduZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBsb25n IGVtZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nICpyZXRfc21mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgKnJldF9lbWZuKQoreworICAgIHN0cnVjdCBhY3BpX3RhYmxlX25maXQgKm5m aXRfdGFibGUgPSBuZml0X2Rlc2MuYWNwaV90YWJsZTsKKyAgICB1aW50MzJfdCBoZHJfb2Zmc2V0 ID0gc2l6ZW9mKCpuZml0X3RhYmxlKTsKKyAgICB1bnNpZ25lZCBsb25nIHNhZGRyID0gcGZuX3Rv X3BhZGRyKHNtZm4pLCBlYWRkciA9IHBmbl90b19wYWRkcihlbWZuKTsKKyAgICB1bnNpZ25lZCBs b25nIHJldF9zYWRkciA9IDAsIHJldF9lYWRkciA9IDA7CisKKyAgICBpZiAoICFuZml0X3RhYmxl ICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgd2hpbGUgKCBoZHJfb2Zmc2V0IDwgbmZp dF90YWJsZS0+aGVhZGVyLmxlbmd0aCApCisgICAgeworICAgICAgICBzdHJ1Y3QgYWNwaV9uZml0 X2hlYWRlciAqaGRyID0gKHZvaWQgKiluZml0X3RhYmxlICsgaGRyX29mZnNldDsKKyAgICAgICAg c3RydWN0IGFjcGlfbmZpdF9zeXN0ZW1fYWRkcmVzcyAqc3BhOworICAgICAgICB1bnNpZ25lZCBs b25nIHBtZW1fc2FkZHIsIHBtZW1fZWFkZHI7CisKKyAgICAgICAgaGRyX29mZnNldCArPSBoZHIt Pmxlbmd0aDsKKworICAgICAgICBpZiAoIGhkci0+dHlwZSAhPSBBQ1BJX05GSVRfVFlQRV9TWVNU RU1fQUREUkVTUyApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzcGEgPSAoc3Ry dWN0IGFjcGlfbmZpdF9zeXN0ZW1fYWRkcmVzcyAqKWhkcjsKKyAgICAgICAgaWYgKCBtZW1jbXAo c3BhLT5yYW5nZV9ndWlkLCBuZml0X3NwYV9wbWVtX2d1aWQsIDE2KSApCisgICAgICAgICAgICBj b250aW51ZTsKKworICAgICAgICBwbWVtX3NhZGRyID0gc3BhLT5hZGRyZXNzOworICAgICAgICBw bWVtX2VhZGRyID0gcG1lbV9zYWRkciArIHNwYS0+bGVuZ3RoOworICAgICAgICBpZiAoIHBtZW1f c2FkZHIgPj0gZWFkZHIgfHwgcG1lbV9lYWRkciA8PSBzYWRkciApCisgICAgICAgICAgICBjb250 aW51ZTsKKworICAgICAgICBpZiAoIHJldF9zYWRkciA8IHBtZW1fc2FkZHIgKQorICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgIHJldF9zYWRkciA9IHBtZW1fc2FkZHI7CisgICAgICAgIHJl dF9lYWRkciA9IHBtZW1fZWFkZHI7CisgICAgfQorCisgICAgaWYgKCByZXRfc2FkZHIgPT0gcmV0 X2VhZGRyICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgKnJldF9zbWZuID0gcGFkZHJf dG9fcGZuKHJldF9zYWRkcik7CisgICAgKnJldF9lbWZuID0gcGFkZHJfdG9fcGZuKHJldF9lYWRk cik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FjcGkv YWN0YmwxLmggYi94ZW4vaW5jbHVkZS9hY3BpL2FjdGJsMS5oCmluZGV4IGUxOTkxMzYyZGMuLjk0 ZDhkNzc3NWMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FjcGkvYWN0YmwxLmgKKysrIGIveGVu L2luY2x1ZGUvYWNwaS9hY3RibDEuaApAQCAtNzEsNiArNzEsNyBAQAogI2RlZmluZSBBQ1BJX1NJ R19TQlNUICAgICAgICAgICAiU0JTVCIJLyogU21hcnQgQmF0dGVyeSBTcGVjaWZpY2F0aW9uIFRh YmxlICovCiAjZGVmaW5lIEFDUElfU0lHX1NMSVQgICAgICAgICAgICJTTElUIgkvKiBTeXN0ZW0g TG9jYWxpdHkgRGlzdGFuY2UgSW5mb3JtYXRpb24gVGFibGUgKi8KICNkZWZpbmUgQUNQSV9TSUdf U1JBVCAgICAgICAgICAgIlNSQVQiCS8qIFN5c3RlbSBSZXNvdXJjZSBBZmZpbml0eSBUYWJsZSAq LworI2RlZmluZSBBQ1BJX1NJR19ORklUICAgICAgICAgICAiTkZJVCIJLyogTlZESU1NIEZpcm13 YXJlIEludGVyZmFjZSBUYWJsZSAqLwogCiAvKgogICogQWxsIHRhYmxlcyBtdXN0IGJlIGJ5dGUt cGFja2VkIHRvIG1hdGNoIHRoZSBBQ1BJIHNwZWNpZmljYXRpb24sIHNpbmNlCkBAIC05MDMsNiAr OTA0LDQ4IEBAIHN0cnVjdCBhY3BpX21zY3RfcHJveGltaXR5IHsKIAl1NjQgbWVtb3J5X2NhcGFj aXR5OwkvKiBJbiBieXRlcyAqLwogfTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisg KiBORklUIC0gTlZESU1NIEludGVyZmFjZSBUYWJsZSAoQUNQSSA2LjArKQorICoJCSAgVmVyc2lv biAxCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RydWN0IGFjcGlfdGFibGVfbmZp dCB7CisJc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyIGhlYWRlcjsJLyogQ29tbW9uIEFDUEkgdGFi bGUgaGVhZGVyICovCisJdTMyIHJlc2VydmVkOwkJCQkJCS8qIFJlc2VydmVkLCBtdXN0IGJlIHpl cm8gKi8KK307CisKKy8qIFN1YnRhYmxlIGhlYWRlciBmb3IgTkZJVCAqLworCitzdHJ1Y3QgYWNw aV9uZml0X2hlYWRlciB7CisJdTE2IHR5cGU7CisJdTE2IGxlbmd0aDsKK307CisKKy8qIFZhbHVl cyBmb3Igc3VidGFibGUgdHlwZSBpbiBzdHJ1Y3QgYWNwaV9uZml0X2hlYWRlciAqLworZW51bSBh Y3BpX25maXRfdHlwZSB7CisJQUNQSV9ORklUX1RZUEVfU1lTVEVNX0FERFJFU1MgPSAwLAorCUFD UElfTkZJVF9UWVBFX01FTU9SWV9NQVAgPSAxLAorfTsKKworLyoKKyAqIE5GSVQgU3VidGFibGVz CisgKi8KKworLyogMDogU3lzdGVtIFBoeXNpY2FsIEFkZHJlc3MgUmFuZ2UgU3RydWN0dXJlICov CitzdHJ1Y3QgYWNwaV9uZml0X3N5c3RlbV9hZGRyZXNzIHsKKwlzdHJ1Y3QgYWNwaV9uZml0X2hl YWRlciBoZWFkZXI7CisJdTE2IHJhbmdlX2luZGV4OworCXUxNiBmbGFnczsKKwl1MzIgcmVzZXJ2 ZWQ7CQkvKiBSZXNldmVkLCBtdXN0IGJlIHplcm8gKi8KKwl1MzIgcHJveGltaXR5X2RvbWFpbjsK Kwl1OAlyYW5nZV9ndWlkWzE2XTsKKwl1NjQgYWRkcmVzczsKKwl1NjQgbGVuZ3RoOworCXU2NCBt ZW1vcnlfbWFwcGluZzsKK307CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0JT VCAtIFNtYXJ0IEJhdHRlcnkgU3BlY2lmaWNhdGlvbiBUYWJsZQpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUveGVuL2FjcGkuaCBiL3hlbi9pbmNsdWRlL3hlbi9hY3BpLmgKaW5kZXggOTQwOTM1MGYw NS4uMWJkOGY5ZjRlNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2FjcGkuaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4vYWNwaS5oCkBAIC0xODAsNCArMTgwLDExIEBAIHZvaWQgYWNwaV9yZWJv b3Qodm9pZCk7CiB2b2lkIGFjcGlfZG1hcl96YXAodm9pZCk7CiB2b2lkIGFjcGlfZG1hcl9yZWlu c3RhdGUodm9pZCk7CiAKKyNpZmRlZiBDT05GSUdfTlZESU1NX1BNRU0KK3ZvaWQgYWNwaV9uZml0 X2Jvb3RfaW5pdCh2b2lkKTsKK2Jvb2wgYWNwaV9uZml0X2Jvb3Rfc2VhcmNoX3BtZW0odW5zaWdu ZWQgbG9uZyBzbWZuLCB1bnNpZ25lZCBsb25nIGVtZm4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKnJldF9zbWZuLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nICpyZXRfZW1mbik7CisjZW5kaWYgLyogQ09ORklHX05W RElNTV9QTUVNICovCisKICNlbmRpZiAvKl9MSU5VWF9BQ1BJX0gqLwotLSAKMi4xNS4xCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==