From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boqun Feng Subject: [PATCH v2 09/17] xen: x86: add functions to populate and destroy EPC for domain Date: Mon, 4 Dec 2017 08:15:20 +0800 Message-ID: <20171204001528.1342-10-boqun.feng@intel.com> References: <20171204001528.1342-1-boqun.feng@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171204001528.1342-1-boqun.feng@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: Kevin Tian , Stefano Stabellini , Wei Liu , Jun Nakajima , George Dunlap , Andrew Cooper , Ian Jackson , =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= , Tim Deegan , kai.huang@linux.intel.com, Julien Grall , Jan Beulich , David Scott , Boqun Feng List-Id: xen-devel@lists.xenproject.org QWRkIHBlci1kb21haW4gc3RydWN0dXJlIHRvIHN0b3JlIFNHWCBwZXItZG9tYWluIGluZm8uIEN1 cnJlbnRseSBvbmx5IGRvbWFpbidzCkVQQyBiYXNlIGFuZCBzaXplIGFyZSBzdG9yZWQuIEFsc28g YWRkIG5ldyBmdW5jdGlvbnMgZm9yIGZ1cnRoZXIgdXNlOgogICAgLSBkb21haW5fcG9wdWxhdGVf ZXBjICAjIHBvcHVsYXRlIEVQQyB3aGVuIEVQQyBiYXNlICYgc2l6ZSBhcmUgbm90aWZpZWQuCiAg ICAtIGRvbWFpbl9yZXNldF9lcGMgICAgICMgUmVzZXQgZG9tYWluJ3MgRVBDIHRvIGJlIGludmFs aWQuIFVzZWQgd2hlbiBkb21haW4KICAgICAgICAgICAgICAgICAgICAgICAgICBnb2VzIHRvIFMz LVM1LCBvciBiZWluZyBkZXN0cm95ZWQuCiAgICAtIGRvbWFpbl9kZXN0cm95X2VwYyAgICMgZGVz dHJveSBhbmQgZnJlZSBkb21haW4ncyBFUEMuCgpGb3Igbm93LCB0aG9zZSBmdW5jdGlvbnMgb25s eSB3b3JrIGZvciBIVk0gZG9tYWluLCBhbmQgd2lsbCByZXR1cm4KLUVGQVVMVCBpZiBjYWxsaW5n IHRoZXNlIGZvciBub24tSFZNIGRvbWFpbi4KClNpZ25lZC1vZmYtYnk6IEthaSBIdWFuZyA8a2Fp Lmh1YW5nQGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQm9xdW4gRmVuZyA8Ym9xdW4u ZmVuZ0BpbnRlbC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgICAgICAgICB8 ICAgMyArCiB4ZW4vYXJjaC94ODYvc2d4LmMgICAgICAgICAgICAgICAgIHwgMzQwICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3Zt eC92bWNzLmggfCAgIDIgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9zZ3guaCAgICAgICAgICB8ICAx MyArKwogNCBmaWxlcyBjaGFuZ2VkLCAzNTggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKaW5k ZXggYjE4Y2NlYWI1NWIyLi45MmZiODViMTNhMGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vdm14L3ZteC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCkBAIC00MTcsNiAr NDE3LDkgQEAgc3RhdGljIGludCB2bXhfZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAq ZCkKIAogc3RhdGljIHZvaWQgdm14X2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCiB7 CisgICAgaWYgKCBkb21haW5fZXBjX3BvcHVsYXRlZChkKSApCisgICAgICAgIGRvbWFpbl9kZXN0 cm95X2VwYyhkKTsKKwogICAgIGlmICggIWhhc192bGFwaWMoZCkgKQogICAgICAgICByZXR1cm47 CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zZ3guYyBiL3hlbi9hcmNoL3g4Ni9zZ3guYwpp bmRleCA5NDA5YjA0MWU0ZjcuLjBjODk4YzMwODZjYiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L3NneC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zZ3guYwpAQCAtMjUsNiArMjUsOCBAQAogI2luY2x1 ZGUgPHhlbi9lcnJuby5oPgogI2luY2x1ZGUgPHhlbi9tbS5oPgogI2luY2x1ZGUgPGFzbS9zZ3gu aD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDxhc20vcDJtLmg+CiAKIHN0cnVj dCBzZ3hfY3B1aW5mbyBfX3JlYWRfbW9zdGx5IGJvb3Rfc2d4X2NwdWRhdGE7CiAKQEAgLTM4LDYg KzQwLDM0NCBAQCBib29sZWFuX3BhcmFtKCJzZ3giLCBvcHRfc2d4X2VuYWJsZWQpOwogCiBzdGF0 aWMgdm9pZCAqZXBjX2Jhc2VfdmFkZHIgPSBOVUxMOwogCitzdGF0aWMgdm9pZCAqbWFwX2VwY19w YWdlX3RvX3hlbihzdHJ1Y3QgcGFnZV9pbmZvICpwZykKK3sKKyAgICBCVUdfT04oIWVwY19iYXNl X3ZhZGRyKTsKKworICAgIHJldHVybiAodm9pZCAqKSgodW5zaWduZWQgbG9uZyllcGNfYmFzZV92 YWRkciArCisgICAgICAgICAgICAgICAgICAgICgocGFnZV90b19tZm4ocGcpIC0gZXBjX2Jhc2Vf bWZuKSA8PCBQQUdFX1NISUZUKSk7Cit9CisKKy8qIEVOQ0xTIG9wY29kZSAqLworI2RlZmluZSBF TkNMUyAgIC5ieXRlIDB4MGYsIDB4MDEsIDB4Y2YKKworLyoKKyAqIEVOQ0xTIGxlYWYgZnVuY3Rp b25zCisgKgorICogSG93ZXZlciBjdXJyZW50bHkgd2Ugb25seSBuZWVkcyBFUkVNT1ZFLi4KKyAq LworZW51bSB7CisgICAgRUNSRUFURSA9IDB4MCwKKyAgICBFQUREICAgID0gMHgxLAorICAgIEVJ TklUICAgPSAweDIsCisgICAgRVJFTU9WRSA9IDB4MywKKyAgICBFREdCUkQgID0gMHg0LAorICAg IEVER0JXUiAgPSAweDUsCisgICAgRUVYVEVORCA9IDB4NiwKKyAgICBFTERVICAgID0gMHg4LAor ICAgIEVCTE9DSyAgPSAweDksCisgICAgRVBBICAgICA9IDB4QSwKKyAgICBFV0IgICAgID0gMHhC LAorICAgIEVUUkFDSyAgPSAweEMsCisgICAgRUFVRyAgICA9IDB4RCwKKyAgICBFTU9EUFIgID0g MHhFLAorICAgIEVNT0RUICAgPSAweEYsCit9OworCisvKgorICogRU5DTFMgZXJyb3IgY29kZQor ICoKKyAqIEN1cnJlbnRseSB3ZSBvbmx5IG5lZWQgU0dYX0NISUxEX1BSRVNFTlQKKyAqLworI2Rl ZmluZSBTR1hfQ0hJTERfUFJFU0VOVCAgIDEzCisKK3N0YXRpYyBpbmxpbmUgaW50IF9fZW5jbHMo dW5zaWduZWQgbG9uZyByYXgsIHVuc2lnbmVkIGxvbmcgcmJ4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIHJjeCwgdW5zaWduZWQgbG9uZyByZHgpCit7CisgICAgaW50 IHJldDsKKworICAgIGFzbSB2b2xhdGlsZSAoICJFTkNMUztcblx0IgorICAgICAgICAgICAgOiAi PWEiIChyZXQpCisgICAgICAgICAgICA6ICJhIiAocmF4KSwgImIiIChyYngpLCAiYyIgKHJjeCks ICJkIiAocmR4KQorICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIik7CisKKyAgICByZXR1cm4g cmV0OworfQorCitzdGF0aWMgaW5saW5lIGludCBfX2VyZW1vdmUodm9pZCAqZXBjKQoreworICAg IHVuc2lnbmVkIGxvbmcgcmJ4ID0gMCwgcmR4ID0gMDsKKworICAgIHJldHVybiBfX2VuY2xzKEVS RU1PVkUsIHJieCwgKHVuc2lnbmVkIGxvbmcpZXBjLCByZHgpOworfQorCitzdGF0aWMgaW50IHNn eF9lcmVtb3ZlKHN0cnVjdCBwYWdlX2luZm8gKmVwZykKK3sKKyAgICB2b2lkICphZGRyID0gbWFw X2VwY19wYWdlX3RvX3hlbihlcGcpOworICAgIGludCByZXQ7CisKKyAgICBCVUdfT04oIWFkZHIp OworCisgICAgcmV0ID0gIF9fZXJlbW92ZShhZGRyKTsKKworICAgIHJldHVybiByZXQ7Cit9CisK K3N0cnVjdCBzZ3hfZG9tYWluICp0b19zZ3goc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBpZiAo IWlzX2h2bV9kb21haW4oZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVsc2UKKyAgICAg ICAgcmV0dXJuICZkLT5hcmNoLmh2bV9kb21haW4udm14LnNneDsKK30KKworYm9vbCBkb21haW5f ZXBjX3BvcHVsYXRlZChzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIEJVR19PTighdG9fc2d4KGQp KTsKKworICAgIHJldHVybiAhIXRvX3NneChkKS0+ZXBjX2Jhc2VfcGZuOworfQorCisvKgorICog UmVzZXQgZG9tYWluJ3MgRVBDIHdpdGggRVJFTU9WRS4gZnJlZV9lcGMgaW5kaWNhdGVzIHdoZXRo ZXIgdG8gZnJlZSBFUEMKKyAqIHBhZ2VzIGR1cmluZyByZXNldC4gVGhpcyB3aWxsIGJlIGNhbGxl ZCB3aGVuIGRvbWFpbiBnb2VzIGludG8gUzMtUzUgc3RhdGUKKyAqICh3aXRoIGZyZWVfZXBjIGJl aW5nIGZhbHNlKSwgYW5kIHdoZW4gZG9tYWluIGlzIGRlc3Ryb3llZCAod2l0aCBmcmVlX2VwYwor ICogYmVpbmcgdHJ1ZSkuCisgKgorICogSXQgaXMgcG9zc2libGUgdGhhdCBFUkVNT1ZFIHdpbGwg YmUgY2FsbGVkIGZvciBTRUNTIHdoZW4gaXQgc3RpbGwgaGFzCisgKiBjaGlsZHJlbiBwcmVzZW50 LCBpbiB3aGljaCBjYXNlIFNHWF9DSElMRF9QUkVTRU5UIHdpbGwgYmUgcmV0dXJuZWQuIEluIHRo aXMKKyAqIGNhc2UsIFNFQ1MgcGFnZSBpcyBrZXB0IHRvIGEgdG1wIGxpc3QgYW5kIGFmdGVyIGFs bCBFUEMgcGFnZXMgaGF2ZSBiZWVuCisgKiBjYWxsZWQgd2l0aCBFUkVNT1ZFLCB3ZSBjYWxsIEVS RU1PVkUgZm9yIGFsbCB0aGUgU0VDUyBwYWdlcyBhZ2FpbiwgYW5kIHRoaXMKKyAqIHRpbWUgU0dY X0NISUxEX1BSRVNFTlQgc2hvdWxkIG5ldmVyIG9jY3VyIGFzIGFsbCBjaGlsZHJlbiBzaG91bGQg aGF2ZSBiZWVuCisgKiByZW1vdmVkLgorICoKKyAqIElmIHVuZXhwZWN0ZWQgZXJyb3IgcmV0dXJu ZWQgYnkgRVJFTU9WRSwgaXQgbWVhbnMgdGhlIEVQQyBwYWdlIGJlY29tZXMKKyAqIGFibm9ybWFs LCBzbyBpdCB3aWxsIG5vdCBiZSBmcmVlZCBldmVuIGZyZWVfZXBjIGlzIHRydWUsIGFzIGZ1cnRo ZXIgdXNlIG9mCisgKiB0aGlzIEVQQyBjYW4gY2F1c2UgdW5leHBlY3RlZCBlcnJvciwgcG90ZW50 aWFsbHkgZGFtYWdpbmcgb3RoZXIgZG9tYWlucy4KKyAqLworc3RhdGljIGludCBfX2RvbWFpbl9y ZXNldF9lcGMoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBlcGNfYmFzZV9wZm4sCisg ICAgICAgIHVuc2lnbmVkIGxvbmcgZXBjX25wYWdlcywgYm9vbCBmcmVlX2VwYykKK3sKKyAgICBz dHJ1Y3QgcGFnZV9saXN0X2hlYWQgc2Vjc19saXN0OworICAgIHN0cnVjdCBwYWdlX2luZm8gKmVw ZywgKnRtcDsKKyAgICB1bnNpZ25lZCBsb25nIGk7CisgICAgaW50IHJldCA9IDA7CisKKyAgICBJ TklUX1BBR0VfTElTVF9IRUFEKCZzZWNzX2xpc3QpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBl cGNfbnBhZ2VzOyBpKysgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBnZm47CisgICAg ICAgIG1mbl90IG1mbjsKKyAgICAgICAgcDJtX3R5cGVfdCB0OworICAgICAgICBpbnQgcjsKKwor ICAgICAgICBnZm4gPSBpICsgZXBjX2Jhc2VfcGZuOworICAgICAgICBtZm4gPSBnZXRfZ2ZuX3F1 ZXJ5KGQsIGdmbiwgJnQpOworICAgICAgICBpZiAoIHVubGlrZWx5KG1mbl9lcShtZm4sIElOVkFM SURfTUZOKSkgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoIkRvbWFpbiAlZDogUmVz ZXQgRVBDIGVycm9yOiBpbnZhbGlkIE1GTiBmb3IgZ2ZuIDB4JWx4XG4iLAorICAgICAgICAgICAg ICAgICAgICBkLT5kb21haW5faWQsIGdmbik7CisgICAgICAgICAgICBwdXRfZ2ZuKGQsIGdmbik7 CisgICAgICAgICAgICByZXQgPSAtRUZBVUxUOworICAgICAgICAgICAgY29udGludWU7CisgICAg ICAgIH0KKworICAgICAgICBpZiAoIHVubGlrZWx5KCFwMm1faXNfZXBjKHQpKSApCisgICAgICAg IHsKKyAgICAgICAgICAgIHByaW50aygiRG9tYWluICVkOiBSZXNldCBFUEMgZXJyb3I6IChnZm4g MHglbHgsIG1mbiAweCVseCk6ICIgCisgICAgICAgICAgICAgICAgICAgICJpcyBub3QgcDJtX2Vw Yy5cbiIsIGQtPmRvbWFpbl9pZCwgZ2ZuLCBtZm5feChtZm4pKTsKKyAgICAgICAgICAgIHB1dF9n Zm4oZCwgZ2ZuKTsKKyAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7CisgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsKKworICAgICAgICBl cGcgPSBtZm5fdG9fcGFnZShtZm5feChtZm4pKTsKKworICAgICAgICAvKiBFUkVNT1ZFIHRoZSBF UEMgcGFnZSB0byBtYWtlIGl0IGludmFsaWQgKi8KKyAgICAgICAgciA9IHNneF9lcmVtb3ZlKGVw Zyk7CisgICAgICAgIGlmICggciA9PSBTR1hfQ0hJTERfUFJFU0VOVCApCisgICAgICAgIHsKKyAg ICAgICAgICAgIHBhZ2VfbGlzdF9hZGRfdGFpbChlcGcsICZzZWNzX2xpc3QpOworICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIHIgKQorICAgICAgICB7Cisg ICAgICAgICAgICBwcmludGsoIkRvbWFpbiAlZDogUmVzZXQgRVBDIGVycm9yOiAoZ2ZuIDB4JWx4 LCBtZm4gMHglbHgpOiAiCisgICAgICAgICAgICAgICAgICAgICJFUkVNT1ZFIHJldHVybnMgJWRc biIsIGQtPmRvbWFpbl9pZCwgZ2ZuLCBtZm5feChtZm4pLCByKTsKKyAgICAgICAgICAgIHJldCA9 IHI7CisgICAgICAgICAgICBpZiAoIGZyZWVfZXBjICkKKyAgICAgICAgICAgICAgICBwcmludGso IldBUk5JTkc6IEVQQyAobWZuIDB4JWx4KSBiZWNvbWVzIGFibm9ybWFsLiAiCisgICAgICAgICAg ICAgICAgICAgICAgICAiUmVtb3ZlIGl0IGZyb20gdXNlYWJsZSBFUEMuIiwgbWZuX3gobWZuKSk7 CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggZnJlZV9l cGMgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBJZiBFUEMgcGFnZSBpcyBnb2luZyB0byBi ZSBmcmVlZCwgdGhlbiBhbHNvIHJlbW92ZSB0aGUgbWFwcGluZyAqLworICAgICAgICAgICAgaWYg KCBjbGVhcl9lcGNfcDJtX2VudHJ5KGQsIGdmbiwgbWZuKSApCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgcHJpbnRrKCJEb21haW4gJWQ6IFJlc2V0IEVQQyBlcnJvcjogKGdmbiAweCVs eCwgbWZuIDB4JWx4KTogIgorICAgICAgICAgICAgICAgICAgICAgICAgImNsZWFyIHAybSBlbnRy eSBmYWlsZWQuXG4iLCBkLT5kb21haW5faWQsIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAg IG1mbl94KG1mbikpOworICAgICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICBmcmVlX2VwY19wYWdlKGVwZyk7CisgICAgICAgIH0KKyAgICB9CisK KyAgICBwYWdlX2xpc3RfZm9yX2VhY2hfc2FmZShlcGcsIHRtcCwgJnNlY3NfbGlzdCkKKyAgICB7 CisgICAgICAgIGludCByOworCisgICAgICAgIHIgPSBzZ3hfZXJlbW92ZShlcGcpOworICAgICAg ICBpZiAoIHIgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoIkRvbWFpbiAlZDogUmVz ZXQgRVBDIGVycm9yOiBtZm4gMHglbHg6ICIKKyAgICAgICAgICAgICAgICAgICAgIkVSRU1PVkUg cmV0dXJucyAlZCBmb3IgU0VDUyBwYWdlXG4iLAorICAgICAgICAgICAgICAgICAgICBkLT5kb21h aW5faWQsIHBhZ2VfdG9fbWZuKGVwZyksIHIpOworICAgICAgICAgICAgcmV0ID0gcjsKKyAgICAg ICAgICAgIHBhZ2VfbGlzdF9kZWwoZXBnLCAmc2Vjc19saXN0KTsKKworICAgICAgICAgICAgaWYg KCBmcmVlX2VwYyApCisgICAgICAgICAgICAgICAgcHJpbnRrKCJXQVJOSU5HOiBFUEMgKG1mbiAw eCVseCkgYmVjb21lcyBhYm5vcm1hbC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIlJlbW92 ZSBpdCBmcm9tIHVzZWFibGUgRVBDLiIsCisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlX3Rv X21mbihlcGcpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg aWYgKCBmcmVlX2VwYyApCisgICAgICAgICAgICBmcmVlX2VwY19wYWdlKGVwZyk7CisgICAgfQor CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgX19kb21haW5fdW5wb3B1bGF0ZV9l cGMoc3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAgdW5zaWduZWQgbG9uZyBlcGNfYmFzZV9wZm4s IHVuc2lnbmVkIGxvbmcgcG9wdWxhdGVkX25wYWdlcykKK3sKKyAgICB1bnNpZ25lZCBsb25nIGk7 CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IHBvcHVsYXRlZF9ucGFnZXM7IGkrKyApCisgICAgewor ICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICplcGc7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2Zu OworICAgICAgICBtZm5fdCBtZm47CisgICAgICAgIHAybV90eXBlX3QgdDsKKworICAgICAgICBn Zm4gPSBpICsgZXBjX2Jhc2VfcGZuOworICAgICAgICBtZm4gPSBnZXRfZ2ZuX3F1ZXJ5KGQsIGdm biwgJnQpOworICAgICAgICBpZiAoIHVubGlrZWx5KG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSkg KQorICAgICAgICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogX19kb21haW5fdW5w b3B1bGF0ZV9lcGMgb25seSBjYWxsZWQgd2hlbiBjcmVhdGluZyB0aGUgZG9tYWluIG9uCisgICAg ICAgICAgICAgKiBmYWlsdXJlLCB0aGVyZWZvcmUgd2UgY2FuIGp1c3QgaWdub3JlIHRoaXMgZXJy b3IuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHByaW50aygiJXM6IERvbWFpbiAldSBn Zm4gMHglbHggcmV0dXJucyBpbnZhbGlkIG1mblxuIiwgX19mdW5jX18sCisgICAgICAgICAgICAg ICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuKTsKKyAgICAgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsK KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCB1bmxpa2Vs eSghcDJtX2lzX2VwYyh0KSkgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoIiVzOiBE b21haW4gJXUgZ2ZuIDB4JWx4IHJldHVybnMgbm9uLUVQQyBwMm0gdHlwZTogJWRcbiIsCisgICAg ICAgICAgICAgICAgICAgIF9fZnVuY19fLCBkLT5kb21haW5faWQsIGdmbiwgKGludCl0KTsKKyAg ICAgICAgICAgIHB1dF9nZm4oZCwgZ2ZuKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg ICB9CisKKyAgICAgICAgcHV0X2dmbihkLCBnZm4pOworCisgICAgICAgIGlmICggY2xlYXJfZXBj X3AybV9lbnRyeShkLCBnZm4sIG1mbikgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGso ImNsZWFyX2VwY19wMm1fZW50cnkgZmFpbGVkOiBnZm4gMHglbHgsIG1mbiAweCVseFxuIiwKKyAg ICAgICAgICAgICAgICAgICAgZ2ZuLCBtZm5feChtZm4pKTsKKyAgICAgICAgICAgIGNvbnRpbnVl OworICAgICAgICB9CisKKyAgICAgICAgZXBnID0gbWZuX3RvX3BhZ2UobWZuX3gobWZuKSk7Cisg ICAgICAgIGZyZWVfZXBjX3BhZ2UoZXBnKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgX19kb21h aW5fcG9wdWxhdGVfZXBjKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZXBjX2Jhc2Vf cGZuLAorICAgICAgICB1bnNpZ25lZCBsb25nIGVwY19ucGFnZXMpCit7CisgICAgdW5zaWduZWQg bG9uZyBpOworICAgIGludCByZXQ7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGVwY19ucGFnZXM7 IGkrKyApCisgICAgeworICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICplcGcgPSBhbGxvY19lcGNf cGFnZSgpOworICAgICAgICB1bnNpZ25lZCBsb25nIG1mbjsKKworICAgICAgICBpZiAoICFlcGcg KQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoIiVzOiBPdXQgb2YgRVBDXG4iLCBfX2Z1 bmNfXyk7CisgICAgICAgICAgICByZXQgPSAtRU5PTUVNOworICAgICAgICAgICAgZ290byBlcnI7 CisgICAgICAgIH0KKworICAgICAgICBtZm4gPSBwYWdlX3RvX21mbihlcGcpOworICAgICAgICBy ZXQgPSBzZXRfZXBjX3AybV9lbnRyeShkLCBpICsgZXBjX2Jhc2VfcGZuLCBfbWZuKG1mbikpOwor ICAgICAgICBpZiAoIHJldCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50aygiJXM6IHNl dF9lcGNfcDJtX2VudHJ5IGZhaWxlZCB3aXRoICVkOiBnZm4gMHglbHgsICIKKyAgICAgICAgICAg ICAgICAgICAgIm1mbiAweCVseFxuIiwgX19mdW5jX18sIHJldCwgaSArIGVwY19iYXNlX3Bmbiwg bWZuKTsKKyAgICAgICAgICAgIGZyZWVfZXBjX3BhZ2UoZXBnKTsKKyAgICAgICAgICAgIGdvdG8g ZXJyOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7CisKK2VycjoKKyAgICBfX2Rv bWFpbl91bnBvcHVsYXRlX2VwYyhkLCBlcGNfYmFzZV9wZm4sIGkpOworICAgIHJldHVybiByZXQ7 Cit9CisKK2ludCBkb21haW5fcG9wdWxhdGVfZXBjKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZXBjX2Jhc2VfcGZuLAorICAgICAgICB1bnNpZ25lZCBsb25nIGVwY19ucGFnZXMpCit7 CisgICAgc3RydWN0IHNneF9kb21haW4gKnNneCA9IHRvX3NneChkKTsKKyAgICBpbnQgcmV0Owor CisgICAgaWYgKCAhc2d4ICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICBpZiAoIGRv bWFpbl9lcGNfcG9wdWxhdGVkKGQpICkKKyAgICAgICAgcmV0dXJuIC1FQlVTWTsKKworICAgIGlm ICggIWVwY19iYXNlX3BmbiB8fCAhZXBjX25wYWdlcyApCisgICAgICAgIHJldHVybiAtRUlOVkFM OworCisgICAgaWYgKCAocmV0ID0gX19kb21haW5fcG9wdWxhdGVfZXBjKGQsIGVwY19iYXNlX3Bm biwgZXBjX25wYWdlcykpICkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHNneC0+ZXBjX2Jh c2VfcGZuID0gZXBjX2Jhc2VfcGZuOworICAgIHNneC0+ZXBjX25wYWdlcyA9IGVwY19ucGFnZXM7 CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqCisqCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVy bnMgZXJyb3IgaW1tZWRpYXRlbHkgaWYgdGhlcmUncyBhbnkgdW5leHBlY3RlZCBlcnJvcgorICog ZHVyaW5nIHRoaXMgcHJvY2Vzcy4KKyAqLworaW50IGRvbWFpbl9yZXNldF9lcGMoc3RydWN0IGRv bWFpbiAqZCwgYm9vbCBmcmVlX2VwYykKK3sKKyAgICBzdHJ1Y3Qgc2d4X2RvbWFpbiAqc2d4ID0g dG9fc2d4KGQpOworCisgICAgaWYgKCAhc2d4ICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisK KyAgICBpZiAoICFkb21haW5fZXBjX3BvcHVsYXRlZChkKSApCisgICAgICAgIHJldHVybiAwOwor CisgICAgcmV0dXJuIF9fZG9tYWluX3Jlc2V0X2VwYyhkLCBzZ3gtPmVwY19iYXNlX3Bmbiwgc2d4 LT5lcGNfbnBhZ2VzLCBmcmVlX2VwYyk7Cit9CisKK2ludCBkb21haW5fZGVzdHJveV9lcGMoc3Ry dWN0IGRvbWFpbiAqZCkKK3sKKyAgICByZXR1cm4gZG9tYWluX3Jlc2V0X2VwYyhkLCB0cnVlKTsK K30KKwogc3RhdGljIHZvaWQgX19kZXRlY3Rfc2d4KHN0cnVjdCBzZ3hfY3B1aW5mbyAqc2d4aW5m bykKIHsKICAgICB1MzIgZWF4LCBlYngsIGVjeCwgZWR4OwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vdm14L3ZtY3MuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92 bWNzLmgKaW5kZXggZDAyOTNiMWEzNjIwLi40NGZmNGYwYTExM2YgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bWNzLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vdm14L3ZtY3MuaApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSA8YXNtL2h2bS9pby5o PgogI2luY2x1ZGUgPGlycV92ZWN0b3JzLmg+CisjaW5jbHVkZSA8YXNtL3NneC5oPgogCiBleHRl cm4gdm9pZCB2bWNzX2R1bXBfdmNwdShzdHJ1Y3QgdmNwdSAqdik7CiBleHRlcm4gdm9pZCBzZXR1 cF92bWNzX2R1bXAodm9pZCk7CkBAIC02Myw2ICs2NCw3IEBAIHN0cnVjdCB2bXhfZG9tYWluIHsK ICAgICB1bnNpZ25lZCBsb25nIGFwaWNfYWNjZXNzX21mbjsKICAgICAvKiBWTVhfRE9NQUlOXyog Ki8KICAgICB1bnNpZ25lZCBpbnQgc3RhdHVzOworICAgIHN0cnVjdCBzZ3hfZG9tYWluIHNneDsK IH07CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3NneC5oIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9zZ3guaAppbmRleCA4ZmVkNjY0ZmExNTQuLjg1NWU3ZTYzODc0MyAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9zZ3guaAorKysgYi94ZW4vaW5jbHVkZS9hc20t eDg2L3NneC5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CiAjaW5j bHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8 cHVibGljL2h2bS9wYXJhbXMuaD4gICAvKiBIVk1fUEFSQU1fU0dYICovCiAKICNkZWZpbmUgU0dY X0NQVUlEIDB4MTIKIApAQCAtNjEsNCArNjIsMTYgQEAgdm9pZCBkaXNhYmxlX3NneCh2b2lkKTsK IHN0cnVjdCBwYWdlX2luZm8gKmFsbG9jX2VwY19wYWdlKHZvaWQpOwogdm9pZCBmcmVlX2VwY19w YWdlKHN0cnVjdCBwYWdlX2luZm8gKmVwZyk7CiAKK3N0cnVjdCBzZ3hfZG9tYWluIHsKKyAgICB1 bnNpZ25lZCBsb25nIGVwY19iYXNlX3BmbjsKKyAgICB1bnNpZ25lZCBsb25nIGVwY19ucGFnZXM7 Cit9OworCitzdHJ1Y3Qgc2d4X2RvbWFpbiAqdG9fc2d4KHN0cnVjdCBkb21haW4gKmQpOworYm9v bCBkb21haW5fZXBjX3BvcHVsYXRlZChzdHJ1Y3QgZG9tYWluICpkKTsKK2ludCBkb21haW5fcG9w dWxhdGVfZXBjKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZXBjX2Jhc2VfcGZuLAor ICAgICAgICB1bnNpZ25lZCBsb25nIGVwY19ucGFnZXMpOworaW50IGRvbWFpbl9yZXNldF9lcGMo c3RydWN0IGRvbWFpbiAqZCwgYm9vbCBmcmVlX2VwYyk7CitpbnQgZG9tYWluX2Rlc3Ryb3lfZXBj KHN0cnVjdCBkb21haW4gKmQpOworCiAjZW5kaWYgIC8qIF9fQVNNX1g4Nl9TR1hfSF9fICovCi0t IAoyLjE1LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs