From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: [PATCH v12 5/6] x86/ioreq server: Asynchronously reset outstanding p2m_ioreq_server entries. Date: Thu, 6 Apr 2017 23:53:36 +0800 Message-ID: <1491494017-30743-6-git-send-email-yu.c.zhang@linux.intel.com> References: <1491494017-30743-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: <1491494017-30743-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 , Jun Nakajima , George Dunlap , Andrew Cooper , Paul Durrant , zhiyuan.lv@intel.com, Jan Beulich List-Id: xen-devel@lists.xenproject.org QWZ0ZXIgYW4gaW9yZXEgc2VydmVyIGhhcyB1bm1hcHBlZCwgdGhlIHJlbWFpbmluZyBwMm1faW9y ZXFfc2VydmVyCmVudHJpZXMgbmVlZCB0byBiZSByZXNldCBiYWNrIHRvIHAybV9yYW1fcncuIFRo aXMgcGF0Y2ggZG9lcyB0aGlzCmFzeW5jaHJvbm91c2x5IHdpdGggdGhlIGN1cnJlbnQgcDJtX2No YW5nZV9lbnRyeV90eXBlX2dsb2JhbCgpCmludGVyZmFjZS4KCk5ldyBmaWVsZCBlbnRyeV9jb3Vu dCBpcyBpbnRyb2R1Y2VkIGluIHN0cnVjdCBwMm1fZG9tYWluLCB0byByZWNvcmQKdGhlIG51bWJl ciBvZiBwMm1faW9yZXFfc2VydmVyIHAybSBwYWdlIHRhYmxlIGVudHJpZXMuIE9uZSBuYXR1cmUg b2YKdGhlc2UgZW50cmllcyBpcyB0aGF0IHRoZXkgb25seSBwb2ludCB0byA0SyBzaXplZCBwYWdl IGZyYW1lcywgYmVjYXVzZQphbGwgcDJtX2lvcmVxX3NlcnZlciBlbnRyaWVzIGFyZSBvcmlnaW5h dGVkIGZyb20gcDJtX3JhbV9ydyBvbmVzIGluCnAybV9jaGFuZ2VfdHlwZV9vbmUoKS4gV2UgZG8g bm90IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvdW50aW5nIGZvcgoyTS8xRyBzaXplZCBwYWdl cy4KClRoaXMgcGF0Y2ggZGlzYWxsb3dzIG1hcHBpbmcgb2YgYW4gaW9yZXEgc2VydmVyLCB3aGVu IHRoZXJlJ3Mgc3RpbGwKcDJtX2lvcmVxX3NlcnZlciBlbnRyeSBsZWZ0LCBpbiBjYXNlIGFub3Ro ZXIgbWFwcGluZyBvY2N1cnMgcmlnaHQgYWZ0ZXIKdGhlIGN1cnJlbnQgb25lIGJlaW5nIHVubWFw cGVkLCByZWxlYXNlcyBpdHMgbG9jaywgd2l0aCBwMm0gdGFibGUgbm90CnN5bmNlZCB5ZXQuCgpU aGlzIHBhdGNoIGFsc28gZGlzYWxsb3dzIGxpdmUgbWlncmF0aW9uLCB3aGVuIHRoZXJlJ3MgcmVt YWluaW5nCnAybV9pb3JlcV9zZXJ2ZXIgZW50cnkgaW4gcDJtIHRhYmxlLiBUaGUgY29yZSByZWFz b24gaXMgb3VyIGN1cnJlbnQKaW1wbGVtZW50YXRpb24gb2YgcDJtX2NoYW5nZV9lbnRyeV90eXBl X2dsb2JhbCgpIGxhY2tzIGluZm9ybWF0aW9uCnRvIHJlc3luYyBwMm1faW9yZXFfc2VydmVyIGVu dHJpZXMgY29ycmVjdGx5IGlmIGdsb2JhbF9sb2dkaXJ0eSBpcwpvbi4KClNpZ25lZC1vZmYtYnk6 IFl1IFpoYW5nIDx5dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFBhdWwg RHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Ci0tLQpDYzogUGF1bCBEdXJyYW50IDxw YXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9y Z2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBKdW4gTmFrYWppbWEg PGp1bi5uYWthamltYUBpbnRlbC5jb20+CkNjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVs LmNvbT4KCmNoYW5nZXMgaW4gdjc6CiAgLSBBY2NvcmRpbmcgdG8gY29tbWVudHMgZnJvbSBHZW9y Z2U6IGFkZCBjb2RlIHRvIGluY3JlYXNlIHRoZQogICAgZW50cnlfY291bnQuCiAgLSBDb21tZW50 IGNoYW5nZXMgaW4ge2VwdCxwMm1fcHR9X3NldF9lbnRyeS4KCmNoYW5nZXMgaW4gdjY6CiAgLSBB Y2NvcmRpbmcgdG8gY29tbWVudHMgZnJvbSBKYW4gJiBHZW9yZ2U6IG1vdmUgdGhlIGNvdW50IGZy b20KICAgIHAybV9jaGFuZ2VfdHlwZV9vbmUoKSB0byB7ZXB0LHAybV9wdH1fc2V0X2VudHJ5Lgog IC0gQWNjb3JkaW5nIHRvIGNvbW1lbnRzIGZyb20gR2VvcmdlOiBjb21tZW50cyBjaGFuZ2UuCgpj aGFuZ2VzIGluIHY1OgogIC0gQWNjb3JkaW5nIHRvIGNvbW1lbnRzIGZyb20gSmFuOiB1c2UgdW5z aWduZWQgbG9uZyBmb3IgZW50cnlfY291bnQ7CiAgLSBBY2NvcmRpbmcgdG8gY29tbWVudHMgZnJv bSBKYW46IHJlZnVzZSBtYXBwaW5nIHJlcXVpcmVtZW50IHdoZW4KICAgIHRoZXJlJ3MgcDJtX2lv cmVxX3NlcnZlciByZW1haW5lZCBpbiBwMm0gdGFibGUuCiAgLSBBZGRlZCAiUmV2aWV3ZWQtYnk6 IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+IgoKY2hhbmdlcyBpbiB2NDoK ICAtIEFjY29yZGluZyB0byBjb21tZW50cyBmcm9tIEphbjogdXNlIEFTU0VSVCgpIGluc3RlYWQg b2YgJ2lmJwogICAgY29uZGl0aW9uIGluIHAybV9jaGFuZ2VfdHlwZV9vbmUoKS4KICAtIEFjY29y ZGluZyB0byBjb21tZW50cyBmcm9tIEphbjogY29tbWl0IG1lc3NhZ2UgY2hhbmdlcyB0byBtZW50 aW9uCiAgICB0aGUgcDJtX2lvcmVxX3NlcnZlciBhcmUgYWxsIGJhc2VkIG9uIDRLIHNpemVkIHBh Z2VzLgoKY2hhbmdlcyBpbiB2MzoKICAtIE1vdmUgdGhlIHN5bmNocm9ub3VzbHkgcmVzZXR0aW5n IGxvZ2ljIGludG8gcGF0Y2ggNS4KICAtIEFjY29yZGluZyB0byBjb21tZW50cyBmcm9tIEphbjog aW50cm9kdWNlIHAybV9jaGVja19jaGFuZ2VhYmxlKCkKICAgIHRvIGNsYXJpZnkgdGhlIHAybSB0 eXBlIGNoYW5nZSBjb2RlLgogIC0gQWNjb3JkaW5nIHRvIGNvbW1lbnRzIGZyb20gR2VvcmdlOiB1 c2UgbG9ja3MgaW4gdGhlIHNhbWUgb3JkZXIKICAgIHRvIGF2b2lkIGRlYWRsb2NrLCBjYWxsIHAy bV9jaGFuZ2VfZW50cnlfdHlwZV9nbG9iYWwoKSBhZnRlciB1bm1hcAogICAgb2YgdGhlIGlvcmVx IHNlcnZlciBpcyBmaW5pc2hlZC4KCmNoYW5nZXMgaW4gdjI6CiAgLSBNb3ZlIHRoZSBjYWxjdWxh dGlvbiBvZiBpb3JlcSBzZXJ2ZXIgcGFnZSBlbnRyeV9jb3V0IGludG8KICAgIHAybV9jaGFuZ2Vf dHlwZV9vbmUoKSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIGEgc2VwZXJhdGUgbG9jay4KICAgIE5v dGU6IGVudHJ5X2NvdW50IGlzIGFsc28gY2FsY3VsYXRlZCBpbiByZXNvbHZlX21pc2NvbmZpZygp LwogICAgZG9fcmVjYWxjKCksIGZvcnR1bmF0ZWx5IGNhbGxlcnMgb2YgYm90aCByb3V0aW5lcyBo YXZlIHAybQogICAgbG9jayBwcm90ZWN0ZWQgYWxyZWFkeS4KICAtIFNpbXBsaWZ5IGxvZ2ljIGlu IGh2bW9wX3NldF9tZW1fdHlwZSgpLgogIC0gSW50cm9kdWNlIHJvdXRpbmUgcDJtX2ZpbmlzaF90 eXBlX2NoYW5nZSgpIHRvIHdhbGsgdGhlIHAybQogICAgdGFibGUgYW5kIGRvIHRoZSBwMm0gcmVz ZXQuCi0tLQogeGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jICB8ICA4ICsrKysrKysrCiB4ZW4vYXJj aC94ODYvbW0vaGFwL2hhcC5jIHwgIDkgKysrKysrKysrCiB4ZW4vYXJjaC94ODYvbW0vcDJtLWVw dC5jIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vYXJjaC94ODYvbW0vcDJtLXB0 LmMgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYvbW0v cDJtLmMgICAgIHwgIDkgKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oIHwgIDkg KysrKysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jIGIveGVuL2FyY2gveDg2 L2h2bS9pb3JlcS5jCmluZGV4IDViZjNiNmQuLjA3YTZjMjYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9odm0vaW9yZXEuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKQEAgLTk1NSw2 ICs5NTUsMTQgQEAgaW50IGh2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBk b21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQt PmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKKyAgICBpZiAoIHJjID09IDAg JiYgZmxhZ3MgPT0gMCApCisgICAgeworICAgICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0g cDJtX2dldF9ob3N0cDJtKGQpOworCisgICAgICAgIGlmICggcmVhZF9hdG9taWMoJnAybS0+aW9y ZXEuZW50cnlfY291bnQpICkKKyAgICAgICAgICAgIHAybV9jaGFuZ2VfZW50cnlfdHlwZV9nbG9i YWwoZCwgcDJtX2lvcmVxX3NlcnZlciwgcDJtX3JhbV9ydyk7CisgICAgfQorCiAgICAgcmV0dXJu IHJjOwogfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jIGIveGVuL2Fy Y2gveDg2L21tL2hhcC9oYXAuYwppbmRleCBhNTdiMzg1Li40YjU5MWZlIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMK QEAgLTE4Nyw2ICsxODcsMTUgQEAgb3V0OgogICovCiBzdGF0aWMgaW50IGhhcF9lbmFibGVfbG9n X2RpcnR5KHN0cnVjdCBkb21haW4gKmQsIGJvb2xfdCBsb2dfZ2xvYmFsKQogeworICAgIHN0cnVj dCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7CisKKyAgICAvKgorICAgICAq IFJlZnVzZSB0byB0dXJuIG9uIGdsb2JhbCBsb2ctZGlydHkgbW9kZSBpZgorICAgICAqIHRoZXJl IGFyZSBvdXRzdGFuZGluZyBwMm1faW9yZXFfc2VydmVyIHBhZ2VzLgorICAgICAqLworICAgIGlm ICggbG9nX2dsb2JhbCAmJiByZWFkX2F0b21pYygmcDJtLT5pb3JlcS5lbnRyeV9jb3VudCkgKQor ICAgICAgICByZXR1cm4gLUVCVVNZOworCiAgICAgLyogdHVybiBvbiBQR19sb2dfZGlydHkgYml0 IGluIHBhZ2luZyBtb2RlICovCiAgICAgcGFnaW5nX2xvY2soZCk7CiAgICAgZC0+YXJjaC5wYWdp bmcubW9kZSB8PSBQR19sb2dfZGlydHk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJt LWVwdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwppbmRleCBjYzFlYjIxLi5lY2Q1Y2Vi IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9tbS9wMm0tZXB0LmMKQEAgLTU0NCw2ICs1NDQsMTIgQEAgc3RhdGljIGludCByZXNvbHZlX21p c2NvbmZpZyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICAg ICAgICAgICAgICAgICAgZS5pcGF0ID0gaXBhdDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCBl LnJlY2FsYyAmJiBwMm1faXNfY2hhbmdlYWJsZShlLnNhX3AybXQpICkKICAgICAgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZS5zYV9wMm10ID09IHAybV9p b3JlcV9zZXJ2ZXIgKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQVNTRVJUKHAybS0+aW9yZXEuZW50cnlfY291bnQgPiAwKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcDJtLT5pb3JlcS5lbnRyeV9jb3VudC0tOworICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2FfcDJt dCA9IHAybV9pc19sb2dkaXJ0eV9yYW5nZShwMm0sIGdmbiArIGksIGdmbiArIGkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwMm1fcmFtX2xvZ2RpcnR5IDogcDJtX3Jh bV9ydzsKICAgICAgICAgICAgICAgICAgICAgICAgICBlcHRfcDJtX3R5cGVfdG9fZmxhZ3MocDJt LCAmZSwgZS5zYV9wMm10LCBlLmFjY2Vzcyk7CkBAIC04MTYsNiArODIyLDIyIEBAIGVwdF9zZXRf ZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1m biwKICAgICAgICAgbmV3X2VudHJ5LnN1cHByZXNzX3ZlID0gaXNfZXB0ZV92YWxpZCgmb2xkX2Vu dHJ5KSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZW50cnkuc3Vw cHJlc3NfdmUgOiAxOwogCisgICAgLyoKKyAgICAgKiBwMm1faW9yZXFfc2VydmVyIGlzIG9ubHkg dXNlZCBmb3IgNEsgcGFnZXMsIHNvIHRoZQorICAgICAqIGNvdW50IHNoYWxsIG9ubHkgaGFwcGVu IG9uIGVwdCBwYWdlIHRhYmxlIGVudHJpZXMuCisgICAgICovCisgICAgaWYgKCBwMm10ID09IHAy bV9pb3JlcV9zZXJ2ZXIgKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGkgPT0gMCk7CisgICAgICAg IHAybS0+aW9yZXEuZW50cnlfY291bnQrKzsKKyAgICB9CisKKyAgICBpZiAoIGVwdF9lbnRyeS0+ c2FfcDJtdCA9PSBwMm1faW9yZXFfc2VydmVyICkKKyAgICB7CisgICAgICAgIEFTU0VSVChwMm0t PmlvcmVxLmVudHJ5X2NvdW50ID4gMCAmJiBpID09IDApOworICAgICAgICBwMm0tPmlvcmVxLmVu dHJ5X2NvdW50LS07CisgICAgfQorCiAgICAgcmMgPSBhdG9taWNfd3JpdGVfZXB0X2VudHJ5KGVw dF9lbnRyeSwgbmV3X2VudHJ5LCB0YXJnZXQpOwogICAgIGlmICggdW5saWtlbHkocmMpICkKICAg ICAgICAgb2xkX2VudHJ5LmVwdGUgPSAwOwpAQCAtOTY1LDcgKzk4Nyw3IEBAIHN0YXRpYyBtZm5f dCBlcHRfZ2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgaWYgKCBpc19lcHRl X3ZhbGlkKGVwdF9lbnRyeSkgKQogICAgIHsKICAgICAgICAgaWYgKCAocmVjYWxjIHx8IGVwdF9l bnRyeS0+cmVjYWxjKSAmJgotICAgICAgICAgICAgIHAybV9pc19jaGFuZ2VhYmxlKGVwdF9lbnRy eS0+c2FfcDJtdCkgKQorICAgICAgICAgICAgIHAybV9jaGVja19jaGFuZ2VhYmxlKGVwdF9lbnRy eS0+c2FfcDJtdCkgKQogICAgICAgICAgICAgKnQgPSBwMm1faXNfbG9nZGlydHlfcmFuZ2UocDJt LCBnZm4sIGdmbikgPyBwMm1fcmFtX2xvZ2RpcnR5CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHAybV9yYW1fcnc7CiAgICAgICAgIGVsc2UK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9w Mm0tcHQuYwppbmRleCBjMDA1NWYzLi40YjJmZjllIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv bW0vcDJtLXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCkBAIC00MzYsMTEgKzQz NiwxMyBAQCBzdGF0aWMgaW50IGRvX3JlY2FsYyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNp Z25lZCBsb25nIGdmbikKICAgICAgICAgIG5lZWRzX3JlY2FsYyhsMSwgKnBlbnQpICkKICAgICB7 CiAgICAgICAgIGwxX3BnZW50cnlfdCBlID0gKnBlbnQ7CisgICAgICAgIHAybV90eXBlX3QgcDJt dF9vbGQ7CiAKICAgICAgICAgaWYgKCAhdmFsaWRfcmVjYWxjKGwxLCBlKSApCiAgICAgICAgICAg ICBQMk1fREVCVUcoImJvZ3VzIHJlY2FsYyBsZWFmIGF0IGQlZDolbHg6JXVcbiIsCiAgICAgICAg ICAgICAgICAgICAgICAgcDJtLT5kb21haW4tPmRvbWFpbl9pZCwgZ2ZuLCBsZXZlbCk7Ci0gICAg ICAgIGlmICggcDJtX2lzX2NoYW5nZWFibGUocDJtX2ZsYWdzX3RvX3R5cGUobDFlX2dldF9mbGFn cyhlKSkpICkKKyAgICAgICAgcDJtdF9vbGQgPSBwMm1fZmxhZ3NfdG9fdHlwZShsMWVfZ2V0X2Zs YWdzKGUpKTsKKyAgICAgICAgaWYgKCBwMm1faXNfY2hhbmdlYWJsZShwMm10X29sZCkgKQogICAg ICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1hc2sgPSB+MFVMIDw8IChsZXZlbCAq IFBBR0VUQUJMRV9PUkRFUik7CiAgICAgICAgICAgICBwMm1fdHlwZV90IHAybXQgPSBwMm1faXNf bG9nZGlydHlfcmFuZ2UocDJtLCBnZm4gJiBtYXNrLCBnZm4gfCB+bWFzaykKQEAgLTQ2MCw2ICs0 NjIsMTMgQEAgc3RhdGljIGludCBkb19yZWNhbGMoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5z aWduZWQgbG9uZyBnZm4pCiAgICAgICAgICAgICAgICAgICAgICBtZm4gJj0gfigodW5zaWduZWQg bG9uZylfUEFHRV9QU0VfUEFUID4+IFBBR0VfU0hJRlQpOwogICAgICAgICAgICAgICAgIGZsYWdz IHw9IF9QQUdFX1BTRTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCBwMm10X29s ZCA9PSBwMm1faW9yZXFfc2VydmVyICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBB U1NFUlQocDJtLT5pb3JlcS5lbnRyeV9jb3VudCA+IDApOworICAgICAgICAgICAgICAgIHAybS0+ aW9yZXEuZW50cnlfY291bnQtLTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZSA9IGwx ZV9mcm9tX3BmbihtZm4sIGZsYWdzKTsKICAgICAgICAgICAgIHAybV9hZGRfaW9tbXVfZmxhZ3Mo JmUsIGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocDJtdCA9PSBwMm1f cmFtX3J3KQpAQCAtNjA2LDYgKzYxNSw4IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9k b21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKIAogICAgIGlmICggcGFn ZV9vcmRlciA9PSBQQUdFX09SREVSXzRLICkKICAgICB7CisgICAgICAgIHAybV90eXBlX3QgcDJt dF9vbGQ7CisKICAgICAgICAgcmMgPSBwMm1fbmV4dF9sZXZlbChwMm0sICZ0YWJsZSwgJmdmbl9y ZW1haW5kZXIsIGdmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMMl9QQUdFVEFCTEVf U0hJRlQgLSBQQUdFX1NISUZULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwyX1BBR0VU QUJMRV9FTlRSSUVTLCBQR1RfbDFfcGFnZV90YWJsZSwgMSk7CkBAIC02MjksNiArNjQwLDIxIEBA IHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBn Zm4sIG1mbl90IG1mbiwKICAgICAgICAgaWYgKCBlbnRyeV9jb250ZW50LmwxICE9IDAgKQogICAg ICAgICAgICAgcDJtX2FkZF9pb21tdV9mbGFncygmZW50cnlfY29udGVudCwgMCwgaW9tbXVfcHRl X2ZsYWdzKTsKIAorICAgICAgICBwMm10X29sZCA9IHAybV9mbGFnc190b190eXBlKGwxZV9nZXRf ZmxhZ3MoKnAybV9lbnRyeSkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIHAybV9pb3JlcV9z ZXJ2ZXIgaXMgb25seSB1c2VkIGZvciA0SyBwYWdlcywgc28KKyAgICAgICAgICogdGhlIGNvdW50 IHNoYWxsIG9ubHkgYmUgcGVyZm9ybWVkIGZvciBsZXZlbCAxIGVudHJpZXMuCisgICAgICAgICAq LworICAgICAgICBpZiAoIHAybXQgPT0gcDJtX2lvcmVxX3NlcnZlciApCisgICAgICAgICAgICBw Mm0tPmlvcmVxLmVudHJ5X2NvdW50Kys7CisKKyAgICAgICAgaWYgKCBwMm10X29sZCA9PSBwMm1f aW9yZXFfc2VydmVyICkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHAybS0+aW9yZXEu ZW50cnlfY291bnQgPiAwKTsKKyAgICAgICAgICAgIHAybS0+aW9yZXEuZW50cnlfY291bnQtLTsK KyAgICAgICAgfQorCiAgICAgICAgIC8qIGxldmVsIDEgZW50cnkgKi8KICAgICAgICAgcDJtLT53 cml0ZV9wMm1fZW50cnkocDJtLCBnZm4sIHAybV9lbnRyeSwgZW50cnlfY29udGVudCwgMSk7CiAg ICAgICAgIC8qIE5COiBwYWdpbmdfd3JpdGVfcDJtX2VudHJ5KCkgaGFuZGxlcyB0bGIgZmx1c2hl cyBwcm9wZXJseSAqLwpAQCAtNzI5LDcgKzc1NSw3IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0 IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKIHN0YXRpYyBp bmxpbmUgcDJtX3R5cGVfdCByZWNhbGNfdHlwZShib29sX3QgcmVjYWxjLCBwMm1fdHlwZV90IHQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHAybV9kb21haW4g KnAybSwgdW5zaWduZWQgbG9uZyBnZm4pCiB7Ci0gICAgaWYgKCAhcmVjYWxjIHx8ICFwMm1faXNf Y2hhbmdlYWJsZSh0KSApCisgICAgaWYgKCAhcmVjYWxjIHx8ICFwMm1fY2hlY2tfY2hhbmdlYWJs ZSh0KSApCiAgICAgICAgIHJldHVybiB0OwogICAgIHJldHVybiBwMm1faXNfbG9nZGlydHlfcmFu Z2UocDJtLCBnZm4sIGdmbikgPyBwMm1fcmFtX2xvZ2RpcnR5CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHAybV9yYW1fcnc7CmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKaW5kZXggYjg0YWRk MC4uNDE2OWQxOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9tbS9wMm0uYwpAQCAtMzE3LDYgKzMxNywxNSBAQCBpbnQgcDJtX3NldF9pb3JlcV9z ZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgaWYgKCBwMm0tPmlvcmVxLnNlcnZlciAh PSBOVUxMICkKICAgICAgICAgICAgIGdvdG8gb3V0OwogCisgICAgICAgIC8qCisgICAgICAgICAq IEl0IGlzIHBvc3NpYmxlIHRoYXQgYW4gaW9yZXEgc2VydmVyIGhhcyBqdXN0IGJlZW4gdW5tYXBw ZWQsCisgICAgICAgICAqIHJlbGVhc2VkIHRoZSBzcGluIGxvY2ssIHdpdGggc29tZSBwMm1faW9y ZXFfc2VydmVyIGVudHJpZXMKKyAgICAgICAgICogaW4gcDJtIHRhYmxlIHJlbWFpbmVkLiBXZSBz aGFsbCByZWZ1c2UgYW5vdGhlciBpb3JlcSBzZXJ2ZXIKKyAgICAgICAgICogbWFwcGluZyByZXF1 ZXN0IGluIHN1Y2ggY2FzZS4KKyAgICAgICAgICovCisgICAgICAgIGlmICggcmVhZF9hdG9taWMo JnAybS0+aW9yZXEuZW50cnlfY291bnQpICkKKyAgICAgICAgICAgIGdvdG8gb3V0OworCiAgICAg ICAgIHAybS0+aW9yZXEuc2VydmVyID0gczsKICAgICAgICAgcDJtLT5pb3JlcS5mbGFncyA9IGZs YWdzOwogICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4v aW5jbHVkZS9hc20teDg2L3AybS5oCmluZGV4IDQ1MjE2MjAuLmU3ZTM5MGQgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0u aApAQCAtMTIwLDcgKzEyMCwxMCBAQCB0eXBlZGVmIHVuc2lnbmVkIGludCBwMm1fcXVlcnlfdDsK IAogLyogVHlwZXMgdGhhdCBjYW4gYmUgc3ViamVjdCB0byBidWxrIHRyYW5zaXRpb25zLiAqLwog I2RlZmluZSBQMk1fQ0hBTkdFQUJMRV9UWVBFUyAocDJtX3RvX21hc2socDJtX3JhbV9ydykgXAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX2xvZ2Rp cnR5KSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9y YW1fbG9nZGlydHkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21h c2socDJtX2lvcmVxX3NlcnZlcikgKQorCisjZGVmaW5lIFAyTV9JT1JFUV9UWVBFUyAocDJtX3Rv X21hc2socDJtX2lvcmVxX3NlcnZlcikpCiAKICNkZWZpbmUgUDJNX1BPRF9UWVBFUyAocDJtX3Rv X21hc2socDJtX3BvcHVsYXRlX29uX2RlbWFuZCkpCiAKQEAgLTE1Nyw2ICsxNjAsNyBAQCB0eXBl ZGVmIHVuc2lnbmVkIGludCBwMm1fcXVlcnlfdDsKICNkZWZpbmUgcDJtX2lzX3JlYWRvbmx5KF90 KSAocDJtX3RvX21hc2soX3QpICYgUDJNX1JPX1RZUEVTKQogI2RlZmluZSBwMm1faXNfZGlzY2Fy ZF93cml0ZShfdCkgKHAybV90b19tYXNrKF90KSAmIFAyTV9ESVNDQVJEX1dSSVRFX1RZUEVTKQog I2RlZmluZSBwMm1faXNfY2hhbmdlYWJsZShfdCkgKHAybV90b19tYXNrKF90KSAmIFAyTV9DSEFO R0VBQkxFX1RZUEVTKQorI2RlZmluZSBwMm1faXNfaW9yZXEoX3QpIChwMm1fdG9fbWFzayhfdCkg JiBQMk1fSU9SRVFfVFlQRVMpCiAjZGVmaW5lIHAybV9pc19wb2QoX3QpIChwMm1fdG9fbWFzayhf dCkgJiBQMk1fUE9EX1RZUEVTKQogI2RlZmluZSBwMm1faXNfZ3JhbnQoX3QpIChwMm1fdG9fbWFz ayhfdCkgJiBQMk1fR1JBTlRfVFlQRVMpCiAvKiBHcmFudCB0eXBlcyBhcmUgKm5vdCogY29uc2lk ZXJlZCB2YWxpZCwgYmVjYXVzZSB0aGV5IGNhbiBiZQpAQCAtMTc4LDYgKzE4Miw4IEBAIHR5cGVk ZWYgdW5zaWduZWQgaW50IHAybV9xdWVyeV90OwogCiAjZGVmaW5lIHAybV9hbGxvd3NfaW52YWxp ZF9tZm4odCkgKHAybV90b19tYXNrKHQpICYgUDJNX0lOVkFMSURfTUZOX1RZUEVTKQogCisjZGVm aW5lIHAybV9jaGVja19jaGFuZ2VhYmxlKHQpIChwMm1faXNfY2hhbmdlYWJsZSh0KSAmJiAhcDJt X2lzX2lvcmVxKHQpKQorCiB0eXBlZGVmIGVudW0gewogICAgIHAybV9ob3N0LAogICAgIHAybV9u ZXN0ZWQsCkBAIC0zNDksNiArMzU1LDcgQEAgc3RydWN0IHAybV9kb21haW4gewogICAgICAgICAg ICogYXJlIHRvIGJlIGVtdWxhdGVkIGJ5IGFuIGlvcmVxIHNlcnZlci4KICAgICAgICAgICAqLwog ICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOworICAgICAgICAgdW5zaWduZWQgbG9uZyBlbnRy eV9jb3VudDsKICAgICAgfSBpb3JlcTsKIH07CiAKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==