From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v9 05/25] x86: refactor psr: L3 CAT: implement CPU init and free flow. Date: Thu, 16 Mar 2017 19:07:55 +0800 Message-ID: <1489662495-5375-6-git-send-email-yi.y.sun@linux.intel.com> References: <1489662495-5375-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1coTLp-0004Af-Cg for xen-devel@lists.xenproject.org; Thu, 16 Mar 2017 11:13:49 +0000 In-Reply-To: <1489662495-5375-1-git-send-email-yi.y.sun@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.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBDUFUgaW5pdCBhbmQgZnJlZSBmbG93IGluY2x1ZGlu ZyBMMyBDQVQKaW5pdGlhbGl6YXRpb24gYW5kIGZlYXR1cmUgYXJyYXkgZnJlZS4gSXQgaW5jbHVk ZXMgYmVsb3cgZmxvd3M6CjEuIHByZXNtcCBpbml0OgogICAgLSBwYXJzZSBjb21tYW5kIGxpbmUg cGFyYW1ldGVyLgogICAgLSBhbGxvY2F0ZSBzb2NrZXQgaW5mbyBmb3IgZXZlcnkgc29ja2V0Lgog ICAgLSBhbGxvY2F0ZSBmZWF0dXJlIHJlc291cmNlLgogICAgLSBpbml0aWFsaXplIHNvY2tldCBp bmZvLCBnZXQgZmVhdHVyZSBpbmZvIGFuZCBhZGQgZmVhdHVyZSBpbnRvIGZlYXR1cmUKICAgICAg YXJyYXkgcGVyIGNwdWlkIHJlc3VsdC4KICAgIC0gZnJlZSByZXNvdXJjZXMgYWxsb2NhdGVkIGlm IGVycm9yIGhhcHBlbnMuCiAgICAtIHJlZ2lzdGVyIGNwdSBub3RpZmllciB0byBoYW5kbGUgY3B1 IGV2ZW50cy4KMi4gY3B1IG5vdGlmaWVyOgogICAgLSBoYW5kbGUgY3B1IG9ubGluZSBldmVudHMs IGlmIGluaXRpYWxpemF0aW9uIHdvcmsgaGFzIGJlZW4gZG9uZSBiZWZvcmUsCiAgICAgIGRvIG5v dGhpbmcuCiAgICAtIGhhbmRsZSBjcHUgb2ZmbGluZSBldmVudHMsIGlmIGl0IGlzIHRoZSBsYXN0 IGNwdSBvZmZsaW5lLCBmcmVlIGZlYXR1cmUKICAgICAgcmVzb3VyY2VzLgoKU2lnbmVkLW9mZi1i eTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+Ci0tLQp2OToKICAgIC0gYWRkIGNv bW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gdGhlIGZsb3dzLgogICAgLSBoYW5kbGUgY3B1IG9mZmxp bmUgYW5kIG9ubGluZSBhZ2FpbiBjYXNlIHRvIHJlYWQgTVNScyByZWdpc3RlcnMgdmFsdWVzCiAg ICAgIGJhY2sgYW5kIHNhdmUgdGhlbSBpbnRvIGNvcyBhcnJheSB0byBtYWtlIHVzZXIgY2FuIGdl dCByZWFsIGRhdGEuCiAgICAtIGNyZWF0ZSBhIG5ldyBwYXRjaCBhYm91dCBtb3ZpbmcgJ2NwdWlk X2NvdW50X2xlYWYnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIG1vZGlmeSBj b21tZW50IHRvIGV4cGxhaW4gd2h5IG5vdCBmcmVlIHNvbWUgcmVzb3VyY2UgaW4gJ2ZyZWVfZmVh dHVyZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gaW1wbGVtZW50ICdwc3Jf YWxsb2NfZmVhdF9lbmFibGVkJyB0byBjaGVjayBpZiBhbGxvY2F0aW9uIGZlYXR1cmUgaXMKICAg ICAgZW5hYmxlZCBpbiBjbWRsaW5lIGFuZCBzb21lIGluaXRpYWxpemF0aW9uIHdvcmsgZG9uZS4K ICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSBpbXBsZW1lbnQgJ2NhdF9kZWZhdWx0 X3ZhbCcgdG8gc2V0IGRlZmF1bHQgdmFsdWUgZm9yIENBVCBmZWF0dXJlcy4KICAgICAgKHN1Z2dl c3RlZCBieSBXZWkgTGl1KQogICAgLSByZXBsYWNlIGZlYXR1cmUgbGlzdCBoYW5kbGluZyB0byBm ZWF0dXJlIGFycmF5IGhhbmRsaW5nLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAg IC0gaW1wbGVtZW50IGEgY29tbW9uICdjYXRfaW5pdF9mZWF0dXJlJyB0byByZXBsYWNlIEwzIENB VC9MMiBDQVQgc3BlY2lmaWMKICAgICAgaW5pdCBmdW5jdGlvbnMuCiAgICAgIChzdWdnZXN0ZWQg YnkgUm9nZXIgUGF1KQogICAgLSBtb2RpZnkgY29tbWVudHMgZm9yIGdsb2JhbCBmZWF0dXJlIG5v ZGUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vz c2FyeSBjb21tZW50cy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVt b3ZlIHVubmVjZXNzYXJ5ICdlbHNlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gcmVtb3ZlICducl9mZWF0Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gbW9kaWZ5IHBhdGNoIHRpdGxlIHRvIGluZGljYXRlICdMMyBDQVQnLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGVjayBnbG9iYWwgZmxhZyB3aXRoIGJvb3Qg Y3B1IG9wZXJhdGlvbnMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJl bW92ZSAnY3B1X2luaXRfd29yaycgYW5kIG1vdmUgY29kZXMgaW50byAncHNyX2NwdV9pbml0Jy4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlICdjcHVfZmluaV93 b3JrJyBhbmQgbW92ZSBjb2RlcyBpbnRvICdwc3JfY3B1X2ZpbmknLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBhc3NpZ24gdmFsdWUgZm9yICdjb3NfbnVtJy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIGFib3V0ICd1aW50NjRfdCcg dG8gJ3VpbnQzMl90Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjg6CiAgICAt IGZpeCBmb3JtYXQgaXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBX aWxrKQogICAgLSBhZGQgY29tbWVudHMgdG8gZXhwbGFpbiB3aHkgd2UgY2FyZSBhYm91dCBjcHVt YXNrX2VtcHR5IHdoZW4gdGhlIGxhc3QKICAgICAgY3B1IG9uIHNvY2tldCBpcyBvZmZsaW5lLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKdjc6CiAgICAtIGluaXRp YWxpemUgc3RydWN0dXJlIG9iamVjdHMgZm9yIGF2b2lkaW5nIHN1cnByaXNlLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gZml4IHR5cG8uCiAgICAgIChz dWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBmaXggYSBsb2dpY2FsIG1p c3Rha2Ugd2hlbiBoYW5kbGluZyB0aGUgbGFzdCBjcHUgb2ZmbGluZSBldmVudC4KICAgICAgKHN1 Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCnY2OgogICAgLSB1c2UgJ3N0cnVjdCBj cHVpZF9sZWFmJyBpbnRyb2R1Y2VkIGluIEFuZHJldydzIHBhdGNoLgogICAgICAoc3VnZ2VzdGVk IGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRkIGNvbW1lbnRzIGFib3V0IGNwdV9h ZGRfcmVtb3ZlX2xvY2suCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxr KQogICAgLSBjaGFuZ2UgJ2NsZWFyX2JpdCcgdG8gJ19fY2xlYXJfYml0Jy4KICAgICAgKHN1Z2dl c3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGFkZCAnQVNTRVJUJyBjaGVjayB3 aGVuIHNldHRpbmcgJ2ZlYXRfbWFzaycuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6 dXRlayBXaWxrKQogICAgLSBhZGp1c3QgJ3ByaW50aycgcG9zaXRpb24gdG8gYXZvaWQgb2RkIHNw YWNpbmcuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBh ZGQgY29tbWVudCB0byBleHBsYWluIHVzYWdlIG9mICdmZWF0X2wzX2NhdCcuCiAgICAgIChzdWdn ZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBmaXggd29yZGluZy4KICAgICAg KHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIG1vdmUgJ2NwdWlkX2Nv dW50X2xlYWYnIGhlbHBlciBmdW5jdGlvbiB0byAnYXNtLXg4Ni9wcm9jZXNzb3IuaCcuCiAgICAg IEl0IGNhbm5vdCBiZSBtb3ZlZCB0byAnY3B1aWQuaCcgd2hpY2ggY2F1c2VzIGNvbXBpbGF0aW9u IGVycm9yIGJlY2F1c2UKICAgICAgb2YgaGVhZGVyIGZpbGUgbG9vcCByZWZlcmVuY2UuCiAgICAg IChzdWdnZXN0ZWQgYnkgQW5kcmV3IENvb3BlcikKdjU6CiAgICAtIGFkZCBjb21tZW50IHRvIGV4 cGxhaW4gdGhlIHJlYXNvbiB0byBkZWZpbmUgJ2ZlYXRfbDNfY2F0Jy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gdXNlICdsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUnLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgY29kZXMgdG8gZnJl ZSAnZmVhdF9sM19jYXQnIGluICdmcmVlX2ZlYXR1cmUnIHRvIGF2b2lkIHRoZSBuZWVkCiAgICAg IGZvciBhbiBhbGxvY2F0aW9uIHRoZSBuZXh0IHRpbWUgYSBDUFUgY29tZXMgb25saW5lLgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBkZWZpbmUgJ3N0cnVjdCBjcHVpZF9s ZWFmX3JlZ3MnIHRvIGVuY2Fwc3VsYXRlIGVheH5lZHguCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIHByaW50IGZlYXR1cmUgaW5mbyBvbiBhIHNvY2tldCBvbmx5IHdoZW4g J29wdF9jcHVfaW5mbycgaXMgdHJ1ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gZGVjbGFyZSBnbG9iYWwgdmFyaWFibGUgJ2wzX2NhdF9vcHMnIHRvICdzdGF0aWMgY29u c3QnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSB1c2UgJ2N1cnJlbnRf Y3B1X2RhdGEnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW5hbWUg J2ZlYXRfdG1wJyB0byAnZmVhdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIGNsZWFyIFBRRSBmZWF0dXJlIGJpdCB3aGVuIHRoZSBtYXhpbXVtIENQVUlEIGxldmVsIGlz IHRvbyBsb3cuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGRpcmVjdGx5 IGNhbGwgJ2wzX2NhdF9pbml0X2ZlYXR1cmUnLiBObyBuZWVkIHRvIG1ha2UgaXQgYSBjYWxsYmFj awogICAgICBmdW5jdGlvbi4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g cmVtb3ZlIGxvY2FsIHZhcmlhYmxlICdpbmZvJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gbW92ZSAnSU5JVF9MSVNUX0hFQUQnIGludG8gJ2NwdV9pbml0X3dvcmsnIHRv IGJlIHRvZ2V0aGVyIHdpdGgKICAgICAgc3Bpbl9sb2NrX2luaXQoKS4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlICdjcHVfcHJlcGFyZV93b3JrJyBhbmQgbW92 ZSBpdHMgY29udGVudCBpbnRvICdwc3JfY3B1X3ByZXBhcmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQp2NDoKICAgIC0gY3JlYXRlIHRoaXMgcGF0Y2ggYmVjYXVzZSBvZiByZW1v dmluZyBhbGwgQ0FUL0NEUCBvbGQgY29kZXMgdG8gbWFrZQogICAgICBpbXBsZW1lbnRhdGlvbiBi ZSBtb3JlIGVhc2lseSB1bmRlcnN0b29kLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQotLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyB8IDIwMiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDE5NyBpbnNlcnRp b25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBi L3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCA4MjJmMWMwLi42NmE5Y2U4IDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC0xOCw2ICsxOCw3 IEBACiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KICNpbmNs dWRlIDxhc20vcHNyLmg+CisjaW5jbHVkZSA8YXNtL3g4Nl9lbXVsYXRlLmg+CiAKIC8qCiAgKiBU ZXJtaW5vbG9neToKQEAgLTM0LDYgKzM1LDkgQEAKICNkZWZpbmUgUFNSX0NBVCAgICAgICAgKDE8 PDEpCiAjZGVmaW5lIFBTUl9DRFAgICAgICAgICgxPDwyKQogCisjZGVmaW5lIENBVF9DQk1fTEVO X01BU0sgMHgxZgorI2RlZmluZSBDQVRfQ09TX01BWF9NQVNLIDB4ZmZmZgorCiAvKgogICogUGVy IFNETSBjaGFwdGVyICdDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3k6IENhY2hlIE1hc2sgQ29u ZmlndXJhdGlvbicsCiAgKiB0aGUgTVNScyByYW5naW5nIGZyb20gMEM5MEggdGhyb3VnaCAwRDBG SCAoaW5jbHVzaXZlKSwgZW5hYmxlcyBzdXBwb3J0IGZvcgpAQCAtNDYsNiArNTAsOSBAQAogICov CiAjZGVmaW5lIE1BWF9DT1NfUkVHX0NOVCAgMTI4CiAKKy8qIENBVCBmZWF0dXJlcyB1c2UgMSBD T1MgcmVnaXN0ZXIgaW4gb25lIGFjY2Vzcy4gKi8KKyNkZWZpbmUgQ0FUX0NPU19OVU0gICAgICAx CisKIGVudW0gcHNyX2ZlYXRfdHlwZSB7CiAgICAgUFNSX1NPQ0tFVF9MM19DQVQgPSAwLAogICAg IFBTUl9TT0NLRVRfTDNfQ0RQLApAQCAtMTI2LDExICsxMzMsMTEwIEBAIHN0cnVjdCBwc3JfYXNz b2MgewogCiBzdHJ1Y3QgcHNyX2NtdCAqX19yZWFkX21vc3RseSBwc3JfY210OwogCitzdGF0aWMg c3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqX19yZWFkX21vc3RseSBzb2NrZXRfaW5mbzsKKwogc3Rh dGljIHVuc2lnbmVkIGludCBvcHRfcHNyOwogc3RhdGljIHVuc2lnbmVkIGludCBfX2luaXRkYXRh IG9wdF9ybWlkX21heCA9IDI1NTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSBv cHRfY29zX21heCA9IE1BWF9DT1NfUkVHX0NOVDsKIHN0YXRpYyB1aW50NjRfdCBybWlkX21hc2s7 CiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHBzcl9hc3NvYywgcHNyX2Fzc29jKTsKIAor LyoKKyAqIERlY2xhcmUgZ2xvYmFsIGZlYXR1cmUgbm9kZSBmb3IgZXZlcnkgZmVhdHVyZSB0byBm YWNpbGl0YXRlIHRoZSBmZWF0dXJlCisgKiBhcnJheSBjcmVhdGlvbi4gSXQgaXMgdXNlZCB0byB0 cmFuc2llbnRseSBzdG9yZSBhIHNwYXJlIG5vZGUuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZmVhdF9u b2RlICpmZWF0X2wzX2NhdDsKKworLyogQ29tbW9uIGZ1bmN0aW9ucyAqLworI2RlZmluZSBjYXRf ZGVmYXVsdF92YWwobGVuKSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKCAodWludDMy X3QpKCgxdWwgPDwgbGVuKSAtIDEpICkKKworLyoKKyAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNo ZWNrIGlmIGFueSBhbGxvY2F0aW9uIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZAorICogaW4gY21k bGluZS4KKyAqLworc3RhdGljIGJvb2wgcHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCh2b2lkKQorewor ICAgIHJldHVybiAoKCFzb2NrZXRfaW5mbykgPyBmYWxzZSA6IHRydWUgKTsKK30KKworc3RhdGlj IHZvaWQgZnJlZV9mZWF0dXJlKHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCit7CisgICAg dW5zaWduZWQgaW50IGk7CisKKyAgICBpZiAoICFpbmZvICkKKyAgICAgICAgcmV0dXJuOworCisg ICAgLyoKKyAgICAgKiBGcmVlIHJlc291cmNlcyBvZiBmZWF0dXJlcy4gVGhlIGdsb2JhbCBmZWF0 dXJlIG9iamVjdCwgZS5nLiBmZWF0X2wzX2NhdCwKKyAgICAgKiBtYXkgbm90IGJlIGZyZWVkIGhl cmUgaWYgaXQgaXMgbm90IGFkZGVkIGludG8gYXJyYXkuIEl0IGlzIHNpbXBseSBiZWluZworICAg ICAqIGtlcHQgdW50aWwgdGhlIG5leHQgQ1BVIG9ubGluZSBhdHRlbXB0LgorICAgICAqLworICAg IGZvciAoIGkgPSAwOyBpIDwgUFNSX1NPQ0tFVF9NQVhfRkVBVDsgaSsrICkKKyAgICB7CisgICAg ICAgIGlmICggIWluZm8tPmZlYXR1cmVzW2ldICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg ICAgICAgIHhmcmVlKGluZm8tPmZlYXR1cmVzW2ldKTsKKyAgICAgICAgaW5mby0+ZmVhdHVyZXNb aV0gPSBOVUxMOworICAgICAgICBfX2NsZWFyX2JpdChpLCAmaW5mby0+ZmVhdF9tYXNrKTsKKyAg ICB9Cit9CisKKy8qIENBVCBjb21tb24gZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uLiAqLworc3Rh dGljIHZvaWQgY2F0X2luaXRfZmVhdHVyZShzdHJ1Y3QgY3B1aWRfbGVhZiByZWdzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgdHlwZSkKK3sKKyAgICB1 bnNpZ25lZCBpbnQgc29ja2V0LCBpOworICAgIHN0cnVjdCBwc3JfY2F0X2h3X2luZm8gY2F0ID0g eyB9OworICAgIHVpbnQ2NF90IHZhbDsKKworICAgIC8qIE5vIHZhbGlkIHZhbHVlIHNvIGRvIG5v dCBlbmFibGUgZmVhdHVyZS4gKi8KKyAgICBpZiAoICFyZWdzLmEgfHwgIXJlZ3MuZCApCisgICAg ICAgIHJldHVybjsKKworICAgIGNhdC5jYm1fbGVuID0gKHJlZ3MuYSAmIENBVF9DQk1fTEVOX01B U0spICsgMTsKKyAgICBjYXQuY29zX21heCA9IG1pbihvcHRfY29zX21heCwgcmVncy5kICYgQ0FU X0NPU19NQVhfTUFTSyk7CisKKyAgICAvKiBjb3M9MCBpcyByZXNlcnZlZCBhcyBkZWZhdWx0IGNi bShhbGwgYml0cyB3aXRoaW4gY2JtX2xlbiBhcmUgMSkuICovCisgICAgZmVhdC0+Y29zX3JlZ192 YWxbMF0gPSBjYXRfZGVmYXVsdF92YWwoY2F0LmNibV9sZW4pOworICAgIC8qCisgICAgICogVG8g aGFuZGxlIGNwdSBvZmZsaW5lIGFuZCB0aGVuIG9ubGluZSBjYXNlLCB3ZSBuZWVkIHJlYWQgTVNS cyBiYWNrIHRvCisgICAgICogc2F2ZSB2YWx1ZXMgaW50byBjb3NfcmVnX3ZhbCBhcnJheS4KKyAg ICAgKi8KKyAgICBmb3IgKCBpID0gMTsgaSA8PSBjYXQuY29zX21heDsgaSsrICkKKyAgICB7Cisg ICAgICAgIHJkbXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSyhpKSwgdmFsKTsKKyAgICAgICAgZmVh dC0+Y29zX3JlZ192YWxbaV0gPSAodWludDMyX3QpdmFsOworICAgIH0KKworICAgIGZlYXQtPmlu Zm8uY2F0X2luZm8gPSBjYXQ7CisgICAgZmVhdC0+Y29zX251bSA9IENBVF9DT1NfTlVNOworCisg ICAgLyogQWRkIHRoaXMgZmVhdHVyZSBpbnRvIGFycmF5LiAqLworICAgIGluZm8tPmZlYXR1cmVz W3R5cGVdID0gZmVhdDsKKworICAgIEFTU0VSVCghdGVzdF9iaXQodHlwZSwgJmluZm8tPmZlYXRf bWFzaykpOworICAgIF9fc2V0X2JpdCh0eXBlLCAmaW5mby0+ZmVhdF9tYXNrKTsKKworICAgIHNv Y2tldCA9IGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKTsKKyAgICBpZiAoICFvcHRf Y3B1X2luZm8gKQorICAgICAgICByZXR1cm47CisKKyAgICBwcmludGsoWEVOTE9HX0lORk8gIiVz IENBVDogZW5hYmxlZCBvbiBzb2NrZXQgJXUsIGNvc19tYXg6JXUsIGNibV9sZW46JXVcbiIsCisg ICAgICAgICAgICgodHlwZSA9PSBQU1JfU09DS0VUX0wzX0NBVCkgPyAiTDMiIDogIkwyIiksCisg ICAgICAgICAgIHNvY2tldCwgZmVhdC0+aW5mby5jYXRfaW5mby5jb3NfbWF4LAorICAgICAgICAg ICBmZWF0LT5pbmZvLmNhdF9pbmZvLmNibV9sZW4pOworCisgICAgcmV0dXJuOworfQorCisvKiBM MyBDQVQgb3BzICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfb3BzIGwzX2NhdF9vcHMgPSB7 Cit9OworCiBzdGF0aWMgdm9pZCBfX2luaXQgcGFyc2VfcHNyX2Jvb2woY2hhciAqcywgY2hhciAq dmFsdWUsIGNoYXIgKmZlYXR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IG1hc2spCiB7CkBAIC0xNzAsNiArMjc2LDkgQEAgc3RhdGljIHZvaWQgX19p bml0IHBhcnNlX3Bzcl9wYXJhbShjaGFyICpzKQogICAgICAgICBpZiAoIHZhbF9zdHIgJiYgIXN0 cmNtcChzLCAicm1pZF9tYXgiKSApCiAgICAgICAgICAgICBvcHRfcm1pZF9tYXggPSBzaW1wbGVf c3RydG91bCh2YWxfc3RyLCBOVUxMLCAwKTsKIAorICAgICAgICBpZiAoIHZhbF9zdHIgJiYgIXN0 cmNtcChzLCAiY29zX21heCIpICkKKyAgICAgICAgICAgIG9wdF9jb3NfbWF4ID0gc2ltcGxlX3N0 cnRvdWwodmFsX3N0ciwgTlVMTCwgMCk7CisKICAgICAgICAgcyA9IHNzICsgMTsKICAgICB9IHdo aWxlICggc3MgKTsKIH0KQEAgLTMyNSwxOSArNDM0LDk4IEBAIHZvaWQgcHNyX2RvbWFpbl9mcmVl KHN0cnVjdCBkb21haW4gKmQpCiAgICAgcHNyX2ZyZWVfcm1pZChkKTsKIH0KIAotc3RhdGljIGlu dCBwc3JfY3B1X3ByZXBhcmUodW5zaWduZWQgaW50IGNwdSkKK3N0YXRpYyB2b2lkIF9faW5pdCBp bml0X3Bzcih2b2lkKQogeworICAgIGlmICggb3B0X2Nvc19tYXggPCAxICkKKyAgICB7CisgICAg ICAgIHByaW50ayhYRU5MT0dfSU5GTyAiQ0FUOiBkaXNhYmxlZCwgY29zX21heCBpcyB0b28gc21h bGxcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc29ja2V0X2luZm8gPSB4emFs bG9jX2FycmF5KHN0cnVjdCBwc3Jfc29ja2V0X2luZm8sIG5yX3NvY2tldHMpOworCisgICAgaWYg KCAhc29ja2V0X2luZm8gKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPICJGYWls ZWQgdG8gYWxsb2Mgc29ja2V0X2luZm8hXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30K Kworc3RhdGljIHZvaWQgX19pbml0IHBzcl9mcmVlKHZvaWQpCit7CisgICAgeGZyZWUoc29ja2V0 X2luZm8pOworICAgIHNvY2tldF9pbmZvID0gTlVMTDsKK30KKworc3RhdGljIGludCBwc3JfY3B1 X3ByZXBhcmUodm9pZCkKK3sKKyAgICBpZiAoICFwc3JfYWxsb2NfZmVhdF9lbmFibGVkKCkgKQor ICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIE1hbGxvYyBtZW1vcnkgZm9yIHRoZSBnbG9iYWwg ZmVhdHVyZSBoZWFkIGhlcmUuICovCisgICAgaWYgKCBmZWF0X2wzX2NhdCA9PSBOVUxMICYmCisg ICAgICAgICAoZmVhdF9sM19jYXQgPSB4emFsbG9jKHN0cnVjdCBmZWF0X25vZGUpKSA9PSBOVUxM ICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGlj IHZvaWQgcHNyX2NwdV9pbml0KHZvaWQpCiB7CisgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAq aW5mbzsKKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0LCBpOworICAgIHVuc2lnbmVkIGludCBjcHUg PSBzbXBfcHJvY2Vzc29yX2lkKCk7CisgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdDsKKyAgICBz dHJ1Y3QgY3B1aWRfbGVhZiByZWdzOworCisgICAgaWYgKCAhcHNyX2FsbG9jX2ZlYXRfZW5hYmxl ZCgpIHx8ICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfUFFFKSApCisgICAgICAgIGdvdG8gYXNz b2NfaW5pdDsKKworICAgIGlmICggYm9vdF9jcHVfZGF0YS5jcHVpZF9sZXZlbCA8IFBTUl9DUFVJ RF9MRVZFTF9DQVQgKQorICAgIHsKKyAgICAgICAgc2V0dXBfY2xlYXJfY3B1X2NhcChYODZfRkVB VFVSRV9QUUUpOworICAgICAgICBnb3RvIGFzc29jX2luaXQ7CisgICAgfQorCisgICAgc29ja2V0 ID0gY3B1X3RvX3NvY2tldChjcHUpOworICAgIGluZm8gPSBzb2NrZXRfaW5mbyArIHNvY2tldDsK KyAgICBpZiAoIGluZm8tPmZlYXRfbWFzayApCisgICAgICAgIGdvdG8gYXNzb2NfaW5pdDsKKwor ICAgIGZvciAoIGkgPSAwOyBpIDwgUFNSX1NPQ0tFVF9NQVhfRkVBVDsgaSsrICkKKyAgICAgICAg aW5mby0+ZmVhdHVyZXNbaV0gPSBOVUxMOworCisgICAgc3Bpbl9sb2NrX2luaXQoJmluZm8tPnJl Zl9sb2NrKTsKKworICAgIGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMCwg JnJlZ3MpOworICAgIGlmICggcmVncy5iICYgUFNSX1JFU09VUkNFX1RZUEVfTDMgKQorICAgIHsK KyAgICAgICAgY3B1aWRfY291bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAxLCAmcmVncyk7 CisKKyAgICAgICAgZmVhdCA9IGZlYXRfbDNfY2F0OworICAgICAgICBmZWF0X2wzX2NhdCA9IE5V TEw7CisgICAgICAgIGZlYXQtPm9wcyA9IGwzX2NhdF9vcHM7CisKKyAgICAgICAgY2F0X2luaXRf ZmVhdHVyZShyZWdzLCBmZWF0LCBpbmZvLCBQU1JfU09DS0VUX0wzX0NBVCk7CisgICAgfQorCith c3NvY19pbml0OgogICAgIHBzcl9hc3NvY19pbml0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBzcl9j cHVfZmluaSh1bnNpZ25lZCBpbnQgY3B1KQogewotICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBp bnQgc29ja2V0ID0gY3B1X3RvX3NvY2tldChjcHUpOworCisgICAgaWYgKCAhcHNyX2FsbG9jX2Zl YXRfZW5hYmxlZCgpICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBXZSBvbmx5 IGZyZWUgd2hlbiB3ZSBhcmUgdGhlIGxhc3QgQ1BVIGluIHRoZSBzb2NrZXQuIFRoZSBzb2NrZXRf Y3B1bWFzaworICAgICAqIGlzIGNsZWFyZWQgcHJpb3IgdG8gdGhpcyBub3RpZmljYXRpb24gY29k ZSBieSByZW1vdmVfc2libGluZ2luZm8oKS4KKyAgICAgKi8KKyAgICBpZiAoIHNvY2tldF9jcHVt YXNrW3NvY2tldF0gJiYgY3B1bWFza19lbXB0eShzb2NrZXRfY3B1bWFza1tzb2NrZXRdKSApCisg ICAgICAgIGZyZWVfZmVhdHVyZShzb2NrZXRfaW5mbyArIHNvY2tldCk7CiB9CiAKIHN0YXRpYyBp bnQgY3B1X2NhbGxiYWNrKApAQCAtMzQ5LDcgKzUzNyw3IEBAIHN0YXRpYyBpbnQgY3B1X2NhbGxi YWNrKAogICAgIHN3aXRjaCAoIGFjdGlvbiApCiAgICAgewogICAgIGNhc2UgQ1BVX1VQX1BSRVBB UkU6Ci0gICAgICAgIHJjID0gcHNyX2NwdV9wcmVwYXJlKGNwdSk7CisgICAgICAgIHJjID0gcHNy X2NwdV9wcmVwYXJlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1BVX1NUQVJUSU5HOgog ICAgICAgICBwc3JfY3B1X2luaXQoKTsKQEAgLTM3OCwxMCArNTY2LDE0IEBAIHN0YXRpYyBpbnQg X19pbml0IHBzcl9wcmVzbXBfaW5pdCh2b2lkKQogICAgIGlmICggKG9wdF9wc3IgJiBQU1JfQ01U KSAmJiBvcHRfcm1pZF9tYXggKQogICAgICAgICBpbml0X3Bzcl9jbXQob3B0X3JtaWRfbWF4KTsK IAotICAgIHBzcl9jcHVfcHJlcGFyZSgwKTsKKyAgICBpZiAoIG9wdF9wc3IgJiBQU1JfQ0FUICkK KyAgICAgICAgaW5pdF9wc3IoKTsKKworICAgIGlmICggcHNyX2NwdV9wcmVwYXJlKCkgKQorICAg ICAgICBwc3JfZnJlZSgpOwogCiAgICAgcHNyX2NwdV9pbml0KCk7Ci0gICAgaWYgKCBwc3JfY210 X2VuYWJsZWQoKSApCisgICAgaWYgKCBwc3JfY210X2VuYWJsZWQoKSB8fCBwc3JfYWxsb2NfZmVh dF9lbmFibGVkKCkgKQogICAgICAgICByZWdpc3Rlcl9jcHVfbm90aWZpZXIoJmNwdV9uZmIpOwog CiAgICAgcmV0dXJuIDA7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=