From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v9 03/25] x86: refactor psr: implement main data structures. Date: Thu, 16 Mar 2017 19:07:53 +0800 Message-ID: <1489662495-5375-4-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 1coTLj-000494-9r for xen-devel@lists.xenproject.org; Thu, 16 Mar 2017 11:13:43 +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 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 IGFuZCBEb20yIHVzZSBzYW1lIENPUyByZWdpc3RlcnMoSUQ9MSkgdG8gc2F2ZSBzYW1lCkwzL0wy IHZhbHVlcy4gU28sIHRoZSB2YWx1ZSByZWZbMV0gaXMgMiB3aGljaCBtZWFucyAyIGRvbWFpbnMg YXJlIHVzaW5nCkNPU19JRCAxLgoKVG8gbWFuYWdlIGEgZmVhdHVyZSwgd2UgbmVlZCBkZWZpbmUg YSBmZWF0dXJlIG5vZGUgZGF0YSBzdHJ1Y3R1cmUsCidzdHJ1Y3QgZmVhdF9ub2RlJywgdG8gbWFu YWdlIGZlYXR1cmUncyBzcGVjaWZpYyBIVyBpbmZvLCBpdHMgY2FsbGJhY2sKZnVuY3Rpb25zIChh bGwgZmVhdHVyZSdzIHNwZWNpZmljIGJlaGF2aW9ycyBhcmUgZW5jYXBzdWxhdGVkIGludG8gdGhl c2UKY2FsbGJhY2sgZnVuY3Rpb25zKSwgYW5kIGFuIGFycmF5IG9mIGFsbCBDT1MgcmVnaXN0ZXJz IHZhbHVlcyBvZiB0aGlzCmZlYXR1cmUuCgpDRFAgaXMgYSBzcGVjaWFsIGZlYXR1cmUgd2hpY2gg dXNlcyB0d28gZW50cmllcyBvZiB0aGUgYXJyYXkKZm9yIG9uZSBDT1MgSUQuIFNvLCB0aGUgbnVt YmVyIG9mIENEUCBDT1MgcmVnaXN0ZXJzIGlzIHRoZSBoYWxmIG9mIEwzCkNBVC4gRS5nLiBMMyBD QVQgaGFzIDE2IENPUyByZWdpc3RlcnMsIHRoZW4gQ0RQIGhhcyA4IENPUyByZWdpc3RlcnMgaWYK aXQgaXMgZW5hYmxlZC4gQ0RQIHVzZXMgdGhlIENPUyByZWdpc3RlcnMgYXJyYXkgYXMgYmVsb3cu CgogICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKwpDRFAgY29zX3JlZ192YWxbXSBpbmRleDog fCAgICAgMCAgICAgfCAgICAgMSAgICAgfCAgICAgMiAgICAgfCAgICAgMyAgICAgfCAgICAuLi4g ICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICB2YWx1 ZTogfCBjb3MwIGNvZGUgfCBjb3MwIGRhdGEgfCBjb3MxIGNvZGUgfCBjb3MxIGRhdGEgfCAgICAu Li4gICAgfAogICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKwoKRm9yIG1vcmUgZGV0YWlscywg cGxlYXNlIHJlZmVyIFNETSBhbmQgcGF0Y2hlcyB0byBpbXBsZW1lbnQgJ2dldCB2YWx1ZScgYW5k CidzZXQgdmFsdWUnLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRl bC5jb20+ClJldmlld2VkLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9y YWNsZS5jb20+Ci0tLQp2OToKICAgIC0gcmVwbGFjZSBmZWF0dXJlIGxpc3QgdG8gYSBmZWF0dXJl IHBvaW50ZXIgYXJyYXkuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAgLSBhZGQg J1BTUl9TT0NLRVRfTUFYX0ZFQVQnIGluICdlbnVtIHBzcl9mZWF0X3R5cGUnIHRvIGtub3cgZmVh dHVyZXMKICAgICAgYWNjb3VudC4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAt IG1vdmUgJ2ZlYXRfb3BzJyBkZWNsYXJhdGlvbiBpbnRvICdmZWF0X25vZGUnIHN0cnVjdHVyZS4K ICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIGRpcmVjdGx5IHVzZSB1bmlub24g Zm9yIGZlYXR1cmUgSFcgaW5mbyBhbmQgbW92ZSBpdHMgZGVjbGFyYXRpb24gaW50bwogICAgICAn ZmVhdF9ub2RlJyBzdHJ1Y3R1cmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAg LSByZW1vdmUgJ2VudW0gcHNyX2ZlYXRfdHlwZSBmZWF0dXJlJyBkZWNsYXJlZCBpbiAnZmVhdF9v cHMnIGJlY2F1c2UgaXQgaXMKICAgICAgbm90IHVzZWZ1bCBhZnRlciB1c2luZyBmZWF0dXJlIHBv aW50ZXIgYXJyYXkuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAgLSByZW5hbWUg J2wzX2NhdF9pbmZvJyB0byAnY2F0X2luZm8nIHRvIGJlIHVzZWQgYnkgYWxsIENBVC9DRFAgZmVh dHVyZXMuCiAgICAtIHJlbW92ZSAnbnJfZmVhdCcgd2hpY2ggaXMgb25seSBmb3IgYSByZWNvcmQu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCAnY29zX251bScgdG8g cmVjb3JkIGhvdyBtYW55IENPUyByZWdpc3RlcnMgYXJlIHVzZWQgYnkgYSBmZWF0dXJlIGluCiAg ICAgIG9uZSB0aW1lIGFjY2Vzcy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gcmVwbGFjZSAndWludDY0X3QnIHRvICd1aW50MzJfdCcgZm9yIGNibSB2YWx1ZSBiZWNhdXNl IFNETSBzcGVjaWZpZXMgdGhlCiAgICAgIG1heCAzMiBiaXRzIGZvciBpdC4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKdjc6CiAgICAtIHNvcnQgaW5jbHVzaW9uIGZpbGVzIHBvc2l0 aW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCnY2OgogICAgLSBtYWtlIGNvbW1pdCBt ZXNzYWdlIGJlIGNsZWFyZXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBX aWxrKQogICAgLSBmaXggd29yZGluZ3MuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6 dXRlayBXaWxrKQogICAgLSBhZGQgY29tbWVudHMgdG8gZXhwbGFpbiByZWxhdGlvbnNoaXAgYmV0 d2VlbiAnZmVhdF9tYXNrJyBhbmQKICAgICAgJ2VudW0gcHNyX2ZlYXRfdHlwZScuCiAgICAgIChz dWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQp2NToKICAgIC0gcmVtb3ZlIHNlY3Rp b24gbnVtYmVyLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUg ZG91YmxlIGJsYW5rLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2NDoKICAgIC0g Y3JlYXRlIHRoaXMgcGF0Y2ggYmVjYXVzZSBvZiByZW1vdmluZyBhbGwgb2xkIENBVC9DRFAgY29k ZXMgdG8gbWFrZQogICAgICBpbXBsZW1lbnRhdGlvbiBiZSBtb3JlIGVhc2lseSB1bmRlcnN0b29k LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQotLS0KIHhlbi9hcmNoL3g4Ni9wc3Iu YyB8IDk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogMSBmaWxlIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXgg OTZhODU4OS4uODIyZjFjMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bzci5jCisrKyBiL3hl bi9hcmNoL3g4Ni9wc3IuYwpAQCAtMTMsMTYgKzEzLDExMiBAQAogICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv cgogICogbW9yZSBkZXRhaWxzLgogICovCi0jaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRl IDx4ZW4vY3B1Lmg+CiAjaW5jbHVkZSA8eGVuL2Vyci5oPgorI2luY2x1ZGUgPHhlbi9pbml0Lmg+ CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8YXNtL3Bzci5oPgogCisvKgorICog VGVybWlub2xvZ3k6CisgKiAtIENBVCAgICAgICAgIENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9n eQorICogLSBDQk0gICAgICAgICBDYXBhY2l0eSBCaXRNYXNrcworICogLSBDRFAgICAgICAgICBD b2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9uCisgKiAtIENPUy9DTE9TICAgIENsYXNzIG9mIFNl cnZpY2UuIEFsc28gbWVhbiBDT1MgcmVnaXN0ZXJzLgorICogLSBDT1NfTUFYICAgICBNYXggbnVt YmVyIG9mIENPUyBmb3IgdGhlIGZlYXR1cmUgKG1pbnVzIDEpCisgKiAtIE1TUnMgICAgICAgIE1h Y2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXJzCisgKiAtIFBTUiAgICAgICAgIEludGVsIFBsYXRmb3Jt IFNoYXJlZCBSZXNvdXJjZQorICovCisKICNkZWZpbmUgUFNSX0NNVCAgICAgICAgKDE8PDApCiAj ZGVmaW5lIFBTUl9DQVQgICAgICAgICgxPDwxKQogI2RlZmluZSBQU1JfQ0RQICAgICAgICAoMTw8 MikKIAorLyoKKyAqIFBlciBTRE0gY2hhcHRlciAnQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5 OiBDYWNoZSBNYXNrIENvbmZpZ3VyYXRpb24nLAorICogdGhlIE1TUnMgcmFuZ2luZyBmcm9tIDBD OTBIIHRocm91Z2ggMEQwRkggKGluY2x1c2l2ZSksIGVuYWJsZXMgc3VwcG9ydCBmb3IKKyAqIHVw IHRvIDEyOCBMMyBDQVQgQ2xhc3NlcyBvZiBTZXJ2aWNlLiBUaGUgQ09TX0lEPVswLDEyN10uCisg KgorICogVGhlIE1TUnMgcmFuZ2luZyBmcm9tIDBEMTBIIHRocm91Z2ggMEQ0RkggKGluY2x1c2l2 ZSksIGVuYWJsZXMgc3VwcG9ydCBmb3IKKyAqIHVwIHRvIDY0IEwyIENBVCBDT1MuIFRoZSBDT1Nf SUQ9WzAsNjNdLgorICoKKyAqIFNvLCB0aGUgbWF4aW11bSBDT1MgcmVnaXN0ZXIgY291bnQgb2Yg b25lIGZlYXR1cmUgaXMgMTI4LgorICovCisjZGVmaW5lIE1BWF9DT1NfUkVHX0NOVCAgMTI4CisK K2VudW0gcHNyX2ZlYXRfdHlwZSB7CisgICAgUFNSX1NPQ0tFVF9MM19DQVQgPSAwLAorICAgIFBT Ul9TT0NLRVRfTDNfQ0RQLAorICAgIFBTUl9TT0NLRVRfTDJfQ0FULAorICAgIFBTUl9TT0NLRVRf TUFYX0ZFQVQsCit9OworCisvKiBDQVQvQ0RQIEhXIGluZm8gZGF0YSBzdHJ1Y3R1cmUuICovCitz dHJ1Y3QgcHNyX2NhdF9od19pbmZvIHsKKyAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKKyAgICB1 bnNpZ25lZCBpbnQgY29zX21heDsKK307CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSByZXByZXNl bnRzIG9uZSBmZWF0dXJlLgorICogZmVhdF9vcHMgICAgLSBGZWF0dXJlIG9wZXJhdGlvbiBjYWxs YmFjayBmdW5jdGlvbnMuCisgKiBpbmZvICAgICAgICAtIEZlYXR1cmUgSFcgaW5mby4KKyAqIGNv c19yZWdfdmFsIC0gQXJyYXkgdG8gc3RvcmUgdGhlIHZhbHVlcyBvZiBDT1MgcmVnaXN0ZXJzLiBP bmUgZW50cnkgc3RvcmVzCisgKiAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBvZiBvbmUgQ09TIHJl Z2lzdGVyLgorICogICAgICAgICAgICAgICBGb3IgTDMgQ0FUIGFuZCBMMiBDQVQsIG9uZSBlbnRy eSBjb3JyZXNwb25kcyB0byBvbmUgQ09TX0lELgorICogICAgICAgICAgICAgICBGb3IgQ0RQLCB0 d28gZW50cmllcyBjb3JyZXNwb25kIHRvIG9uZSBDT1NfSUQuIEUuZy4KKyAqICAgICAgICAgICAg ICAgQ09TX0lEPTAgY29ycmVzcG9uZHMgdG8gY29zX3JlZ192YWxbMF0gKERhdGEpIGFuZAorICog ICAgICAgICAgICAgICBjb3NfcmVnX3ZhbFsxXSAoQ29kZSkuCisgKiBjb3NfbnVtICAgICAtIENP UyByZWdpc3RlcnMgbnVtYmVyIHRoYXQgZmVhdHVyZSB1c2VzIGluIG9uZSB0aW1lIGFjY2Vzcy4K KyAqLworc3RydWN0IGZlYXRfbm9kZSB7CisgICAgLyoKKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBk ZWZpbmVzIGZlYXR1cmUgb3BlcmF0aW9uIGNhbGxiYWNrIGZ1bmN0aW9ucy4gRXZlcnkgZmVhdHVy ZQorICAgICAqIGVuYWJsZWQgTVVTVCBpbXBsZW1lbnQgc3VjaCBjYWxsYmFjayBmdW5jdGlvbnMg YW5kIHJlZ2lzdGVyIHRoZW0gdG8gb3BzLgorICAgICAqCisgICAgICogRmVhdHVyZSBzcGVjaWZp YyBiZWhhdmlvcnMgd2lsbCBiZSBlbmNhcHN1bGF0ZWQgaW50byB0aGVzZSBjYWxsYmFjaworICAg ICAqIGZ1bmN0aW9ucy4gVGhlbiwgdGhlIG1haW4gZmxvd3Mgd2lsbCBub3QgYmUgY2hhbmdlZCB3 aGVuIGludHJvZHVjaW5nIGEgbmV3CisgICAgICogZmVhdHVyZS4KKyAgICAgKi8KKyAgICBzdHJ1 Y3QgZmVhdF9vcHMgeworICAgICAgICAvKiBnZXRfY29zX21heCBpcyB1c2VkIHRvIGdldCBmZWF0 dXJlJ3MgY29zX21heC4gKi8KKyAgICAgICAgdW5zaWduZWQgaW50ICgqZ2V0X2Nvc19tYXgpKGNv bnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQpOworICAgIH0gb3BzOworCisgICAgLyogRW5jYXBz dWxhdGUgZmVhdHVyZSBzcGVjaWZpYyBIVyBpbmZvIGhlcmUuICovCisgICAgdW5pb24geworICAg ICAgICBzdHJ1Y3QgcHNyX2NhdF9od19pbmZvIGNhdF9pbmZvOworICAgIH0gaW5mbzsKKworICAg IHVpbnQzMl90IGNvc19yZWdfdmFsW01BWF9DT1NfUkVHX0NOVF07CisgICAgdW5zaWduZWQgaW50 IGNvc19udW07Cit9OworCisvKgorICogUFNSIGZlYXR1cmVzIGFyZSBtYW5hZ2VkIHBlciBzb2Nr ZXQuIEJlbG93IHN0cnVjdHVyZSBkZWZpbmVzIHRoZSBtZW1iZXJzCisgKiB1c2VkIHRvIG1hbmFn ZSB0aGVzZSBmZWF0dXJlcy4KKyAqIGZlYXRfbWFzayAtIE1hc2sgdXNlZCB0byByZWNvcmQgZmVh dHVyZXMgZW5hYmxlZCBvbiBzb2NrZXQuIFRoZXJlIG1heSBiZQorICogICAgICAgICAgICAgc29t ZSBmZWF0dXJlcyBlbmFibGVkIGF0IHNhbWUgdGltZS4KKyAqIGZlYXR1cmVzICAtIEFuIGZlYXR1 cmUgbm9kZSBhcnJheSB1c2VkIHRvIG1hbmFnZSBhbGwgZmVhdHVyZXMgZW5hYmxlZC4KKyAqIGNv c19yZWYgICAtIEEgcmVmZXJlbmNlIGNvdW50IGFycmF5IHRvIHJlY29yZCBob3cgbWFueSBkb21h aW5zIGFyZSB1c2luZyB0aGUKKyAqICAgICAgICAgICAgIENPU19JRC4KKyAqICAgICAgICAgICAg IEV2ZXJ5IGVudHJ5IG9mIGNvc19yZWYgY29ycmVzcG9uZHMgdG8gb25lIENPUyBJRC4KKyAqIHJl Zl9sb2NrICAtIEEgbG9jayB0byBwcm90ZWN0IGNvc19yZWYuCisgKi8KK3N0cnVjdCBwc3Jfc29j a2V0X2luZm8geworICAgIC8qCisgICAgICogSXQgbWFwcyB0byB2YWx1ZXMgZGVmaW5lZCBpbiAn ZW51bSBwc3JfZmVhdF90eXBlJyBiZWxvdy4gVmFsdWUgaW4gJ2VudW0KKyAgICAgKiBwc3JfZmVh dF90eXBlJyBtZWFucyB0aGUgYml0IHBvc2l0aW9uLgorICAgICAqIGJpdCAwOiAgIEwzIENBVAor ICAgICAqIGJpdCAxOiAgIEwzIENEUAorICAgICAqIGJpdCAyOiAgIEwyIENBVAorICAgICAqLwor ICAgIHVuc2lnbmVkIGludCBmZWF0X21hc2s7CisgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdHVy ZXNbUFNSX1NPQ0tFVF9NQVhfRkVBVF07CisgICAgdW5zaWduZWQgaW50IGNvc19yZWZbTUFYX0NP U19SRUdfQ05UXTsKKyAgICBzcGlubG9ja190IHJlZl9sb2NrOworfTsKKwogc3RydWN0IHBzcl9h c3NvYyB7CiAgICAgdWludDY0X3QgdmFsOwogICAgIHVpbnQ2NF90IGNvc19tYXNrOwotLSAKMS45 LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK