From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v10 03/25] x86: refactor psr: implement main data structures. Date: Sat, 1 Apr 2017 21:53:34 +0800 Message-ID: <1491054836-30488-4-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 1cuJTK-0005So-Tj for xen-devel@lists.xenproject.org; Sat, 01 Apr 2017 13:53:43 +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 VG8gY29uc3RydWN0IGFuIGV4dGVuZGlibGUgZnJhbWV3b3JrLCB3ZSBuZWVkIGFuYWx5emUgUFNS IGZlYXR1cmVzCmFuZCBhYnN0cmFjdCB0aGUgY29tbW9uIHRoaW5ncyBhbmQgZmVhdHVyZSBzcGVj aWZpYyB0aGluZ3MuIFRoZW4sCmVuY2Fwc3VsYXRlIHRoZW0gaW50byBkaWZmZXJlbnQgZGF0YSBz dHJ1Y3R1cmVzLgoKQnkgYW5hbHl6aW5nIFBTUiBmZWF0dXJlcywgd2UgY2FuIGdldCBiZWxvdyBt YXAuCiAgICAgICAgICAgICAgICArLS0tLS0tKy0tLS0tLSstLS0tLS0rCiAgICAgIC0tLS0tLS0t LT58IERvbTAgfCBEb20xIHwgLi4uICB8CiAgICAgIHwgICAgICAgICArLS0tLS0tKy0tLS0tLSst LS0tLS0rCiAgICAgIHwgICAgICAgICAgICB8CiAgICAgIHxEb20gSUQgICAgICB8IGNvc19pZCBv ZiBkb21haW4KICAgICAgfCAgICAgICAgICAgIFYKICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwpVc2VyIC0tLS0tLS0tLT58IFBTUiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgU29j a2V0IElEIHwgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgfCAgfCBTb2NrZXQw IEluZm8gfCBTb2NrZXQgMSBJbmZvIHwgICAgLi4uICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAogICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICAgICAgICAgICBjb3NfaWQ9MCAgICAgICAgICAgICAgIGNv c19pZD0xICAgICAgICAgIC4uLiAgICAgICAgIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPlJlZiAgIDogfCAgICAgICAgIHJlZiAw ICAgICAgICAgfCAgICAgICAgIHJlZiAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkwzIENBVDogfCAgICAgICAgIGNvcyAw ICAgICAgICAgfCAgICAgICAgIGNvcyAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkwyIENBVDogfCAgICAgICAgIGNvcyAw ICAgICAgICAgfCAgICAgICAgIGNvcyAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkNEUCAgIDogfCBjb3MwIGNvZGUgfCBj b3MwIGRhdGEgfCBjb3MxIGNvZGUgfCBjb3MxIGRhdGEgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwoKU28sIHdlIG5lZWQgZGVmaW5lIGEgc29ja2V0IGluZm8gZGF0YSBzdHJ1Y3R1 cmUsICdzdHJ1Y3QKcHNyX3NvY2tldF9pbmZvJyB0byBtYW5hZ2UgaW5mb3JtYXRpb24gcGVyIHNv Y2tldC4gSXQgY29udGFpbnMgYQpyZWZlcmVuY2UgY291bnQgYXJyYXkgYWNjb3JkaW5nIHRvIENP UyBJRCBhbmQgYSBmZWF0dXJlIGFycmF5IHRvCm1hbmFnZSBhbGwgZmVhdHVyZXMgZW5hYmxlZC4g RXZlcnkgZW50cnkgb2YgdGhlIHJlZmVyZW5jZSBjb3VudAphcnJheSBpcyB1c2VkIHRvIHJlY29y ZCBob3cgbWFueSBkb21haW5zIGFyZSB1c2luZyB0aGUgQ09TIHJlZ2lzdGVycwphY2NvcmRpbmcg dG8gdGhlIENPUyBJRC4gRm9yIGV4YW1wbGUsIEwzIENBVCBhbmQgTDIgQ0FUIGFyZSBlbmFibGVk LApEb20xIHVzZXMgQ09TX0lEPTEgcmVnaXN0ZXJzIG9mIGJvdGggZmVhdHVyZXMgdG8gc2F2ZSBD Qk0gdmFsdWVzLCBsaWtlCmJlbG93LgogICAgICAgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSst LS0tLSsKICAgICAgICB8IENPUyAwIHwgQ09TIDEgfCBDT1MgMiB8IC4uLiB8CiAgICAgICAgKy0t LS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tKwpMMyBDQVQgIHwgMHg3ZmYgfCAweDFmZiB8IC4u LiAgIHwgLi4uIHwKICAgICAgICArLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0rCkwyIENB VCAgfCAweGZmICB8IDB4ZmYgIHwgLi4uICAgfCAuLi4gfAogICAgICAgICstLS0tLS0tKy0tLS0t LS0rLS0tLS0tLSstLS0tLSsKCklmIERvbTIgaGFzIHNhbWUgQ0JNIHZhbHVlcywgaXQgY2FuIHJl dXNlIHRoZXNlIHJlZ2lzdGVycyB3aGljaCBDT1NfSUQ9MS4KVGhhdCBtZWFucywgYm90aCBEb20x IGFuZCBEb20yIHVzZSBzYW1lIENPUyByZWdpc3RlcnMoSUQ9MSkgdG8ga2VlcCBzYW1lCkwzL0wy IHZhbHVlcy4gU28sIHRoZSB2YWx1ZSBvZiByZWZbMV0gaXMgMiB3aGljaCBtZWFucyAyIGRvbWFp bnMgYXJlIHVzaW5nCkNPU19JRCAxLgoKVG8gbWFuYWdlIGEgZmVhdHVyZSwgd2UgbmVlZCBkZWZp bmUgYSBmZWF0dXJlIG5vZGUgZGF0YSBzdHJ1Y3R1cmUsCidzdHJ1Y3QgZmVhdF9ub2RlJywgdG8g bWFuYWdlIGZlYXR1cmUncyBzcGVjaWZpYyBIVyBpbmZvLCBpdHMgY29tbW9uCnByb3BlcnRpZXMg KGNhbGxiYWNrIGZ1bmN0aW9ucyAtIGFsbCBmZWF0dXJlJ3Mgc3BlY2lmaWMgYmVoYXZpb3JzIGFy ZQplbmNhcHN1bGF0ZWQgaW50byB0aGVzZSBjYWxsYmFjayBmdW5jdGlvbnMsIGFuZCBnZW5lcmlj IHZhbHVlcyAtIGUuZy4gdGhlCmNvc19tYXgpLCB0aGUgZmVhdHVyZSBpbmRlcGVuZGVudCB2YWx1 ZXMsIGFuZCBhbiBhcnJheSBvZiBhbGwgQ09TIHJlZ2lzdGVycwp2YWx1ZXMgb2YgdGhpcyBmZWF0 dXJlLgoKQ0RQIGlzIGEgc3BlY2lhbCBmZWF0dXJlIHdoaWNoIHVzZXMgdHdvIGVudHJpZXMgb2Yg dGhlIGFycmF5CmZvciBvbmUgQ09TIElELiBTbywgdGhlIG51bWJlciBvZiBDRFAgQ09TIHJlZ2lz dGVycyBpcyB0aGUgaGFsZiBvZiBMMwpDQVQuIEUuZy4gTDMgQ0FUIGhhcyAxNiBDT1MgcmVnaXN0 ZXJzLCB0aGVuIENEUCBoYXMgOCBDT1MgcmVnaXN0ZXJzIGlmCml0IGlzIGVuYWJsZWQuIENEUCB1 c2VzIHRoZSBDT1MgcmVnaXN0ZXJzIGFycmF5IGFzIGJlbG93LgoKICAgICAgICAgICAgICAgICAg ICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSsKQ0RQIGNvc19yZWdfdmFsW10gaW5kZXg6IHwgICAgIDAgICAgIHwgICAgIDEg ICAgIHwgICAgIDIgICAgIHwgICAgIDMgICAgIHwgICAgLi4uICAgIHwKICAgICAgICAgICAgICAg ICAgICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgdmFsdWU6IHwgY29zMCBjb2RlIHwgY29z MCBkYXRhIHwgY29zMSBjb2RlIHwgY29zMSBkYXRhIHwgICAgLi4uICAgIHwKICAgICAgICAgICAg ICAgICAgICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLSsKCkZvciBtb3JlIGRldGFpbHMsIHBsZWFzZSByZWZlciBTRE0gYW5k IHBhdGNoZXMgdG8gaW1wbGVtZW50ICdnZXQgdmFsdWUnIGFuZAonc2V0IHZhbHVlJy4KClNpZ25l ZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgotLS0KdjEwOgogICAg LSByZW1vdmUgaW5pdGlhbGl6YXRpb24gZm9yICdQU1JfU09DS0VUX0wzX0NBVCcuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbmFtZSAnZmVhdF9vcHMnIHRvICdmZWF0 X3Byb3BzJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW92ZSAnY2Jt X2xlbicgdG8gJ2ZlYXRfcHJvcHMnIGJlY2F1c2UgaXQgaXMgZmVhdHVyZSBpbmRlcGVuZGVudCBz byBmYXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vdmUgJ2Nvc19t YXgnIHRvICdmZWF0X3Byb3BzJyBiZWNhdXNlIGl0IGlzIGZlYXR1cmUgaW5kZXBlbmRlbnQuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vdmUgJ2Nvc19udW0nIHRvICdm ZWF0X3Byb3BzJyBiZWNhdXNlIGl0IGlzIGZlYXR1cmUgaW5kZXBlbmRlbnQuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bmlvbiAnaW5mbycgYW5kIHN0cnVj dCAncHNyX2NhdF9od19pbmZvJy4KICAgIC0gcmVtb3ZlICdnZXRfY29zX21heCcgZnJvbSAnZmVh dF9wcm9wcycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAn ZmVhdF9tYXNrJyBmcm9tICdwc3Jfc29ja2V0X2luZm8nIGJlY2F1c2Ugd2UgY2FuIHVzZSAnZmVh dHVyZXNbXScKICAgICAgdG8gY2hlY2sgaWYgYW55IGZlYXR1cmUgaXMgaW5pdGlhbGl6ZWQuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vdmUgJ3JlZl9sb2NrJyBhYm92 ZSAnY29zX3JlZicuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkanVz dCBjb21tZW50cyBhbmQgY29tbWl0IG1lc3NhZ2UgYWNjb3JkaW5nIHRvIGFib3ZlIGNoYW5nZXMu CnY5OgogICAgLSByZXBsYWNlIGZlYXR1cmUgbGlzdCB0byBhIGZlYXR1cmUgcG9pbnRlciBhcnJh eS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIGFkZCAnUFNSX1NPQ0tFVF9N QVhfRkVBVCcgaW4gJ2VudW0gcHNyX2ZlYXRfdHlwZScgdG8ga25vdyBmZWF0dXJlcwogICAgICBh Y2NvdW50LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gbW92ZSAnZmVhdF9v cHMnIGRlY2xhcmF0aW9uIGludG8gJ2ZlYXRfbm9kZScgc3RydWN0dXJlLgogICAgICAoc3VnZ2Vz dGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gZGlyZWN0bHkgdXNlIHVuaW5vbiBmb3IgZmVhdHVyZSBI VyBpbmZvIGFuZCBtb3ZlIGl0cyBkZWNsYXJhdGlvbiBpbnRvCiAgICAgICdmZWF0X25vZGUnIHN0 cnVjdHVyZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIHJlbW92ZSAnZW51 bSBwc3JfZmVhdF90eXBlIGZlYXR1cmUnIGRlY2xhcmVkIGluICdmZWF0X29wcycgYmVjYXVzZSBp dCBpcwogICAgICBub3QgdXNlZnVsIGFmdGVyIHVzaW5nIGZlYXR1cmUgcG9pbnRlciBhcnJheS4K ICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIHJlbmFtZSAnbDNfY2F0X2luZm8n IHRvICdjYXRfaW5mbycgdG8gYmUgdXNlZCBieSBhbGwgQ0FUL0NEUCBmZWF0dXJlcy4KICAgIC0g cmVtb3ZlICducl9mZWF0JyB3aGljaCBpcyBvbmx5IGZvciBhIHJlY29yZC4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRkICdjb3NfbnVtJyB0byByZWNvcmQgaG93IG1h bnkgQ09TIHJlZ2lzdGVycyBhcmUgdXNlZCBieSBhIGZlYXR1cmUgaW4KICAgICAgb25lIHRpbWUg YWNjZXNzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZXBsYWNlICd1 aW50NjRfdCcgdG8gJ3VpbnQzMl90JyBmb3IgY2JtIHZhbHVlIGJlY2F1c2UgU0RNIHNwZWNpZmll cyB0aGUKICAgICAgbWF4IDMyIGJpdHMgZm9yIGl0LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQp2NzoKICAgIC0gc29ydCBpbmNsdXNpb24gZmlsZXMgcG9zaXRpb24uCiAgICAgIChz dWdnZXN0ZWQgYnkgV2VpIExpdSkKdjY6CiAgICAtIG1ha2UgY29tbWl0IG1lc3NhZ2UgYmUgY2xl YXJlci4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGZp eCB3b3JkaW5ncy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAg ICAtIGFkZCBjb21tZW50cyB0byBleHBsYWluIHJlbGF0aW9uc2hpcCBiZXR3ZWVuICdmZWF0X21h c2snIGFuZAogICAgICAnZW51bSBwc3JfZmVhdF90eXBlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBL b25yYWQgUnplc3p1dGVrIFdpbGspCnY1OgogICAgLSByZW1vdmUgc2VjdGlvbiBudW1iZXIuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSBkb3VibGUgYmxhbmsu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY0OgogICAgLSBjcmVhdGUgdGhpcyBw YXRjaCBiZWNhdXNlIG9mIHJlbW92aW5nIGFsbCBvbGQgQ0FUL0NEUCBjb2RlcyB0byBtYWtlCiAg ICAgIGltcGxlbWVudGF0aW9uIGJlIG1vcmUgZWFzaWx5IHVuZGVyc3Rvb2QuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCi0tLQogeGVuL2FyY2gveDg2L3Bzci5jIHwgODYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUg Y2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCA5NmE4NTg5Li5jZjM1 MmQyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bz ci5jCkBAIC0xMywxNiArMTMsMTAwIEBACiAgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCiAgKiBtb3JlIGRl dGFpbHMuCiAgKi8KLSNpbmNsdWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhlbi9jcHUuaD4K ICNpbmNsdWRlIDx4ZW4vZXJyLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRlIDx4 ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDxhc20vcHNyLmg+CiAKKy8qCisgKiBUZXJtaW5vbG9neToK KyAqIC0gQ0FUICAgICAgICAgQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5CisgKiAtIENCTSAg ICAgICAgIENhcGFjaXR5IEJpdE1hc2tzCisgKiAtIENEUCAgICAgICAgIENvZGUgYW5kIERhdGEg UHJpb3JpdGl6YXRpb24KKyAqIC0gQ09TL0NMT1MgICAgQ2xhc3Mgb2YgU2VydmljZS4gQWxzbyBt ZWFuIENPUyByZWdpc3RlcnMuCisgKiAtIENPU19NQVggICAgIE1heCBudW1iZXIgb2YgQ09TIGZv ciB0aGUgZmVhdHVyZSAobWludXMgMSkKKyAqIC0gTVNScyAgICAgICAgTWFjaGluZSBTcGVjaWZp YyBSZWdpc3RlcnMKKyAqIC0gUFNSICAgICAgICAgSW50ZWwgUGxhdGZvcm0gU2hhcmVkIFJlc291 cmNlCisgKi8KKwogI2RlZmluZSBQU1JfQ01UICAgICAgICAoMTw8MCkKICNkZWZpbmUgUFNSX0NB VCAgICAgICAgKDE8PDEpCiAjZGVmaW5lIFBTUl9DRFAgICAgICAgICgxPDwyKQogCisvKgorICog UGVyIFNETSBjaGFwdGVyICdDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3k6IENhY2hlIE1hc2sg Q29uZmlndXJhdGlvbicsCisgKiB0aGUgTVNScyByYW5naW5nIGZyb20gMEM5MEggdGhyb3VnaCAw RDBGSCAoaW5jbHVzaXZlKSwgZW5hYmxlcyBzdXBwb3J0IGZvcgorICogdXAgdG8gMTI4IEwzIENB VCBDbGFzc2VzIG9mIFNlcnZpY2UuIFRoZSBDT1NfSUQ9WzAsMTI3XS4KKyAqCisgKiBUaGUgTVNS cyByYW5naW5nIGZyb20gMEQxMEggdGhyb3VnaCAwRDRGSCAoaW5jbHVzaXZlKSwgZW5hYmxlcyBz dXBwb3J0IGZvcgorICogdXAgdG8gNjQgTDIgQ0FUIENPUy4gVGhlIENPU19JRD1bMCw2M10uCisg KgorICogU28sIHRoZSBtYXhpbXVtIENPUyByZWdpc3RlciBjb3VudCBvZiBvbmUgZmVhdHVyZSBp cyAxMjguCisgKi8KKyNkZWZpbmUgTUFYX0NPU19SRUdfQ05UICAxMjgKKworZW51bSBwc3JfZmVh dF90eXBlIHsKKyAgICBQU1JfU09DS0VUX0wzX0NBVCwKKyAgICBQU1JfU09DS0VUX0wzX0NEUCwK KyAgICBQU1JfU09DS0VUX0wyX0NBVCwKKyAgICBQU1JfU09DS0VUX01BWF9GRUFULAorfTsKKwor LyoKKyAqIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgb25lIGZlYXR1cmUuCisgKiBmZWF0X3By b3BzICAtIEZlYXR1cmUgcHJvcGVydGllcywgaW5jbHVkaW5nIG9wZXJhdGlvbiBjYWxsYmFjayBm dW5jdGlvbnMKKyAgICAgICAgICAgICAgICAgYW5kIGZlYXR1cmUgY29tbW9uIHZhbHVlcy4KKyAq IGNvc19yZWdfdmFsIC0gQXJyYXkgdG8gc3RvcmUgdGhlIHZhbHVlcyBvZiBDT1MgcmVnaXN0ZXJz LiBPbmUgZW50cnkgc3RvcmVzCisgKiAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBvZiBvbmUgQ09T IHJlZ2lzdGVyLgorICogICAgICAgICAgICAgICBGb3IgTDMgQ0FUIGFuZCBMMiBDQVQsIG9uZSBl bnRyeSBjb3JyZXNwb25kcyB0byBvbmUgQ09TX0lELgorICogICAgICAgICAgICAgICBGb3IgQ0RQ LCB0d28gZW50cmllcyBjb3JyZXNwb25kIHRvIG9uZSBDT1NfSUQuIEUuZy4KKyAqICAgICAgICAg ICAgICAgQ09TX0lEPTAgY29ycmVzcG9uZHMgdG8gY29zX3JlZ192YWxbMF0gKERhdGEpIGFuZAor ICogICAgICAgICAgICAgICBjb3NfcmVnX3ZhbFsxXSAoQ29kZSkuCisgKi8KK3N0cnVjdCBmZWF0 X25vZGUgeworICAgIC8qCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyBmZWF0dXJlIG9w ZXJhdGlvbiBjYWxsYmFjayBmdW5jdGlvbnMuIEV2ZXJ5CisgICAgICogZmVhdHVyZSBlbmFibGVk IE1VU1QgaW1wbGVtZW50IHN1Y2ggY2FsbGJhY2sgZnVuY3Rpb25zIGFuZCByZWdpc3RlcgorICAg ICAqIHRoZW0gdG8gcHJvcHMuCisgICAgICoKKyAgICAgKiBGZWF0dXJlIHNwZWNpZmljIGJlaGF2 aW9ycyB3aWxsIGJlIGVuY2Fwc3VsYXRlZCBpbnRvIHRoZXNlIGNhbGxiYWNrCisgICAgICogZnVu Y3Rpb25zLiBUaGVuLCB0aGUgbWFpbiBmbG93cyB3aWxsIG5vdCBiZSBjaGFuZ2VkIHdoZW4gaW50 cm9kdWNpbmcKKyAgICAgKiBhIG5ldyBmZWF0dXJlLgorICAgICAqCisgICAgICogRmVhdHVyZSBp bmRlcGVuZGVudCBIVyBpbmZvIGFuZCBjb21tb24gdmFsdWVzIGFyZSBhbHNvIGRlZmluZWQgaW4g aXQuCisgICAgICovCisgICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgeworICAgICAgICAvKgor ICAgICAgICAgKiBjb3NfbnVtLCBjb3NfbWF4IGFuZCBjYm1fbGVuIGFyZSBjb21tb24gdmFsdWVz IGZvciBhbGwgZmVhdHVyZXMKKyAgICAgICAgICogc28gZmFyLgorICAgICAgICAgKiBjb3NfbnVt IC0gQ09TIHJlZ2lzdGVycyBudW1iZXIgdGhhdCBmZWF0dXJlIHVzZXMgZm9yIG9uZSBDT1MgSUQu CisgICAgICAgICAqICAgICAgICAgICBJdCBpcyBkZWZpbmVkIGluIFNETS4KKyAgICAgICAgICog Y29zX21heCAtIFRoZSBtYXggQ09TIHJlZ2lzdGVycyBudW1iZXIgZ290IHRocm91Z2ggQ1BVSUQu CisgICAgICAgICAqIGNibV9sZW4gLSBUaGUgbGVuZ3RoIG9mIENCTSBnb3QgdGhyb3VnaCBDUFVJ RC4KKyAgICAgICAgICovCisgICAgICAgIHVuc2lnbmVkIGludCBjb3NfbnVtOworICAgICAgICB1 bnNpZ25lZCBpbnQgY29zX21heDsKKyAgICAgICAgdW5zaWduZWQgaW50IGNibV9sZW47CisgICAg fSAqcHJvcHM7CisKKyAgICB1aW50MzJfdCBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19DTlRdOwor fTsKKworLyoKKyAqIFBTUiBmZWF0dXJlcyBhcmUgbWFuYWdlZCBwZXIgc29ja2V0LiBCZWxvdyBz dHJ1Y3R1cmUgZGVmaW5lcyB0aGUgbWVtYmVycworICogdXNlZCB0byBtYW5hZ2UgdGhlc2UgZmVh dHVyZXMuCisgKiBmZWF0dXJlcyAgLSBBIGZlYXR1cmUgbm9kZSBhcnJheSB1c2VkIHRvIG1hbmFn ZSBhbGwgZmVhdHVyZXMgZW5hYmxlZC4KKyAqIHJlZl9sb2NrICAtIEEgbG9jayB0byBwcm90ZWN0 IGNvc19yZWYuCisgKiBjb3NfcmVmICAgLSBBIHJlZmVyZW5jZSBjb3VudCBhcnJheSB0byByZWNv cmQgaG93IG1hbnkgZG9tYWlucyBhcmUgdXNpbmcgdGhlCisgKiAgICAgICAgICAgICBDT1MgSUQu IEV2ZXJ5IGVudHJ5IG9mIGNvc19yZWYgY29ycmVzcG9uZHMgdG8gb25lIENPUyBJRC4KKyAqLwor c3RydWN0IHBzcl9zb2NrZXRfaW5mbyB7CisgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdHVyZXNb UFNSX1NPQ0tFVF9NQVhfRkVBVF07CisgICAgc3BpbmxvY2tfdCByZWZfbG9jazsKKyAgICB1bnNp Z25lZCBpbnQgY29zX3JlZltNQVhfQ09TX1JFR19DTlRdOworfTsKKwogc3RydWN0IHBzcl9hc3Nv YyB7CiAgICAgdWludDY0X3QgdmFsOwogICAgIHVpbnQ2NF90IGNvc19tYXNrOwotLSAKMS45LjEK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK