From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v10 05/25] x86: refactor psr: L3 CAT: implement CPU init and free flow. Date: Sat, 1 Apr 2017 21:53:36 +0800 Message-ID: <1491054836-30488-6-git-send-email-yi.y.sun@linux.intel.com> References: <1491054836-30488-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 1cuJTR-0005WQ-N9 for xen-devel@lists.xenproject.org; Sat, 01 Apr 2017 13:53:49 +0000 In-Reply-To: <1491054836-30488-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 ZyBMMyBDQVQKaW5pdGlhbGl6YXRpb24gYW5kIHNvbWUgcmVzb3VyY2VzIGZyZWUuIEl0IGluY2x1 ZGVzIGJlbG93IGZsb3dzOgoxLiBwcmVzbXAgaW5pdDoKICAgIC0gcGFyc2UgY29tbWFuZCBsaW5l IHBhcmFtZXRlci4KICAgIC0gYWxsb2NhdGUgc29ja2V0IGluZm8gZm9yIGV2ZXJ5IHNvY2tldC4K ICAgIC0gYWxsb2NhdGUgZmVhdHVyZSByZXNvdXJjZS4KICAgIC0gaW5pdGlhbGl6ZSBzb2NrZXQg aW5mbywgZ2V0IGZlYXR1cmUgaW5mbyBhbmQgYWRkIGZlYXR1cmUgaW50byBmZWF0dXJlCiAgICAg IGFycmF5IHBlciBjcHVpZCByZXN1bHQuCiAgICAtIGZyZWUgcmVzb3VyY2VzIGFsbG9jYXRlZCBp ZiBlcnJvciBoYXBwZW5zLgogICAgLSByZWdpc3RlciBjcHUgbm90aWZpZXIgdG8gaGFuZGxlIGNw dSBldmVudHMuCjIuIGNwdSBub3RpZmllcjoKICAgIC0gaGFuZGxlIGNwdSBvbmxpbmUgZXZlbnRz LCBpZiBpbml0aWFsaXphdGlvbiB3b3JrIGhhcyBiZWVuIGRvbmUgYmVmb3JlLAogICAgICBkbyBu b3RoaW5nLgogICAgLSBoYW5kbGUgY3B1IG9mZmxpbmUgZXZlbnRzLCBpZiBpdCBpcyB0aGUgbGFz dCBjcHUgb2ZmbGluZSwgZnJlZSBzb21lCiAgICAgIHNvY2tldCByZXNvdXJjZXMuCgpTaWduZWQt b2ZmLWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KLS0tCnYxMDoKICAgIC0g cmVtb3ZlICdhc20veDg2X2VtdWxhdGUuaCcgaW5jbHVzaW9uIGFzIGl0IGhhcyBiZWVuIGluZGly ZWN0bHkgaW5jbHVkZWQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJl bW92ZSAnQ0FUX0NPU19OVU0nIGFzIGl0IGlzIG9ubHkgdXNlZCBvbmNlLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ2ZlYXRfbWFzaycuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZXMgYWJvdXQgJ2ZlYXRfcHJvcHMnLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ2dldF9jb3NfbWF4 JyBob29rIGRlY2xhcmF0aW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAg LSBtb2RpZnkgJ2NhdF9kZWZhdWx0X3ZhbCcgaW1wbGVtZW50YXRpb24uCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSAncHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCcg aW1wbGVtZW50YXRpb24gdG8gbWFrZSBpdCBzaW1wbGUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIHJlbmFtZSAnZnJlZV9mZWF0dXJlJyB0byAnZnJlZV9zb2NrZXRfcmVz b3VyY2VzJyBiZWNhdXNlIGl0IGlzIGV4ZWN1dGVkCiAgICAgIHdoZW4gc29ja2V0IGlzIG9mZmxp bmUuIEl0IG5lZWRzIGZyZWUgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gdGhlIHNvY2tldC4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gZGVmaW5lICdmZWF0X2luaXRfZG9uZScg dG8gaXRlcmF0ZSBmZWF0dXJlIGFycmF5IHRvIGNoZWNrIGlmIGFueSBmZWF0dXJlCiAgICAgIGhh cyBiZWVuIGluaXRpYWxpemVkLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAg LSBpbnB1dCAnc3RydWN0IGNwdWlkX2xlYWYnIHBvaW50ZXIgaW50byAnY2F0X2luaXRfZmVhdHVy ZScgdG8gYXZvaWQgbWVtb3J5CiAgICAgIGNvcHkuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIG1vZGlmeSAnY2F0X2luaXRfZmVhdHVyZScgdG8gdXNlIHN3aXRjaCBhbmQg dGhpbmdzIHJlbGF0ZWQgdG8gYWJvdmUKICAgICAgY2hhbmdlcy4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gYWRkIGFuIGluZGVudGF0aW9uIGZvciBsYWJlbC4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjk6CiAgICAtIGFkZCBjb21taXQgbWVzc2FnZSB0 byBleHBsYWluIHRoZSBmbG93cy4KICAgIC0gaGFuZGxlIGNwdSBvZmZsaW5lIGFuZCBvbmxpbmUg YWdhaW4gY2FzZSB0byByZWFkIE1TUnMgcmVnaXN0ZXJzIHZhbHVlcwogICAgICBiYWNrIGFuZCBz YXZlIHRoZW0gaW50byBjb3MgYXJyYXkgdG8gbWFrZSB1c2VyIGNhbiBnZXQgcmVhbCBkYXRhLgog ICAgLSBjcmVhdGUgYSBuZXcgcGF0Y2ggYWJvdXQgbW92aW5nICdjcHVpZF9jb3VudF9sZWFmJy4K ICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSBtb2RpZnkgY29tbWVudCB0byBleHBs YWluIHdoeSBub3QgZnJlZSBzb21lIHJlc291cmNlIGluICdmcmVlX2ZlYXR1cmUnLgogICAgICAo c3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIGltcGxlbWVudCAncHNyX2FsbG9jX2ZlYXRfZW5h YmxlZCcgdG8gY2hlY2sgaWYgYWxsb2NhdGlvbiBmZWF0dXJlIGlzCiAgICAgIGVuYWJsZWQgaW4g Y21kbGluZSBhbmQgc29tZSBpbml0aWFsaXphdGlvbiB3b3JrIGRvbmUuCiAgICAgIChzdWdnZXN0 ZWQgYnkgV2VpIExpdSkKICAgIC0gaW1wbGVtZW50ICdjYXRfZGVmYXVsdF92YWwnIHRvIHNldCBk ZWZhdWx0IHZhbHVlIGZvciBDQVQgZmVhdHVyZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExp dSkKICAgIC0gcmVwbGFjZSBmZWF0dXJlIGxpc3QgaGFuZGxpbmcgdG8gZmVhdHVyZSBhcnJheSBo YW5kbGluZy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIGltcGxlbWVudCBh IGNvbW1vbiAnY2F0X2luaXRfZmVhdHVyZScgdG8gcmVwbGFjZSBMMyBDQVQvTDIgQ0FUIHNwZWNp ZmljCiAgICAgIGluaXQgZnVuY3Rpb25zLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkK ICAgIC0gbW9kaWZ5IGNvbW1lbnRzIGZvciBnbG9iYWwgZmVhdHVyZSBub2RlLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgdW5uZWNlc3NhcnkgY29tbWVudHMu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2Fy eSAnZWxzZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAn bnJfZmVhdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSBw YXRjaCB0aXRsZSB0byBpbmRpY2F0ZSAnTDMgQ0FUJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gY2hlY2sgZ2xvYmFsIGZsYWcgd2l0aCBib290IGNwdSBvcGVyYXRpb25z LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ2NwdV9pbml0 X3dvcmsnIGFuZCBtb3ZlIGNvZGVzIGludG8gJ3Bzcl9jcHVfaW5pdCcuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnY3B1X2Zpbmlfd29yaycgYW5kIG1vdmUg Y29kZXMgaW50byAncHNyX2NwdV9maW5pJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gYXNzaWduIHZhbHVlIGZvciAnY29zX251bScuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSBhYm91dCAndWludDY0X3QnIHRvICd1aW50MzJfdCcu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY4OgogICAgLSBmaXggZm9ybWF0IGlz c3VlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRk IGNvbW1lbnRzIHRvIGV4cGxhaW4gd2h5IHdlIGNhcmUgYWJvdXQgY3B1bWFza19lbXB0eSB3aGVu IHRoZSBsYXN0CiAgICAgIGNwdSBvbiBzb2NrZXQgaXMgb2ZmbGluZS4KICAgICAgKHN1Z2dlc3Rl ZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCnY3OgogICAgLSBpbml0aWFsaXplIHN0cnVjdHVy ZSBvYmplY3RzIGZvciBhdm9pZGluZyBzdXJwcmlzZS4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25y YWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGZpeCB0eXBvLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtv bnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gZml4IGEgbG9naWNhbCBtaXN0YWtlIHdoZW4gaGFu ZGxpbmcgdGhlIGxhc3QgY3B1IG9mZmxpbmUgZXZlbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29u cmFkIFJ6ZXN6dXRlayBXaWxrKQp2NjoKICAgIC0gdXNlICdzdHJ1Y3QgY3B1aWRfbGVhZicgaW50 cm9kdWNlZCBpbiBBbmRyZXcncyBwYXRjaC4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnpl c3p1dGVrIFdpbGspCiAgICAtIGFkZCBjb21tZW50cyBhYm91dCBjcHVfYWRkX3JlbW92ZV9sb2Nr LgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gY2hhbmdl ICdjbGVhcl9iaXQnIHRvICdfX2NsZWFyX2JpdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFk IFJ6ZXN6dXRlayBXaWxrKQogICAgLSBhZGQgJ0FTU0VSVCcgY2hlY2sgd2hlbiBzZXR0aW5nICdm ZWF0X21hc2snLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAg IC0gYWRqdXN0ICdwcmludGsnIHBvc2l0aW9uIHRvIGF2b2lkIG9kZCBzcGFjaW5nLgogICAgICAo c3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAgIC0gYWRkIGNvbW1lbnQgdG8g ZXhwbGFpbiB1c2FnZSBvZiAnZmVhdF9sM19jYXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJh ZCBSemVzenV0ZWsgV2lsaykKICAgIC0gZml4IHdvcmRpbmcuCiAgICAgIChzdWdnZXN0ZWQgYnkg S29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBtb3ZlICdjcHVpZF9jb3VudF9sZWFmJyBoZWxw ZXIgZnVuY3Rpb24gdG8gJ2FzbS14ODYvcHJvY2Vzc29yLmgnLgogICAgICBJdCBjYW5ub3QgYmUg bW92ZWQgdG8gJ2NwdWlkLmgnIHdoaWNoIGNhdXNlcyBjb21waWxhdGlvbiBlcnJvciBiZWNhdXNl CiAgICAgIG9mIGhlYWRlciBmaWxlIGxvb3AgcmVmZXJlbmNlLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEFuZHJldyBDb29wZXIpCnY1OgogICAgLSBhZGQgY29tbWVudCB0byBleHBsYWluIHRoZSByZWFz b24gdG8gZGVmaW5lICdmZWF0X2wzX2NhdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIHVzZSAnbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlJy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIGNvZGVzIHRvIGZyZWUgJ2ZlYXRfbDNfY2F0 JyBpbiAnZnJlZV9mZWF0dXJlJyB0byBhdm9pZCB0aGUgbmVlZAogICAgICBmb3IgYW4gYWxsb2Nh dGlvbiB0aGUgbmV4dCB0aW1lIGEgQ1BVIGNvbWVzIG9ubGluZS4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gZGVmaW5lICdzdHJ1Y3QgY3B1aWRfbGVhZl9yZWdzJyB0byBl bmNhcHN1bGF0ZSBlYXh+ZWR4LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAg LSBwcmludCBmZWF0dXJlIGluZm8gb24gYSBzb2NrZXQgb25seSB3aGVuICdvcHRfY3B1X2luZm8n IGlzIHRydWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGRlY2xhcmUg Z2xvYmFsIHZhcmlhYmxlICdsM19jYXRfb3BzJyB0byAnc3RhdGljIGNvbnN0Jy4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gdXNlICdjdXJyZW50X2NwdV9kYXRhJy4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdmZWF0X3RtcCcgdG8g J2ZlYXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjbGVhciBQUUUg ZmVhdHVyZSBiaXQgd2hlbiB0aGUgbWF4aW11bSBDUFVJRCBsZXZlbCBpcyB0b28gbG93LgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBkaXJlY3RseSBjYWxsICdsM19jYXRf aW5pdF9mZWF0dXJlJy4gTm8gbmVlZCB0byBtYWtlIGl0IGEgY2FsbGJhY2sKICAgICAgZnVuY3Rp b24uCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSBsb2NhbCB2 YXJpYWJsZSAnaW5mbycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1v dmUgJ0lOSVRfTElTVF9IRUFEJyBpbnRvICdjcHVfaW5pdF93b3JrJyB0byBiZSB0b2dldGhlciB3 aXRoCiAgICAgIHNwaW5fbG9ja19pbml0KCkuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIHJlbW92ZSAnY3B1X3ByZXBhcmVfd29yaycgYW5kIG1vdmUgaXRzIGNvbnRlbnQg aW50byAncHNyX2NwdV9wcmVwYXJlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK djQ6CiAgICAtIGNyZWF0ZSB0aGlzIHBhdGNoIGJlY2F1c2Ugb2YgcmVtb3ZpbmcgYWxsIENBVC9D RFAgb2xkIGNvZGVzIHRvIG1ha2UKICAgICAgaW1wbGVtZW50YXRpb24gYmUgbW9yZSBlYXNpbHkg dW5kZXJzdG9vZC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKLS0tCiB4ZW4vYXJj aC94ODYvcHNyLmMgfCAyMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgNiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYv cHNyLmMKaW5kZXggY2YzNTJkMi4uZTQyMmEyMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bz ci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtMzQsNiArMzQsOSBAQAogI2RlZmluZSBQ U1JfQ0FUICAgICAgICAoMTw8MSkKICNkZWZpbmUgUFNSX0NEUCAgICAgICAgKDE8PDIpCiAKKyNk ZWZpbmUgQ0FUX0NCTV9MRU5fTUFTSyAweDFmCisjZGVmaW5lIENBVF9DT1NfTUFYX01BU0sgMHhm ZmZmCisKIC8qCiAgKiBQZXIgU0RNIGNoYXB0ZXIgJ0NhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9n eTogQ2FjaGUgTWFzayBDb25maWd1cmF0aW9uJywKICAqIHRoZSBNU1JzIHJhbmdpbmcgZnJvbSAw QzkwSCB0aHJvdWdoIDBEMEZIIChpbmNsdXNpdmUpLCBlbmFibGVzIHN1cHBvcnQgZm9yCkBAIC03 Niw3ICs3OSw3IEBAIHN0cnVjdCBmZWF0X25vZGUgewogICAgICAqCiAgICAgICogRmVhdHVyZSBp bmRlcGVuZGVudCBIVyBpbmZvIGFuZCBjb21tb24gdmFsdWVzIGFyZSBhbHNvIGRlZmluZWQgaW4g aXQuCiAgICAgICovCi0gICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgeworICAgIHN0cnVjdCBm ZWF0X3Byb3BzIHsKICAgICAgICAgLyoKICAgICAgICAgICogY29zX251bSwgY29zX21heCBhbmQg Y2JtX2xlbiBhcmUgY29tbW9uIHZhbHVlcyBmb3IgYWxsIGZlYXR1cmVzCiAgICAgICAgICAqIHNv IGZhci4KQEAgLTExNCwxMSArMTE3LDEyNCBAQCBzdHJ1Y3QgcHNyX2Fzc29jIHsKIAogc3RydWN0 IHBzcl9jbXQgKl9fcmVhZF9tb3N0bHkgcHNyX2NtdDsKIAorc3RhdGljIHN0cnVjdCBwc3Jfc29j a2V0X2luZm8gKl9fcmVhZF9tb3N0bHkgc29ja2V0X2luZm87CisKIHN0YXRpYyB1bnNpZ25lZCBp bnQgb3B0X3BzcjsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19pbml0ZGF0YSBvcHRfcm1pZF9tYXgg PSAyNTU7CitzdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgb3B0X2Nvc19tYXggPSBN QVhfQ09TX1JFR19DTlQ7CiBzdGF0aWMgdWludDY0X3Qgcm1pZF9tYXNrOwogc3RhdGljIERFRklO RV9QRVJfQ1BVKHN0cnVjdCBwc3JfYXNzb2MsIHBzcl9hc3NvYyk7CiAKKy8qCisgKiBEZWNsYXJl IGdsb2JhbCBmZWF0dXJlIG5vZGUgZm9yIGV2ZXJ5IGZlYXR1cmUgdG8gZmFjaWxpdGF0ZSB0aGUg ZmVhdHVyZQorICogYXJyYXkgY3JlYXRpb24uIEl0IGlzIHVzZWQgdG8gdHJhbnNpZW50bHkgc3Rv cmUgYSBzcGFyZSBub2RlLgorICovCitzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVhdF9sM19j YXQ7CisKKy8qIENvbW1vbiBmdW5jdGlvbnMgKi8KKyNkZWZpbmUgY2F0X2RlZmF1bHRfdmFsKGxl bikgKDB4ZmZmZmZmZmYgPj4gKDMyIC0gKGxlbikpKQorCisvKgorICogVXNlIHRoaXMgZnVuY3Rp b24gdG8gY2hlY2sgaWYgYW55IGFsbG9jYXRpb24gZmVhdHVyZSBoYXMgYmVlbiBlbmFibGVkCisg KiBpbiBjbWRsaW5lLgorICovCitzdGF0aWMgYm9vbCBwc3JfYWxsb2NfZmVhdF9lbmFibGVkKHZv aWQpCit7CisgICAgcmV0dXJuICEhc29ja2V0X2luZm87Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVf c29ja2V0X3Jlc291cmNlcyh1bnNpZ25lZCBpbnQgc29ja2V0KQoreworICAgIHVuc2lnbmVkIGlu dCBpOworICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBzb2NrZXRfaW5mbyArIHNv Y2tldDsKKworICAgIGlmICggIWluZm8gKQorICAgICAgICByZXR1cm47CisKKyAgICAvKgorICAg ICAqIEZyZWUgcmVzb3VyY2VzIG9mIGZlYXR1cmVzLiBUaGUgZ2xvYmFsIGZlYXR1cmUgb2JqZWN0 LCBlLmcuIGZlYXRfbDNfY2F0LAorICAgICAqIG1heSBub3QgYmUgZnJlZWQgaGVyZSBpZiBpdCBp cyBub3QgYWRkZWQgaW50byBhcnJheS4gSXQgaXMgc2ltcGx5IGJlaW5nCisgICAgICoga2VwdCB1 bnRpbCB0aGUgbmV4dCBDUFUgb25saW5lIGF0dGVtcHQuCisgICAgICovCisgICAgZm9yICggaSA9 IDA7IGkgPCBQU1JfU09DS0VUX01BWF9GRUFUOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCAh aW5mby0+ZmVhdHVyZXNbaV0gKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgeGZy ZWUoaW5mby0+ZmVhdHVyZXNbaV0pOworICAgICAgICBpbmZvLT5mZWF0dXJlc1tpXSA9IE5VTEw7 CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBmZWF0X2luaXRfZG9uZShjb25zdCBzdHJ1Y3QgcHNy X3NvY2tldF9pbmZvICppbmZvKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yICgg aSA9IDA7IGkgPCBQU1JfU09DS0VUX01BWF9GRUFUOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYg KCAhaW5mby0+ZmVhdHVyZXNbaV0gKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKiBDQVQgY29t bW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8KK3N0YXRpYyB2b2lkIGNhdF9pbml0X2Zl YXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSB0eXBlKQoreworICAgIHVuc2lnbmVkIGludCBz b2NrZXQsIGk7CisKKyAgICAvKiBObyB2YWxpZCB2YWx1ZSBzbyBkbyBub3QgZW5hYmxlIGZlYXR1 cmUuICovCisgICAgaWYgKCAhcmVncy0+YSB8fCAhcmVncy0+ZCApCisgICAgICAgIHJldHVybjsK KworICAgIGZlYXQtPnByb3BzLT5jYm1fbGVuID0gKHJlZ3MtPmEgJiBDQVRfQ0JNX0xFTl9NQVNL KSArIDE7CisgICAgZmVhdC0+cHJvcHMtPmNvc19tYXggPSBtaW4ob3B0X2Nvc19tYXgsIHJlZ3Mt PmQgJiBDQVRfQ09TX01BWF9NQVNLKTsKKworICAgIHN3aXRjaCAoIHR5cGUgKQorICAgIHsKKyAg ICBjYXNlIFBTUl9TT0NLRVRfTDNfQ0FUOgorICAgICAgICAvKiBjb3M9MCBpcyByZXNlcnZlZCBh cyBkZWZhdWx0IGNibShhbGwgYml0cyB3aXRoaW4gY2JtX2xlbiBhcmUgMSkuICovCisgICAgICAg IGZlYXQtPmNvc19yZWdfdmFsWzBdID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPnByb3BzLT5jYm1f bGVuKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBUbyBoYW5kbGUgY3B1IG9mZmxpbmUgYW5k IHRoZW4gb25saW5lIGNhc2UsIHdlIG5lZWQgcmVzdG9yZSBNU1JzIHRvCisgICAgICAgICAqIGRl ZmF1bHQgdmFsdWVzLgorICAgICAgICAgKi8KKyAgICAgICAgZm9yICggaSA9IDE7IGkgPD0gZmVh dC0+cHJvcHMtPmNvc19tYXg7IGkrKyApCisgICAgICAgIHsKKyAgICAgICAgICAgIHdybXNybChN U1JfSUEzMl9QU1JfTDNfTUFTSyhpKSwgZmVhdC0+Y29zX3JlZ192YWxbMF0pOworICAgICAgICAg ICAgZmVhdC0+Y29zX3JlZ192YWxbaV0gPSBmZWF0LT5jb3NfcmVnX3ZhbFswXTsKKyAgICAgICAg fQorCisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOworICAg IH0KKworICAgIC8qIEFkZCB0aGlzIGZlYXR1cmUgaW50byBhcnJheS4gKi8KKyAgICBpbmZvLT5m ZWF0dXJlc1t0eXBlXSA9IGZlYXQ7CisKKyAgICBzb2NrZXQgPSBjcHVfdG9fc29ja2V0KHNtcF9w cm9jZXNzb3JfaWQoKSk7CisgICAgaWYgKCAhb3B0X2NwdV9pbmZvICkKKyAgICAgICAgcmV0dXJu OworCisgICAgcHJpbnRrKFhFTkxPR19JTkZPICIlcyBDQVQ6IGVuYWJsZWQgb24gc29ja2V0ICV1 LCBjb3NfbWF4OiV1LCBjYm1fbGVuOiV1XG4iLAorICAgICAgICAgICAoKHR5cGUgPT0gUFNSX1NP Q0tFVF9MM19DQVQpID8gIkwzIiA6ICJMMiIpLAorICAgICAgICAgICBzb2NrZXQsIGZlYXQtPnBy b3BzLT5jb3NfbWF4LCBmZWF0LT5wcm9wcy0+Y2JtX2xlbik7Cit9CisKKy8qIEwzIENBVCBvcHMg Ki8KK3N0YXRpYyBzdHJ1Y3QgZmVhdF9wcm9wcyBsM19jYXRfcHJvcHMgPSB7CisgICAgLmNvc19u dW0gPSAxLAorfTsKKwogc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29sKGNoYXIgKnMs IGNoYXIgKnZhbHVlLCBjaGFyICpmZWF0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBtYXNrKQogewpAQCAtMTU4LDYgKzI3NCw5IEBAIHN0YXRpYyB2 b2lkIF9faW5pdCBwYXJzZV9wc3JfcGFyYW0oY2hhciAqcykKICAgICAgICAgaWYgKCB2YWxfc3Ry ICYmICFzdHJjbXAocywgInJtaWRfbWF4IikgKQogICAgICAgICAgICAgb3B0X3JtaWRfbWF4ID0g c2ltcGxlX3N0cnRvdWwodmFsX3N0ciwgTlVMTCwgMCk7CiAKKyAgICAgICAgaWYgKCB2YWxfc3Ry ICYmICFzdHJjbXAocywgImNvc19tYXgiKSApCisgICAgICAgICAgICBvcHRfY29zX21heCA9IHNp bXBsZV9zdHJ0b3VsKHZhbF9zdHIsIE5VTEwsIDApOworCiAgICAgICAgIHMgPSBzcyArIDE7CiAg ICAgfSB3aGlsZSAoIHNzICk7CiB9CkBAIC0zMTMsMTkgKzQzMiw5NSBAQCB2b2lkIHBzcl9kb21h aW5fZnJlZShzdHJ1Y3QgZG9tYWluICpkKQogICAgIHBzcl9mcmVlX3JtaWQoZCk7CiB9CiAKLXN0 YXRpYyBpbnQgcHNyX2NwdV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpCitzdGF0aWMgdm9pZCBf X2luaXQgaW5pdF9wc3Iodm9pZCkKK3sKKyAgICBpZiAoIG9wdF9jb3NfbWF4IDwgMSApCisgICAg eworICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIkNBVDogZGlzYWJsZWQsIGNvc19tYXggaXMg dG9vIHNtYWxsXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvY2tldF9pbmZv ID0geHphbGxvY19hcnJheShzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvLCBucl9zb2NrZXRzKTsKKwor ICAgIGlmICggIXNvY2tldF9pbmZvICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfSU5G TyAiRmFpbGVkIHRvIGFsbG9jIHNvY2tldF9pbmZvIVxuIik7CisgICAgICAgIHJldHVybjsKKyAg ICB9Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBwc3JfZnJlZSh2b2lkKQoreworICAgIHhmcmVl KHNvY2tldF9pbmZvKTsKKyAgICBzb2NrZXRfaW5mbyA9IE5VTEw7Cit9CisKK3N0YXRpYyBpbnQg cHNyX2NwdV9wcmVwYXJlKHZvaWQpCiB7CisgICAgaWYgKCAhcHNyX2FsbG9jX2ZlYXRfZW5hYmxl ZCgpICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBNYWxsb2MgbWVtb3J5IGZvciB0aGUg Z2xvYmFsIGZlYXR1cmUgbm9kZSBoZXJlLiAqLworICAgIGlmICggZmVhdF9sM19jYXQgPT0gTlVM TCAmJgorICAgICAgICAgKGZlYXRfbDNfY2F0ID0geHphbGxvYyhzdHJ1Y3QgZmVhdF9ub2RlKSkg PT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCiAgICAgcmV0dXJuIDA7CiB9CiAK IHN0YXRpYyB2b2lkIHBzcl9jcHVfaW5pdCh2b2lkKQogeworICAgIHN0cnVjdCBwc3Jfc29ja2V0 X2luZm8gKmluZm87CisgICAgdW5zaWduZWQgaW50IHNvY2tldDsKKyAgICB1bnNpZ25lZCBpbnQg Y3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7Cisg ICAgc3RydWN0IGNwdWlkX2xlYWYgcmVnczsKKworICAgIGlmICggIXBzcl9hbGxvY19mZWF0X2Vu YWJsZWQoKSB8fCAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BRRSkgKQorICAgICAgICBnb3Rv IGFzc29jX2luaXQ7CisKKyAgICBpZiAoIGJvb3RfY3B1X2RhdGEuY3B1aWRfbGV2ZWwgPCBQU1Jf Q1BVSURfTEVWRUxfQ0FUICkKKyAgICB7CisgICAgICAgIHNldHVwX2NsZWFyX2NwdV9jYXAoWDg2 X0ZFQVRVUkVfUFFFKTsKKyAgICAgICAgZ290byBhc3NvY19pbml0OworICAgIH0KKworICAgIHNv Y2tldCA9IGNwdV90b19zb2NrZXQoY3B1KTsKKyAgICBpbmZvID0gc29ja2V0X2luZm8gKyBzb2Nr ZXQ7CisgICAgaWYgKCBmZWF0X2luaXRfZG9uZShpbmZvKSApCisgICAgICAgIGdvdG8gYXNzb2Nf aW5pdDsKKworICAgIHNwaW5fbG9ja19pbml0KCZpbmZvLT5yZWZfbG9jayk7CisKKyAgICBjcHVp ZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDAsICZyZWdzKTsKKyAgICBpZiAoIHJl Z3MuYiAmIFBTUl9SRVNPVVJDRV9UWVBFX0wzICkKKyAgICB7CisgICAgICAgIGNwdWlkX2NvdW50 X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMSwgJnJlZ3MpOworCisgICAgICAgIGZlYXQgPSBm ZWF0X2wzX2NhdDsKKyAgICAgICAgZmVhdF9sM19jYXQgPSBOVUxMOworICAgICAgICBmZWF0LT5w cm9wcyA9ICZsM19jYXRfcHJvcHM7CisKKyAgICAgICAgY2F0X2luaXRfZmVhdHVyZSgmcmVncywg ZmVhdCwgaW5mbywgUFNSX1NPQ0tFVF9MM19DQVQpOworICAgIH0KKworIGFzc29jX2luaXQ6CiAg ICAgcHNyX2Fzc29jX2luaXQoKTsKIH0KIAogc3RhdGljIHZvaWQgcHNyX2NwdV9maW5pKHVuc2ln bmVkIGludCBjcHUpCiB7Ci0gICAgcmV0dXJuOworICAgIHVuc2lnbmVkIGludCBzb2NrZXQgPSBj cHVfdG9fc29ja2V0KGNwdSk7CisKKyAgICBpZiAoICFwc3JfYWxsb2NfZmVhdF9lbmFibGVkKCkg KQorICAgICAgICByZXR1cm47CisKKyAgICAvKgorICAgICAqIFdlIG9ubHkgZnJlZSB3aGVuIHdl IGFyZSB0aGUgbGFzdCBDUFUgaW4gdGhlIHNvY2tldC4gVGhlIHNvY2tldF9jcHVtYXNrCisgICAg ICogaXMgY2xlYXJlZCBwcmlvciB0byB0aGlzIG5vdGlmaWNhdGlvbiBjb2RlIGJ5IHJlbW92ZV9z aWJsaW5naW5mbygpLgorICAgICAqLworICAgIGlmICggc29ja2V0X2NwdW1hc2tbc29ja2V0XSAm JiBjcHVtYXNrX2VtcHR5KHNvY2tldF9jcHVtYXNrW3NvY2tldF0pICkKKyAgICAgICAgZnJlZV9z b2NrZXRfcmVzb3VyY2VzKHNvY2tldCk7CiB9CiAKIHN0YXRpYyBpbnQgY3B1X2NhbGxiYWNrKApA QCAtMzM3LDcgKzUzMiw3IEBAIHN0YXRpYyBpbnQgY3B1X2NhbGxiYWNrKAogICAgIHN3aXRjaCAo IGFjdGlvbiApCiAgICAgewogICAgIGNhc2UgQ1BVX1VQX1BSRVBBUkU6Ci0gICAgICAgIHJjID0g cHNyX2NwdV9wcmVwYXJlKGNwdSk7CisgICAgICAgIHJjID0gcHNyX2NwdV9wcmVwYXJlKCk7CiAg ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1BVX1NUQVJUSU5HOgogICAgICAgICBwc3JfY3B1X2lu aXQoKTsKQEAgLTM2NiwxMCArNTYxLDE0IEBAIHN0YXRpYyBpbnQgX19pbml0IHBzcl9wcmVzbXBf aW5pdCh2b2lkKQogICAgIGlmICggKG9wdF9wc3IgJiBQU1JfQ01UKSAmJiBvcHRfcm1pZF9tYXgg KQogICAgICAgICBpbml0X3Bzcl9jbXQob3B0X3JtaWRfbWF4KTsKIAotICAgIHBzcl9jcHVfcHJl cGFyZSgwKTsKKyAgICBpZiAoIG9wdF9wc3IgJiBQU1JfQ0FUICkKKyAgICAgICAgaW5pdF9wc3Io KTsKKworICAgIGlmICggcHNyX2NwdV9wcmVwYXJlKCkgKQorICAgICAgICBwc3JfZnJlZSgpOwog CiAgICAgcHNyX2NwdV9pbml0KCk7Ci0gICAgaWYgKCBwc3JfY210X2VuYWJsZWQoKSApCisgICAg aWYgKCBwc3JfY210X2VuYWJsZWQoKSB8fCBwc3JfYWxsb2NfZmVhdF9lbmFibGVkKCkgKQogICAg ICAgICByZWdpc3Rlcl9jcHVfbm90aWZpZXIoJmNwdV9uZmIpOwogCiAgICAgcmV0dXJuIDA7Ci0t IAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=