From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: [PATCH v2 3/3] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server Date: Thu, 31 Mar 2016 18:53:38 +0800 Message-ID: <1459421618-5991-4-git-send-email-yu.c.zhang@linux.intel.com> References: <1459421618-5991-1-git-send-email-yu.c.zhang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1459421618-5991-1-git-send-email-yu.c.zhang@linux.intel.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: Kevin Tian , Keir Fraser , Jun Nakajima , George Dunlap , Andrew Cooper , Tim Deegan , Paul Durrant , zhiyuan.lv@intel.com, Jan Beulich List-Id: xen-devel@lists.xenproject.org QSBuZXcgSFZNT1AgLSBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyLCBpcyBhZGRl ZCB0bwpsZXQgb25lIGlvcmVxIHNlcnZlciBjbGFpbS9kaXNjbGFpbSBpdHMgcmVzcG9uc2liaWxp dHkgZm9yIHRoZQpoYW5kbGluZyBvZiBndWVzdCBwYWdlcyB3aXRoIHAybSB0eXBlIHAybV9pb3Jl cV9zZXJ2ZXIuIFVzZXJzCm9mIHRoaXMgSFZNT1AgY2FuIHNwZWNpZnkgd2hldGhlciB0aGUgcDJt X2lvcmVxX3NlcnZlciBpcyBzdXBwb3NlZAp0byBoYW5kbGUgd3JpdGUgYWNjZXNzZXMgb3IgcmVh ZCBvbmVzIG9yIGJvdGggaW4gYSBwYXJhbWV0ZXIgbmFtZWQKZmxhZ3MuIEZvciBub3csIHdlIG9u bHkgc3VwcG9ydCBvbmUgaW9yZXEgc2VydmVyIGZvciB0aGlzIHAybSB0eXBlLApzbyBvbmNlIGFu IGlvcmVxIHNlcnZlciBoYXMgY2xhaW1lZCBpdHMgb3duZXJzaGlwLCBzdWJzZXF1ZW50IGNhbGxz Cm9mIHRoZSBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIHdpbGwgZmFpbC4gVXNl cnMgY2FuIGFsc28KZGlzY2xhaW0gdGhlIG93bmVyc2hpcCBvZiBndWVzdCByYW0gcGFnZXMgd2l0 aCB0aGlzIHAybSB0eXBlLCBieQp0cmlnZ2VyaW5nIHRoaXMgbmV3IEhWTU9QLCB3aXRoIGlvcmVx IHNlcnZlciBpZCBzZXQgdG8gdGhlIGN1cnJlbnQKb3duZXIncyBhbmQgZmxhZ3MgcGFyYW1ldGVy IHNldCB0byAwLgoKRm9yIG5vdywgYm90aCBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2Vy dmVyIGFuZCBwMm1faW9yZXFfc2VydmVyCmFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFZNcyB3aXRo IEhBUCBlbmFibGVkLgoKTm90ZSB0aGF0IGZsYWdzIHBhcmFtZXRlcihpZiBub3QgMCkgb2YgdGhp cyBIVk1PUCBvbmx5IGluZGljYXRlcwp3aGljaCBraW5kIG9mIG1lbW9yeSBhY2Nlc3NlcyBhcmUg dG8gYmUgZm9yd2FyZGVkIHRvIGFuIGlvcmVxIHNlcnZlciwKaXQgaGFzIGltcGFjdCBvbiB0aGUg YWNjZXNzIHJpZ2h0cyBvZiBndWVzdCByYW0gcGFnZXMsIGJ1dCBhcmUgbm90CnRoZSBzYW1lLiBE dWUgdG8gaGFyZHdhcmUgbGltaXRhdGlvbnMsIGlmIG9ubHkgd3JpdGUgb3BlcmF0aW9ucyBhcmUK dG8gYmUgZm9yd2FyZGVkLCByZWFkIG9uZXMgd2lsbCBiZSBwZXJmb3JtZWQgYXQgZnVsbCBzcGVl ZCwgd2l0aApubyBoeXBlcnZpc29yIGludGVydmVudGlvbi4gQnV0IGlmIHJlYWQgb25lcyBhcmUg dG8gYmUgZm9yd2FyZGVkIHRvCmFuIGlvcmVxIHNlcnZlciwgd3JpdGVzIHdpbGwgaW5ldml0YWJs eSBiZSB0cmFwcGVkIGludG8gaHlwZXJ2aXNvciwKd2hpY2ggbWVhbnMgc2lnbmlmaWNhbnQgcGVy Zm9ybWFuY2UgaW1wYWN0LgoKQWxzbyBub3RlIHRoYXQgdGhpcyBIVk1PUF9tYXBfbWVtX3R5cGVf dG9faW9yZXFfc2VydmVyIHdpbGwgbm90CmNoYW5nZSB0aGUgcDJtIHR5cGUgb2YgYW55IGd1ZXN0 IHJhbSBwYWdlLCB1bnRpbCBIVk1PUF9zZXRfbWVtX3R5cGUKaXMgdHJpZ2dlcmVkLiBTbyBub3Jt YWxseSB0aGUgc3RlcHMgc2hvdWxkIGJlIHRoZSBiYWNrZW5kIGRyaXZlcgpmaXJzdCBjbGFpbXMg aXRzIG93bmVyc2hpcCBvZiBndWVzdCByYW0gcGFnZXMgd2l0aCBwMm1faW9yZXFfc2VydmVyCnR5 cGUsIGFuZCB0aGVuIHNldHMgdGhlIG1lbW9yeSB0eXBlIHRvIHAybV9pb3JlcV9zZXJ2ZXIgZm9y IHNwZWNpZmllZApndWVzdCByYW0gcGFnZXMuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQg PHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpTaWduZWQtb2ZmLWJ5OiBZdSBaaGFuZyA8eXUuYy56 aGFuZ0BsaW51eC5pbnRlbC5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzog SmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3 LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUu Y2l0cml4LmNvbT4KQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6 IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpDYzogVGltIERlZWdhbiA8dGltQHhl bi5vcmc+Ci0tLQogeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAgfCAxMjUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYvaHZtL2h2bS5j ICAgICAgICAgICB8ICA5NSArKysrKysrKysrKysrKysrKysrKysrKysrKystLQogeGVuL2FyY2gv eDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMgfCAgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0 LmMgICAgICAgIHwgIDE0ICsrKystCiB4ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgICAgICAgICB8 ICAyNSArKysrKy0tLQogeGVuL2FyY2gveDg2L21tL3AybS5jICAgICAgICAgICAgfCAgODIgKysr KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jICAg fCAgIDMgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggICAgICAgIHwgIDM2ICsrKysrKysr Ky0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oICB8ICAzNyArKysrKysrKysrKysK IDkgZmlsZXMgY2hhbmdlZCwgMzk1IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9l bXVsYXRlLmMKaW5kZXggZGRjODAwNy4uNzdhNDc5MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKQEAgLTk0LDEx ICs5NCw2OSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9pb19oYW5kbGVyIG51bGxfaGFuZGxl ciA9IHsKICAgICAub3BzID0gJm51bGxfb3BzCiB9OwogCitzdGF0aWMgaW50IG1lbV9yZWFkKGNv bnN0IHN0cnVjdCBodm1faW9faGFuZGxlciAqaW9faGFuZGxlciwKKyAgICAgICAgICAgICAgICAg ICAgdWludDY0X3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSwKKyAg ICAgICAgICAgICAgICAgICAgdWludDY0X3QgKmRhdGEpCit7CisgICAgc3RydWN0IGRvbWFpbiAq Y3VycmQgPSBjdXJyZW50LT5kb21haW47CisgICAgdW5zaWduZWQgbG9uZyBnbWZuID0gcGFkZHJf dG9fcGZuKGFkZHIpOworICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gYWRkciAmIH5QQUdFX01B U0s7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGN1cnJk LCBnbWZuLCBOVUxMLCBQMk1fVU5TSEFSRSk7CisgICAgdWludDhfdCAqcDsKKworICAgIGlmICgg IXBhZ2UgKQorICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisKKyAgICBwID0g X19tYXBfZG9tYWluX3BhZ2UocGFnZSk7CisgICAgcCArPSBvZmZzZXQ7CisgICAgbWVtY3B5KGRh dGEsIHAsIHNpemUpOworCisgICAgdW5tYXBfZG9tYWluX3BhZ2UocCk7CisgICAgcHV0X3BhZ2Uo cGFnZSk7CisKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQorCitzdGF0aWMgaW50IG1lbV93 cml0ZShjb25zdCBzdHJ1Y3QgaHZtX2lvX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGEpCit7CisgICAgc3RydWN0IGRv bWFpbiAqY3VycmQgPSBjdXJyZW50LT5kb21haW47CisgICAgdW5zaWduZWQgbG9uZyBnbWZuID0g cGFkZHJfdG9fcGZuKGFkZHIpOworICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gYWRkciAmIH5Q QUdFX01BU0s7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2Zu KGN1cnJkLCBnbWZuLCBOVUxMLCBQMk1fVU5TSEFSRSk7CisgICAgdWludDhfdCAqcDsKKworICAg IGlmICggIXBhZ2UgKQorICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisKKyAg ICBwID0gX19tYXBfZG9tYWluX3BhZ2UocGFnZSk7CisgICAgcCArPSBvZmZzZXQ7CisgICAgbWVt Y3B5KHAsICZkYXRhLCBzaXplKTsKKworICAgIHVubWFwX2RvbWFpbl9wYWdlKHApOworICAgIHB1 dF9wYWdlKHBhZ2UpOworCisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBodm1faW9fb3BzIG1lbV9vcHMgPSB7CisgICAgLnJlYWQgPSBtZW1fcmVhZCwK KyAgICAud3JpdGUgPSBtZW1fd3JpdGUKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHZtX2lv X2hhbmRsZXIgbWVtX2hhbmRsZXIgPSB7CisgICAgLm9wcyA9ICZtZW1fb3BzCit9OworCiBzdGF0 aWMgaW50IGh2bWVtdWxfZG9faW8oCiAgICAgYm9vbF90IGlzX21taW8sIHBhZGRyX3QgYWRkciwg dW5zaWduZWQgbG9uZyByZXBzLCB1bnNpZ25lZCBpbnQgc2l6ZSwKICAgICB1aW50OF90IGRpciwg Ym9vbF90IGRmLCBib29sX3QgZGF0YV9pc19hZGRyLCB1aW50cHRyX3QgZGF0YSkKIHsKICAgICBz dHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7CisgICAgc3RydWN0IGRvbWFpbiAqY3VycmQgPSBj dXJyLT5kb21haW47CiAgICAgc3RydWN0IGh2bV92Y3B1X2lvICp2aW8gPSAmY3Vyci0+YXJjaC5o dm1fdmNwdS5odm1faW87CiAgICAgaW9yZXFfdCBwID0gewogICAgICAgICAudHlwZSA9IGlzX21t aW8gPyBJT1JFUV9UWVBFX0NPUFkgOiBJT1JFUV9UWVBFX1BJTywKQEAgLTE0MCw3ICsxOTgsNyBA QCBzdGF0aWMgaW50IGh2bWVtdWxfZG9faW8oCiAgICAgICAgICAgICAgKHAuZGlyICE9IGRpcikg fHwKICAgICAgICAgICAgICAocC5kZiAhPSBkZikgfHwKICAgICAgICAgICAgICAocC5kYXRhX2lz X3B0ciAhPSBkYXRhX2lzX2FkZHIpICkKLSAgICAgICAgICAgIGRvbWFpbl9jcmFzaChjdXJyLT5k b21haW4pOworICAgICAgICAgICAgZG9tYWluX2NyYXNoKGN1cnJkKTsKIAogICAgICAgICBpZiAo IGRhdGFfaXNfYWRkciApCiAgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7 CkBAIC0xNjgsMTMgKzIyNiw3MiBAQCBzdGF0aWMgaW50IGh2bWVtdWxfZG9faW8oCiAgICAgICAg IGJyZWFrOwogICAgIGNhc2UgWDg2RU1VTF9VTkhBTkRMRUFCTEU6CiAgICAgewotICAgICAgICBz dHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcyA9Ci0gICAgICAgICAgICBodm1fc2VsZWN0X2lvcmVx X3NlcnZlcihjdXJyLT5kb21haW4sICZwKTsKKyAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnM7CisgICAgICAgIHAybV90eXBlX3QgcDJtdDsKKworICAgICAgICBpZiAoIGlzX21taW8g KQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSBwYWRkcl90b19w Zm4oYWRkcik7CisKKyAgICAgICAgICAgICh2b2lkKSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1 cnJkLCBnbWZuLCAmcDJtdCk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoIHAybXQgKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKKyAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKyAg ICAgICAgICAgICAgICAgICAgcDJtX2dldF9pb3JlcV9zZXJ2ZXIoY3VycmQsICZmbGFncywgJnMp OworCisgICAgICAgICAgICAgICAgICAgIGlmICggIXMgKQorICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCAoZGlyID09IElPUkVRX1JFQUQg JiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIShmbGFncyAmIFAyTV9JT1JFUV9IQU5ETEVf UkVBRF9BQ0NFU1MpKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgIChkaXIgPT0gSU9SRVFf V1JJVEUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIShmbGFncyAmIFAyTV9JT1JFUV9I QU5ETEVfV1JJVEVfQUNDRVNTKSkgKQorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE5VTEw7 CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIGNhc2UgcDJtX3JhbV9ydzoKKyAgICAgICAgICAgICAgICAgICAgcyA9IE5VTEw7 CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZGVmYXVsdDoK KyAgICAgICAgICAgICAgICAgICAgcyA9IGh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKGN1cnJkLCAm cCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcDJtdCA9IHAybV9pbnZhbGlk OworCisgICAgICAgICAgICBzID0gaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoY3VycmQsICZwKTsK KyAgICAgICAgfQogCiAgICAgICAgIC8qIElmIHRoZXJlIGlzIG5vIHN1aXRhYmxlIGJhY2tpbmcg RE0sIGp1c3QgaWdub3JlIGFjY2Vzc2VzICovCiAgICAgICAgIGlmICggIXMgKQogICAgICAgICB7 Ci0gICAgICAgICAgICByYyA9IGh2bV9wcm9jZXNzX2lvX2ludGVyY2VwdCgmbnVsbF9oYW5kbGVy LCAmcCk7CisgICAgICAgICAgICBzd2l0Y2ggKCBwMm10ICkKKyAgICAgICAgICAgIHsKKyAgICAg ICAgICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKKyAgICAgICAgICAgIC8qCisgICAgICAgICAg ICAgKiBSYWNlIGNvbmRpdGlvbnMgbWF5IGV4aXN0IHdoZW4gYWNjZXNzIHRvIGEgZ2ZuIHdpdGgK KyAgICAgICAgICAgICAqIHAybV9pb3JlcV9zZXJ2ZXIgaXMgaW50ZXJjZXB0ZWQgYnkgaHlwZXJ2 aXNvciwgZHVyaW5nCisgICAgICAgICAgICAgKiB3aGljaCB0aW1lIHAybSB0eXBlIG9mIHRoaXMg Z2ZuIGlzIHJlY2FsY3VsYXRlZCBiYWNrCisgICAgICAgICAgICAgKiB0byBwMm1fcmFtX3J3LiBt ZW1faGFuZGxlciBpcyB1c2VkIHRvIGhhbmRsZSB0aGlzCisgICAgICAgICAgICAgKiBjb3JuZXIg Y2FzZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgY2FzZSBwMm1fcmFtX3J3OgorICAg ICAgICAgICAgICAgIHJjID0gaHZtX3Byb2Nlc3NfaW9faW50ZXJjZXB0KCZtZW1faGFuZGxlciwg JnApOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAg ICAgICAgICAgICAgIHJjID0gaHZtX3Byb2Nlc3NfaW9faW50ZXJjZXB0KCZudWxsX2hhbmRsZXIs ICZwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg ICAgdmlvLT5pb19yZXEuc3RhdGUgPSBTVEFURV9JT1JFUV9OT05FOwogICAgICAgICB9CiAgICAg ICAgIGVsc2UKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94 ODYvaHZtL2h2bS5jCmluZGV4IGJlYzZhOGEuLmJhMWRlMDAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpAQCAtMTI1Miw2ICsx MjUyLDggQEAgc3RhdGljIGludCBodm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFp biAqZCwgaW9zZXJ2aWRfdCBpZCkKIAogICAgICAgICBkb21haW5fcGF1c2UoZCk7CiAKKyAgICAg ICAgcDJtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKGQsIHMpOworCiAgICAgICAgIGh2bV9pb3JlcV9z ZXJ2ZXJfZGlzYWJsZShzLCAwKTsKIAogICAgICAgICBsaXN0X2RlbCgmcy0+bGlzdF9lbnRyeSk7 CkBAIC0xNDExLDYgKzE0MTMsNDcgQEAgc3RhdGljIGludCBodm1fdW5tYXBfaW9fcmFuZ2VfZnJv bV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICByZXR1 cm4gcmM7CiB9CiAKK3N0YXRpYyBpbnQgaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIo c3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW9zZXJ2aWRfdCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaHZtbWVtX3R5cGVfdCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgaHZtX2lvcmVx X3NlcnZlciAqczsKKyAgICBpbnQgcmM7CisKKyAgICAvKiBGb3Igbm93LCBvbmx5IEhWTU1FTV9p b3JlcV9zZXJ2ZXIgaXMgc3VwcG9ydGVkICovCisgICAgaWYgKCB0eXBlICE9IEhWTU1FTV9pb3Jl cV9zZXJ2ZXIgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggZmxhZ3MgJiB+ KEhWTU9QX0lPUkVRX01FTV9BQ0NFU1NfUkVBRCB8CisgICAgICAgICAgICAgICAgICAgSFZNT1Bf SU9SRVFfTUVNX0FDQ0VTU19XUklURSkgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAg IHNwaW5fbG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKKworICAg IHJjID0gLUVOT0VOVDsKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgeworICAgICAgICBpZiAo IHMgPT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyICkKKyAgICAgICAg ICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggcy0+aWQgPT0gaWQgKQorICAgICAgICB7Cisg ICAgICAgICAgICByYyA9IHAybV9zZXRfaW9yZXFfc2VydmVyKGQsIGZsYWdzLCBzKTsKKyAgICAg ICAgICAgIGlmICggcmMgPT0gMCApCisgICAgICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0RF QlVHLCAiJXUgJXMgdHlwZSBIVk1NRU1faW9yZXFfc2VydmVyLlxuIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5pZCwgKGZsYWdzICE9IDApID8gIm1hcHBlZCB0byIgOiAidW5tYXBwZWQg ZnJvbSIpOworCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNw aW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOworICAgIHJl dHVybiByYzsKK30KKwogc3RhdGljIGludCBodm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZShzdHJ1 Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sX3QgZW5hYmxlZCkKIHsKQEAgLTMxNjQsOSArMzIwNyw5IEBAIGludCBo dm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGdsYSwK ICAgICAgKiBJZiB0aGlzIEdGTiBpcyBlbXVsYXRlZCBNTUlPIG9yIG1hcmtlZCBhcyByZWFkLW9u bHksIHBhc3MgdGhlIGZhdWx0CiAgICAgICogdG8gdGhlIG1taW8gaGFuZGxlci4KICAgICAgKi8K LSAgICBpZiAoIChwMm10ID09IHAybV9tbWlvX2RtKSB8fCAKLSAgICAgICAgIChucGZlYy53cml0 ZV9hY2Nlc3MgJiYKLSAgICAgICAgICAocDJtX2lzX2Rpc2NhcmRfd3JpdGUocDJtdCkgfHwgKHAy bXQgPT0gcDJtX2lvcmVxX3NlcnZlcikpKSApCisgICAgaWYgKCAocDJtdCA9PSBwMm1fbW1pb19k bSkgfHwKKyAgICAgICAgIChwMm10ID09IHAybV9pb3JlcV9zZXJ2ZXIpIHx8CisgICAgICAgICAo bnBmZWMud3JpdGVfYWNjZXNzICYmIHAybV9pc19kaXNjYXJkX3dyaXRlKHAybXQpKSApCiAgICAg ewogICAgICAgICBfX3B1dF9nZm4ocDJtLCBnZm4pOwogICAgICAgICBpZiAoIGFwMm1fYWN0aXZl ICkKQEAgLTU5NzksNiArNjAyMiw0MCBAQCBzdGF0aWMgaW50IGh2bW9wX3VubWFwX2lvX3Jhbmdl X2Zyb21faW9yZXFfc2VydmVyKAogICAgIHJldHVybiByYzsKIH0KIAorc3RhdGljIGludCBodm1v cF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKAorICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0oeGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyX3QpIHVvcCkKK3sKKyAgICB4 ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXJfdCBvcDsKKyAgICBzdHJ1Y3QgZG9t YWluICpkOworICAgIGludCByYzsKKworICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZvcCwgdW9w LCAxKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgcmMgPSByY3VfbG9ja19yZW1v dGVfZG9tYWluX2J5X2lkKG9wLmRvbWlkLCAmZCk7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICAg ICAgcmV0dXJuIHJjOworCisgICAgcmMgPSAtRUlOVkFMOworICAgIGlmICggIWlzX2h2bV9kb21h aW4oZCkgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIC8qIEZvciBub3csIG9ubHkgc3VwcG9y dCBmb3IgSEFQIGVuYWJsZWQgaHZtICovCisgICAgaWYgKCAhaGFwX2VuYWJsZWQoZCkgKQorICAg ICAgICBnb3RvIG91dDsKKworICAgIHJjID0geHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BS SVYsIGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVk1PUF9tYXBfbWVtX3R5cGVf dG9faW9yZXFfc2VydmVyKTsKKyAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICBnb3RvIG91dDsK KworICAgIHJjID0gaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoZCwgb3AuaWQsIG9w LnR5cGUsIG9wLmZsYWdzKTsKKworIG91dDoKKyAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKKyAg ICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgaHZtb3Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0 ZSgKICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9z dGF0ZV90KSB1b3ApCiB7CkBAIC02NjEzLDggKzY2OTAsNyBAQCBzdGF0aWMgaW50IGh2bW9wX2dl dF9tZW1fdHlwZSgKIHN0YXRpYyBib29sX3QgaHZtX2FsbG93X3AybV90eXBlX2NoYW5nZShwMm1f dHlwZV90IG9sZCwgcDJtX3R5cGVfdCBuZXcpCiB7CiAgICAgaWYgKCBwMm1faXNfcmFtKG9sZCkg fHwKLSAgICAgICAgIChwMm1faXNfaG9sZShvbGQpICYmIG5ldyA9PSBwMm1fbW1pb19kbSkgfHwK LSAgICAgICAgIChvbGQgPT0gcDJtX2lvcmVxX3NlcnZlciAmJiBuZXcgPT0gcDJtX3JhbV9ydykg KQorICAgICAgICAgKHAybV9pc19ob2xlKG9sZCkgJiYgbmV3ID09IHAybV9tbWlvX2RtKSApCiAg ICAgICAgIHJldHVybiAxOwogCiAgICAgcmV0dXJuIDA7CkBAIC02NjQ4LDYgKzY3MjQsMTAgQEAg c3RhdGljIGludCBodm1vcF9zZXRfbWVtX3R5cGUoCiAgICAgaWYgKCAhaXNfaHZtX2RvbWFpbihk KSApCiAgICAgICAgIGdvdG8gb3V0OwogCisgICAgLyogRm9yIG5vdywgSFZNTUVNX2lvcmVxX3Nl cnZlciBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgSEFQIGVuYWJsZWQgaHZtLiAqLworICAgIGlmICgg YS5odm1tZW1fdHlwZSA9PSBIVk1NRU1faW9yZXFfc2VydmVyICYmICFoYXBfZW5hYmxlZChkKSAp CisgICAgICAgIGdvdG8gb3V0OworCiAgICAgcmMgPSB4c21faHZtX2NvbnRyb2woWFNNX0RNX1BS SVYsIGQsIEhWTU9QX3NldF9tZW1fdHlwZSk7CiAgICAgaWYgKCByYyApCiAgICAgICAgIGdvdG8g b3V0OwpAQCAtNjc0OCw2ICs2ODI4LDExIEBAIGxvbmcgZG9faHZtX29wKHVuc2lnbmVkIGxvbmcg b3AsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQogICAgICAgICAgICAgZ3Vlc3Rf aGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX2lvX3JhbmdlX3QpKTsKICAgICAgICAgYnJlYWs7CiAK KyAgICBjYXNlIEhWTU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXI6CisgICAgICAgIHJj ID0gaHZtb3BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcigKKyAgICAgICAgICAgIGd1ZXN0 X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyX3Qp KTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIEhWTU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3Rh dGU6CiAgICAgICAgIHJjID0gaHZtb3Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSgKICAgICAgICAg ICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRl X3QpKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5jIGIveGVu L2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKaW5kZXggOWNlZTVhMC4uYmJiNmQ4NSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKKysrIGIveGVuL2FyY2gv eDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKQEAgLTE3NCw3ICsxNzQsNyBAQCBuZXN0ZWRoYXBfd2Fs a19MMF9wMm0oc3RydWN0IHAybV9kb21haW4gKnAybSwgcGFkZHJfdCBMMV9ncGEsIHBhZGRyX3Qg KkwwX2dwYSwKICAgICBpZiAoICpwMm10ID09IHAybV9tbWlvX2RpcmVjdCApCiAgICAgICAgIGdv dG8gZGlyZWN0X21taW9fb3V0OwogICAgIHJjID0gTkVTVEVESFZNX1BBR0VGQVVMVF9NTUlPOwot ICAgIGlmICggKnAybXQgPT0gcDJtX21taW9fZG0gKQorICAgIGlmICggKnAybXQgPT0gcDJtX21t aW9fZG0gfHwgKnAybXQgPT0gcDJtX2lvcmVxX3NlcnZlciApCiAgICAgICAgIGdvdG8gb3V0Owog CiAgICAgcmMgPSBORVNURURIVk1fUEFHRUZBVUxUX0wwX0VSUk9SOwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tL3AybS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKaW5kZXgg MzgwZWMyNS4uODU0ZTE1OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwor KysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCkBAIC0xMzIsNiArMTMyLDE5IEBAIHN0YXRp YyB2b2lkIGVwdF9wMm1fdHlwZV90b19mbGFncyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBlcHRf ZW50cnlfdCAqZW50cnksCiAgICAgICAgICAgICBlbnRyeS0+ciA9IGVudHJ5LT53ID0gZW50cnkt PnggPSAxOwogICAgICAgICAgICAgZW50cnktPmEgPSBlbnRyeS0+ZCA9ICEhY3B1X2hhc192bXhf ZXB0X2FkOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZl cjoKKyAgICAgICAgICAgIGVudHJ5LT5yID0gIShwMm0tPmlvcmVxLmZsYWdzICYgUDJNX0lPUkVR X0hBTkRMRV9SRUFEX0FDQ0VTUyk7CisJICAgIC8qCisJICAgICAqIHdyaXRlIGFjY2VzcyByaWdo dCBpcyBkaXNhYmxlZCB3aGVuIGVudHJ5LT5yIGlzIDAsIGJ1dCB3aGV0aGVyCisJICAgICAqIHdy aXRlIGFjY2Vzc2VzIGFyZSBlbXVsYXRlZCBieSBoeXBlcnZpc29yIG9yIGZvcndhcmRlZCB0byBh bgorCSAgICAgKiBpb3JlcSBzZXJ2ZXIgZGVwZW5kcyBvbiB0aGUgc2V0dGluZyBvZiBwMm0tPmlv cmVxLmZsYWdzLgorCSAgICAgKi8KKyAgICAgICAgICAgIGVudHJ5LT53ID0gKGVudHJ5LT5yICYm CisgICAgICAgICAgICAgICAgICAgICAgICAhKHAybS0+aW9yZXEuZmxhZ3MgJiBQMk1fSU9SRVFf SEFORExFX1dSSVRFX0FDQ0VTUykpOworICAgICAgICAgICAgZW50cnktPnggPSBlbnRyeS0+cjsK KyAgICAgICAgICAgIGVudHJ5LT5hID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7CisgICAgICAgICAg ICBlbnRyeS0+ZCA9IGVudHJ5LT53ICYmIGNwdV9oYXNfdm14X2VwdF9hZDsKKyAgICAgICAgICAg IGJyZWFrOwogICAgICAgICBjYXNlIHAybV9tbWlvX2RpcmVjdDoKICAgICAgICAgICAgIGVudHJ5 LT5yID0gZW50cnktPnggPSAxOwogICAgICAgICAgICAgZW50cnktPncgPSAhcmFuZ2VzZXRfY29u dGFpbnNfc2luZ2xldG9uKG1taW9fcm9fcmFuZ2VzLApAQCAtMTcxLDcgKzE4NCw2IEBAIHN0YXRp YyB2b2lkIGVwdF9wMm1fdHlwZV90b19mbGFncyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBlcHRf ZW50cnlfdCAqZW50cnksCiAgICAgICAgICAgICBlbnRyeS0+YSA9IGVudHJ5LT5kID0gISFjcHVf aGFzX3ZteF9lcHRfYWQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBwMm1fZ3Jh bnRfbWFwX3JvOgotICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6CiAgICAgICAgICAgICBl bnRyeS0+ciA9IDE7CiAgICAgICAgICAgICBlbnRyeS0+dyA9IGVudHJ5LT54ID0gMDsKICAgICAg ICAgICAgIGVudHJ5LT5hID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7CmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvbW0vcDJtLXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKaW5kZXggZWFi ZDJlMy4uN2EwZGRiOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCisrKyBi L3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwpAQCAtNzIsOCArNzIsOCBAQCBzdGF0aWMgY29uc3Qg dW5zaWduZWQgbG9uZyBwZ3RbXSA9IHsKICAgICBQR1RfbDNfcGFnZV90YWJsZQogfTsKIAotc3Rh dGljIHVuc2lnbmVkIGxvbmcgcDJtX3R5cGVfdG9fZmxhZ3MocDJtX3R5cGVfdCB0LCBtZm5fdCBt Zm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg bGV2ZWwpCitzdGF0aWMgdW5zaWduZWQgbG9uZyBwMm1fdHlwZV90b19mbGFncyhzdHJ1Y3QgcDJt X2RvbWFpbiAqcDJtLCBwMm1fdHlwZV90IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtZm5fdCBtZm4sIHVuc2lnbmVkIGludCBsZXZlbCkKIHsKICAgICB1bnNpZ25l ZCBsb25nIGZsYWdzOwogICAgIC8qCkBAIC05NCw4ICs5NCwxOCBAQCBzdGF0aWMgdW5zaWduZWQg bG9uZyBwMm1fdHlwZV90b19mbGFncyhwMm1fdHlwZV90IHQsIG1mbl90IG1mbiwKICAgICBkZWZh dWx0OgogICAgICAgICByZXR1cm4gZmxhZ3MgfCBfUEFHRV9OWF9CSVQ7CiAgICAgY2FzZSBwMm1f Z3JhbnRfbWFwX3JvOgotICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKICAgICAgICAgcmV0dXJu IGZsYWdzIHwgUDJNX0JBU0VfRkxBR1MgfCBfUEFHRV9OWF9CSVQ7CisgICAgY2FzZSBwMm1faW9y ZXFfc2VydmVyOgorICAgIHsKKyAgICAgICAgZmxhZ3MgfD0gUDJNX0JBU0VfRkxBR1MgfCBfUEFH RV9SVzsKKworICAgICAgICBpZiAoIHAybS0+aW9yZXEuZmxhZ3MgJiBQMk1fSU9SRVFfSEFORExF X1JFQURfQUNDRVNTICkKKyAgICAgICAgICAgIHJldHVybiBmbGFncyAmIH4oX1BBR0VfUFJFU0VO VCB8IF9QQUdFX1JXKTsKKyAgICAgICAgZWxzZSBpZiAoIHAybS0+aW9yZXEuZmxhZ3MgJiBQMk1f SU9SRVFfSEFORExFX1dSSVRFX0FDQ0VTUyApCisgICAgICAgICAgICByZXR1cm4gZmxhZ3MgJiB+ X1BBR0VfUlc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmbGFnczsKKyAgICB9 CiAgICAgY2FzZSBwMm1fcmFtX3JvOgogICAgIGNhc2UgcDJtX3JhbV9sb2dkaXJ0eToKICAgICBj YXNlIHAybV9yYW1fc2hhcmVkOgpAQCAtNDQyLDcgKzQ1Miw4IEBAIHN0YXRpYyBpbnQgZG9fcmVj YWxjKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgICAgICAg ICAgcDJtX3R5cGVfdCBwMm10ID0gcDJtX2lzX2xvZ2RpcnR5X3JhbmdlKHAybSwgZ2ZuICYgbWFz aywgZ2ZuIHwgfm1hc2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHAybV9yYW1f bG9nZGlydHkgOiBwMm1fcmFtX3J3OwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBs MWVfZ2V0X3BmbihlKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBwMm1fdHlw ZV90b19mbGFncyhwMm10LCBfbWZuKG1mbiksIGxldmVsKTsKKyAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgZmxhZ3MgPSBwMm1fdHlwZV90b19mbGFncyhwMm0sIHAybXQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihtZm4pLCBsZXZlbCk7 CiAKICAgICAgICAgICAgIGlmICggbGV2ZWwgKQogICAgICAgICAgICAgewpAQCAtNTc5LDcgKzU5 MCw3IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQg bG9uZyBnZm4sIG1mbl90IG1mbiwKICAgICAgICAgQVNTRVJUKCFtZm5fdmFsaWQobWZuKSB8fCBw Mm10ICE9IHAybV9tbWlvX2RpcmVjdCk7CiAgICAgICAgIGwzZV9jb250ZW50ID0gbWZuX3ZhbGlk KG1mbikgfHwgcDJtX2FsbG93c19pbnZhbGlkX21mbihwMm10KQogICAgICAgICAgICAgPyBsM2Vf ZnJvbV9wZm4obWZuX3gobWZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBl X3RvX2ZsYWdzKHAybXQsIG1mbiwgMikgfCBfUEFHRV9QU0UpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm0sIHAybXQsIG1mbiwgMikgfCBfUEFHRV9QU0Up CiAgICAgICAgICAgICA6IGwzZV9lbXB0eSgpOwogICAgICAgICBlbnRyeV9jb250ZW50LmwxID0g bDNlX2NvbnRlbnQubDM7CiAKQEAgLTYxNSw3ICs2MjYsNyBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAKICAg ICAgICAgaWYgKCBtZm5fdmFsaWQobWZuKSB8fCBwMm1fYWxsb3dzX2ludmFsaWRfbWZuKHAybXQp ICkKICAgICAgICAgICAgIGVudHJ5X2NvbnRlbnQgPSBwMm1fbDFlX2Zyb21fcGZuKG1mbl94KG1m biksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlw ZV90b19mbGFncyhwMm10LCBtZm4sIDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LCBtZm4sIDApKTsKICAgICAg ICAgZWxzZQogICAgICAgICAgICAgZW50cnlfY29udGVudCA9IGwxZV9lbXB0eSgpOwogCkBAIC02 NTEsNyArNjYyLDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1 bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogICAgICAgICBBU1NFUlQoIW1mbl92YWxpZCht Zm4pIHx8IHAybXQgIT0gcDJtX21taW9fZGlyZWN0KTsKICAgICAgICAgaWYgKCBtZm5fdmFsaWQo bWZuKSB8fCBwMm1fYWxsb3dzX2ludmFsaWRfbWZuKHAybXQpICkKICAgICAgICAgICAgIGwyZV9j b250ZW50ID0gbDJlX2Zyb21fcGZuKG1mbl94KG1mbiksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm10LCBtZm4sIDEpIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3RvX2ZsYWdzKHAybSwg cDJtdCwgbWZuLCAxKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf UEFHRV9QU0UpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsMmVfY29udGVudCA9IGwyZV9l bXB0eSgpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2 L21tL3AybS5jCmluZGV4IGIzZmNlMWIuLmY3ZDJmNjAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9tbS9wMm0uYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTgzLDYgKzgzLDggQEAg c3RhdGljIGludCBwMm1faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtKQogICAgIGVsc2UKICAgICAgICAgcDJtX3B0X2luaXQocDJtKTsKIAorICAgIHNw aW5fbG9ja19pbml0KCZwMm0tPmlvcmVxLmxvY2spOworCiAgICAgcmV0dXJuIHJldDsKIH0KIApA QCAtMjg5LDYgKzI5MSw4NiBAQCB2b2lkIHAybV9tZW1vcnlfdHlwZV9jaGFuZ2VkKHN0cnVjdCBk b21haW4gKmQpCiAgICAgfQogfQogCitpbnQgcDJtX3NldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRv bWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLAor ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQorewor ICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7CisgICAgaW50 IHJjOworCisgICAgc3Bpbl9sb2NrKCZwMm0tPmlvcmVxLmxvY2spOworCisgICAgcmMgPSAtRUJV U1k7CisgICAgaWYgKCAoZmxhZ3MgIT0gMCkgJiYgKHAybS0+aW9yZXEuc2VydmVyICE9IE5VTEwp ICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IC1FSU5WQUw7CisgICAgLyogdW5tYXAg aW9yZXEgc2VydmVyIGZyb20gcDJtIHR5cGUgYnkgcGFzc2luZyBmbGFncyB3aXRoIDAgKi8KKyAg ICBpZiAoIChmbGFncyA9PSAwKSAmJiAocDJtLT5pb3JlcS5zZXJ2ZXIgIT0gcykgKQorICAgICAg ICBnb3RvIG91dDsKKworICAgIGlmICggZmxhZ3MgPT0gMCApCisgICAgeworICAgICAgICBwMm0t PmlvcmVxLnNlcnZlciA9IE5VTEw7CisgICAgICAgIHAybS0+aW9yZXEuZmxhZ3MgPSAwOworICAg IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBwMm0tPmlvcmVxLnNlcnZlciA9IHM7CisgICAg ICAgIHAybS0+aW9yZXEuZmxhZ3MgPSBmbGFnczsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEVh Y2ggdGltZSB3ZSBtYXAvdW5tYXAgYW4gaW9yZXEgc2VydmVyIHRvL2Zyb20gcDJtX2lvcmVxX3Nl cnZlciwKKyAgICAgKiB3ZSBtYXJrIHRoZSBwMm0gdGFibGUgdG8gYmUgcmVjYWxjdWxhdGVkLCBz byB0aGF0IGdmbnMgd2hpY2ggd2VyZQorICAgICAqIHByZXZpb3VzbHkgbWFya2VkIHdpdGggcDJt X2lvcmVxX3NlcnZlciBjYW4gYmUgcmVzeW5jZWQuCisgICAgICovCisgICAgcDJtX2NoYW5nZV9l bnRyeV90eXBlX2dsb2JhbChkLCBwMm1faW9yZXFfc2VydmVyLCBwMm1fcmFtX3J3KTsKKworICAg IHJjID0gMDsKKworb3V0OgorICAgIHNwaW5fdW5sb2NrKCZwMm0tPmlvcmVxLmxvY2spOworCisg ICAgcmV0dXJuIHJjOworfQorCit2b2lkIHAybV9nZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21h aW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmZsYWdzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqKnMpCit7 CisgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShkKTsKKworICAg IHNwaW5fbG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKKworICAgICpzID0gcDJtLT5pb3JlcS5zZXJ2 ZXI7CisgICAgKmZsYWdzID0gcDJtLT5pb3JlcS5mbGFnczsKKworICAgIHNwaW5fdW5sb2NrKCZw Mm0tPmlvcmVxLmxvY2spOworfQorCit2b2lkIHAybV9kZXN0cm95X2lvcmVxX3NlcnZlcihzdHJ1 Y3QgZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9p b3JlcV9zZXJ2ZXIgKnMpCit7CisgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRf aG9zdHAybShkKTsKKworICAgIHNwaW5fbG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKKworICAgIGlm ICggcDJtLT5pb3JlcS5zZXJ2ZXIgPT0gcyApCisgICAgeworICAgICAgICBwMm0tPmlvcmVxLnNl cnZlciA9IE5VTEw7CisgICAgICAgIHAybS0+aW9yZXEuZmxhZ3MgPSAwOworCisgICAgICAgIC8q CisgICAgICAgICAqIE1hcmsgcDJtIHRhYmxlIHRvIGJlIHJlY2FsY3VsYXRlZCwgc28gdGhhdCBn Zm5zIHdoaWNoIHdlcmUKKyAgICAgICAgICogcHJldmlvdXNseSBtYXJrZWQgd2l0aCBwMm1faW9y ZXFfc2VydmVyIGNhbiBiZSByZXN5bmNlZC4KKyAgICAgICAgICovCisgICAgICAgIHAybV9jaGFu Z2VfZW50cnlfdHlwZV9nbG9iYWwoZCwgcDJtX2lvcmVxX3NlcnZlciwgcDJtX3JhbV9ydyk7Cisg ICAgfQorCisgICAgc3Bpbl91bmxvY2soJnAybS0+aW9yZXEubG9jayk7Cit9CisKIHZvaWQgcDJt X2VuYWJsZV9oYXJkd2FyZV9sb2dfZGlydHkoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0 aS5jCmluZGV4IGM4MTMwMmEuLjJlMGQyNTggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9z aGFkb3cvbXVsdGkuYworKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKQEAgLTMy MjQsOCArMzIyNCw3IEBAIHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwK ICAgICB9CiAKICAgICAvKiBOZWVkIHRvIGhhbmQgb2ZmIGRldmljZS1tb2RlbCBNTUlPIHRvIHRo ZSBkZXZpY2UgbW9kZWwgKi8KLSAgICBpZiAoIHAybXQgPT0gcDJtX21taW9fZG0KLSAgICAgICAg IHx8IChwMm10ID09IHAybV9pb3JlcV9zZXJ2ZXIgJiYgZnQgPT0gZnRfZGVtYW5kX3dyaXRlKSAp CisgICAgaWYgKCBwMm10ID09IHAybV9tbWlvX2RtICkKICAgICB7CiAgICAgICAgIGdwYSA9IGd1 ZXN0X3dhbGtfdG9fZ3BhKCZndyk7CiAgICAgICAgIGdvdG8gbW1pbzsKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCmluZGV4 IGVlMmVhOWMuLjhmOTI1YWMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgK KysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaApAQCAtODksNyArODksOCBAQCB0eXBlZGVm IHVuc2lnbmVkIGludCBwMm1fcXVlcnlfdDsKICAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1f dG9fbWFzayhwMm1fcmFtX3BhZ2luZ19vdXQpICAgICAgXAogICAgICAgICAgICAgICAgICAgICAg ICB8IHAybV90b19tYXNrKHAybV9yYW1fcGFnZWQpICAgICAgICAgICBcCiAgICAgICAgICAgICAg ICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX3JhbV9wYWdpbmdfaW4pICAgICAgIFwKLSAgICAg ICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3NoYXJlZCkpCisgICAgICAg ICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX3JhbV9zaGFyZWQpICAgICAgICAgIFwK KyAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1faW9yZXFfc2VydmVyKSkK IAogLyogVHlwZXMgdGhhdCByZXByZXNlbnQgYSBwaHlzbWFwIGhvbGUgdGhhdCBpcyBvayB0byBy ZXBsYWNlIHdpdGggYSBzaGFyZWQKICAqIGVudHJ5ICovCkBAIC0xMTEsOCArMTEyLDcgQEAgdHlw ZWRlZiB1bnNpZ25lZCBpbnQgcDJtX3F1ZXJ5X3Q7CiAjZGVmaW5lIFAyTV9ST19UWVBFUyAocDJt X3RvX21hc2socDJtX3JhbV9sb2dkaXJ0eSkgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICB8 IHAybV90b19tYXNrKHAybV9yYW1fcm8pICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAg IHwgcDJtX3RvX21hc2socDJtX2dyYW50X21hcF9ybykgICBcCi0gICAgICAgICAgICAgICAgICAg ICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3NoYXJlZCkgICAgIFwKLSAgICAgICAgICAgICAgICAg ICAgICB8IHAybV90b19tYXNrKHAybV9pb3JlcV9zZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAg ICAgIHwgcDJtX3RvX21hc2socDJtX3JhbV9zaGFyZWQpKQogCiAvKiBXcml0ZS1kaXNjYXJkIHR5 cGVzLCB3aGljaCBzaG91bGQgZGlzY2FyZCB0aGUgd3JpdGUgb3BlcmF0aW9ucyAqLwogI2RlZmlu ZSBQMk1fRElTQ0FSRF9XUklURV9UWVBFUyAocDJtX3RvX21hc2socDJtX3JhbV9ybykgICAgIFwK QEAgLTEyMCw3ICsxMjAsOCBAQCB0eXBlZGVmIHVuc2lnbmVkIGludCBwMm1fcXVlcnlfdDsKIAog LyogVHlwZXMgdGhhdCBjYW4gYmUgc3ViamVjdCB0byBidWxrIHRyYW5zaXRpb25zLiAqLwogI2Rl ZmluZSBQMk1fQ0hBTkdFQUJMRV9UWVBFUyAocDJtX3RvX21hc2socDJtX3JhbV9ydykgXAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX2xvZ2RpcnR5 KSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9yYW1f bG9nZGlydHkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2so cDJtX2lvcmVxX3NlcnZlcikgKQogCiAjZGVmaW5lIFAyTV9QT0RfVFlQRVMgKHAybV90b19tYXNr KHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQpKQogCkBAIC0zMjAsNiArMzIxLDI3IEBAIHN0cnVjdCBw Mm1fZG9tYWluIHsKICAgICAgICAgc3RydWN0IGVwdF9kYXRhIGVwdDsKICAgICAgICAgLyogTlBU LWVxdWl2YWxlbnQgc3RydWN0dXJlIGNvdWxkIGJlIGFkZGVkIGhlcmUuICovCiAgICAgfTsKKwor ICAgIHN0cnVjdCB7CisgICAgICAgIHNwaW5sb2NrX3QgbG9jazsKKyAgICAgICAgLyoKKyAgICAg ICAgICogaW9yZXEgc2VydmVyIHdobydzIHJlc3BvbnNpYmxlIGZvciB0aGUgZW11bGF0aW9uIG9m CisgICAgICAgICAqIGdmbnMgd2l0aCBzcGVjaWZpYyBwMm0gdHlwZShmb3Igbm93LCBwMm1faW9y ZXFfc2VydmVyKS4KKyAgICAgICAgICogQmVoYXZpb3JzIG9mIGdmbnMgd2l0aCBwMm1faW9yZXFf c2VydmVyIHNldCBidXQgbm8KKyAgICAgICAgICogaW9yZXEgc2VydmVyIG1hcHBlZCBpbiBhZHZh bmNlIHNob3VsZCBiZSB0aGUgc2FtZSBhcworICAgICAgICAgKiBwMm1fcmFtX3J3LgorICAgICAg ICAgKi8KKyAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnNlcnZlcjsKKyAgICAgICAg LyoKKyAgICAgICAgICogZmxhZ3Mgc3BlY2lmaWVzIHdoZXRoZXIgcmVhZCwgd3JpdGUgb3IgYm90 aCBvcGVyYXRpb25zCisgICAgICAgICAqIGFyZSB0byBiZSBlbXVsYXRlZCBieSBhbiBpb3JlcSBz ZXJ2ZXIuCisgICAgICAgICAqLworICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisjZGVm aW5lIFAyTV9JT1JFUV9IQU5ETEVfV1JJVEVfQUNDRVNTIEhWTU9QX0lPUkVRX01FTV9BQ0NFU1Nf V1JJVEUKKyNkZWZpbmUgUDJNX0lPUkVRX0hBTkRMRV9SRUFEX0FDQ0VTUyAgSFZNT1BfSU9SRVFf TUVNX0FDQ0VTU19SRUFECisKKyAgICB9IGlvcmVxOwogfTsKIAogLyogZ2V0IGhvc3QgcDJtIHRh YmxlICovCkBAIC04MjEsNiArODQzLDEyIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHAy bV9nZXRfaW9tbXVfZmxhZ3MocDJtX3R5cGVfdCBwMm10KQogICAgIHJldHVybiBmbGFnczsKIH0K IAoraW50IHAybV9zZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMpOwordm9pZCBwMm1fZ2V0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nICpmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX2lv cmVxX3NlcnZlciAqKnMpOwordm9pZCBwMm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRv bWFpbiAqZCwgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpOworCiAjZW5kaWYgLyogX1hFTl9Q Mk1fSCAqLwogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3Au aCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmgKaW5kZXggYTFlYWU1Mi4uZDQ2ZjE4 NiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAorKysgYi94ZW4v aW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oCkBAIC00ODksNiArNDg5LDQzIEBAIHN0cnVjdCB4 ZW5faHZtX2FsdHAybV9vcCB7CiB0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX2FsdHAybV9vcCB4ZW5f aHZtX2FsdHAybV9vcF90OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9hbHRwMm1f b3BfdCk7CiAKKyNpZiBkZWZpbmVkKF9fWEVOX18pIHx8IGRlZmluZWQoX19YRU5fVE9PTFNfXykK KworLyoKKyAqIEhWTU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgOiBtYXAgb3IgdW5t YXAgdGhlIElPUkVRIFNlcnZlciA8aWQ+CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdG8gc3BlY2lmaWMgbWVtcm95IHR5cGUgPHR5cGU+CisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHNwZWNpZmljIGFjY2Vzc2VzIDxmbGFncz4KKyAq CisgKiBOb3RlIHRoYXQgaWYgb25seSB3cml0ZSBvcGVyYXRpb25zIGFyZSB0byBiZSBmb3J3YXJk ZWQgdG8gYW4gaW9yZXEgc2VydmVyLAorICogcmVhZCBvcGVyYXRpb25zIHdpbGwgYmUgcGVyZm9y bWVkIHdpdGggbm8gaHlwZXJ2aXNvciBpbnRlcnZlbnRpb24uIEJ1dCBpZgorICogZmxhZ3MgaW5k aWNhdGVzIHRoYXQgcmVhZCBvcGVyYXRpb25zIGFyZSB0byBiZSBmb3J3YXJkZWQgdG8gYW4gaW9y ZXEgc2VydmVyLAorICogd3JpdGUgb3BlcmF0aW9ucyB3aWxsIGluZXZpdGFibHkgYmUgdHJhcHBl ZCBpbnRvIGh5cGVydmlzb3IsIHdoZXRoZXIgdGhleQorICogYXJlIGVtdWxhdGVkIGJ5IGh5cGVy dmlzb3Igb3IgZm9yd2FyZGVkIHRvIGlvcmVxIHNlcnZlciBkZXBlbmRzIG9uIHRoZSBmbGFncwor ICogc2V0dGluZy4gVGhpcyBzaXR1YXRpb24gbWVhbnMgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2Ug aW1wYWN0LgorICovCisjZGVmaW5lIEhWTU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIg MjYKK3N0cnVjdCB4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgeworICAgIGRv bWlkX3QgZG9taWQ7ICAgICAgLyogSU4gLSBkb21haW4gdG8gYmUgc2VydmljZWQgKi8KKyAgICBp b3NlcnZpZF90IGlkOyAgICAgIC8qIElOIC0gaW9yZXEgc2VydmVyIGlkICovCisgICAgaHZtbWVt X3R5cGVfdCB0eXBlOyAvKiBJTiAtIG1lbW9yeSB0eXBlICovCisgICAgdWludDMyX3QgZmxhZ3M7 ICAgICAvKiBJTiAtIHR5cGVzIG9mIGFjY2Vzc2VzIHRvIGJlIGZvcndhcmRlZCB0byB0aGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlvcmVxIHNlcnZlci4gZmxhZ3Mgd2l0aCAwIG1lYW5z IHRvIHVubWFwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9yZXEgc2VydmVyICov CisjZGVmaW5lIF9IVk1PUF9JT1JFUV9NRU1fQUNDRVNTX1JFQUQgMAorI2RlZmluZSBIVk1PUF9J T1JFUV9NRU1fQUNDRVNTX1JFQUQgXAorICAgICgxdSA8PCBfSFZNT1BfSU9SRVFfTUVNX0FDQ0VT U19SRUFEKQorCisjZGVmaW5lIF9IVk1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFIDEKKyNkZWZp bmUgSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURSBcCisgICAgKDF1IDw8IF9IVk1PUF9JT1JF UV9NRU1fQUNDRVNTX1dSSVRFKQorfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fbWFwX21lbV90 eXBlX3RvX2lvcmVxX3NlcnZlcgorICAgIHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3Nl cnZlcl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9f aW9yZXFfc2VydmVyX3QpOworCisjZW5kaWYgLyogZGVmaW5lZChfX1hFTl9fKSB8fCBkZWZpbmVk KF9fWEVOX1RPT0xTX18pICovCisKKwogI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19IVk1fSFZNX09Q X0hfXyAqLwogCiAvKgotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=