From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v13 08/23] x86: refactor psr: L3 CAT: set value: implement framework. Date: Thu, 6 Jul 2017 09:53:01 +0800 Message-ID: <1499305996-19029-9-git-send-email-yi.y.sun@linux.intel.com> References: <1499305996-19029-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dSwBw-0000cY-K1 for xen-devel@lists.xenproject.org; Thu, 06 Jul 2017 02:06:52 +0000 In-Reply-To: <1499305996-19029-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, 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 QXMgc2V0IHZhbHVlIGZsb3cgaXMgdGhlIG1vc3QgY29tcGxpY2F0ZWQgb25lIGluIHBzciwgaXQg d2lsbCBiZQpkaXZpZGVkIHRvIHNvbWUgcGF0Y2hlcyB0byBtYWtlIHRoaW5ncyBjbGVhcmVyLiBU aGlzIHBhdGNoCmltcGxlbWVudHMgdGhlIHNldCB2YWx1ZSBmcmFtZXdvcmsgdG8gc2hvdyBhIHdo b2xlIHBpY3R1cmUgZmlyc3RseS4KCkl0IGFsc28gY2hhbmdlcyBkb21jdGwgaW50ZXJmYWNlIHRv IG1ha2UgaXQgbW9yZSBnZW5lcmFsLgoKVG8gbWFrZSB0aGUgc2V0IHZhbHVlIGZsb3cgYmUgZ2Vu ZXJhbCBhbmQgY2FuIHN1cHBvcnQgbXVsdGlwbGUgZmVhdHVyZXMKYXQgc2FtZSB0aW1lLCBpdCBp bmNsdWRlcyBiZWxvdyBzdGVwczoKMS4gVGVzdCBhbmQgc2V0IGRvbV9pZHMgYml0IGNvcnJlc3Bv bmRpbmcgdG8gdGhlIGRvbWFpbi4gSWYgdGhlIG9sZCBiaXQgaXMgMAogICB3aGljaCBtZWFucyB0 aGUgZG9tYWluJ3MgQ09TIElEIGlzIGludmFsaWQsIHJlc3RvcmUgQ09TIElEIHRvIDAuIElmIHRo ZQogICBDT1MgSUQgaXMgdmFsaWQsIGdldCB0aGUgQ09TIElEIHRoYXQgY3VycmVudCBkb21haW4g aXMgdXNpbmcuCjIuIEdhdGhlciBhIHZhbHVlIGFycmF5IHRvIHN0b3JlIGFsbCBmZWF0dXJlcyBj dXJyZW50IHZhbHVlCiAgIGludG8gaXQgYW5kIHJlcGxhY2UgdGhlIGN1cnJlbnQgdmFsdWUgb2Yg dGhlIGZlYXR1cmUgd2hpY2ggaXMKICAgYmVpbmcgc2V0IHRvIHRoZSBuZXcgaW5wdXQgdmFsdWUu CjMuIEZpbmQgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIENPUyBJRCBvbiB3aGljaCBhbGwgZmVhdHVy ZXMnCiAgIHZhbHVlcyBhcmUgc2FtZSBhcyB0aGUgYXJyYXkuIFRoZW4sIHdlIGNhbiByZXVzZSB0 aGlzIENPUwogICBJRC4KNC4gSWYgZmFpbCB0byBmaW5kLCB3ZSBuZWVkIHBpY2sgYW4gYXZhaWxh YmxlIENPUyBJRC4gT25seSBDT1MgSUQgd2hpY2ggcmVmCiAgIGlzIDAgb3IgMSBjYW4gYmUgcGlj a2VkLgo1LiBXcml0ZSB0aGUgZmVhdHVyZSdzIE1TUnMgYWNjb3JkaW5nIHRvIHRoZSBDT1MgSUQu CjYuIFVwZGF0ZSByZWYgYWNjb3JkaW5nIHRvIENPUyBJRC4KNy4gU2F2ZSB0aGUgQ09TIElEIGlu dG8gY3VycmVudCBkb21haW4ncyBwc3JfY29zX2lkc1tzb2NrZXRdIHNvIHRoYXQgd2UKICAgY2Fu IGtub3cgd2hpY2ggQ09TIHRoZSBkb21haW4gaXMgdXNpbmcgb24gdGhlIHNvY2tldC4KClNvLCBz b21lIGZ1bmN0aW9ucyBhcmUgYWJzdHJhY3RlZCBhbmQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyB3 aWxsIGJlCmltcGxlbWVudGVkIGluIG5leHQgcGF0Y2hlcy4KCkhlcmUgaXMgYW4gZXhhbXBsZSB0 byB1bmRlcnN0YW5kIHRoZSBwcm9jZXNzLiBUaGUgQ1BVIHN1cHBvcnRzCnR3byBmZWF0dWVycywg ZS5nLiBMMyBDQVQgYW5kIEwyIENBVC4gVXNlciB3YW50cyB0byBzZXQgTDMgQ0FUCm9mIERvbTEg dG8gMHgxZmYuCjEuIEF0IHRoZSBpbml0aWFsIHRpbWUsIHRoZSBvbGRfY29zIG9mIERvbTEgaXMg MC4gVGhlIENPUyByZWdpc3RlcnMgdmFsdWVzCmFyZSBiZWxvdyBhdCB0aGlzIHRpbWUuCiAgICAg ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIHwgQ09TIDAgfCBDT1Mg MSB8IENPUyAyIHwgLi4uIHwKICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkwzIENBVCAgfCAweDdmZiB8IDB4N2ZmIHwgMHg3ZmYgfCAuLi4gfAogICAgICAgIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTDIgQ0FUICB8IDB4ZmYgIHwgMHhmZiAgfCAweGZmICB8 IC4uLiB8CiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKMi4gR2F0aGVy IHRoZSB2YWx1ZSBhcnJheSBhbmQgaW5zZXJ0IG5ldyB2YWx1ZSBpbnRvIGl0Ogp2YWxbMF06IDB4 MWZmCnZhbFsxXTogMHhmZgoKMy4gSXQgY2Fubm90IGZpbmQgYSBtYXRjaGluZyBDT1MuCgo0LiBQ aWNrIENPUyAxIHRvIHN0b3JlIHRoZSB2YWx1ZSBzZXQuCgo1LiBXcml0ZSB0aGUgTDMgQ0FUIENP UyAxIHJlZ2lzdGVycy4gVGhlIENPUyByZWdpc3RlcnMgdmFsdWVzIGFyZQpjaGFuZ2VkIHRvIGJl bG93IG5vdy4KICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAg fCBDT1MgMCB8IENPUyAxIHwgQ09TIDIgfCAuLi4gfAogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KTDMgQ0FUICB8IDB4N2ZmIHwgMHgxZmYgfCAuLi4gICB8IC4uLiB8CiAg ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMMiBDQVQgIHwgMHhmZiAgfCAw eGZmICB8IC4uLiAgIHwgLi4uIHwKICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCgo2LiBUaGUgcmVmWzFdIGlzIGluY3JlYXNlZCB0byAxIGJlY2F1c2UgRG9tMSBpcyB1c2lu ZyBpdCBub3cuCgo3LiBTYXZlIDEgdG8gRG9tMSdzIHBzcl9jb3NfaWRzW3NvY2tldF0uCgpUaGVu LCB1c2VyIHdhbnRzIHRvIHNldCBMMyBDQVQgb2YgRG9tMiB0byAweDFmZiB0b28uIFRoZSBvbGRf Y29zCm9mIERvbTIgaXMgMCB0b28uIFJlcGVhdCBhYm92ZSBmbG93LgoKVGhlIHZhbCBhcnJheSBh c3NlbWJsZWQgaXM6CnZhbFswXTogMHgxZmYKdmFsWzFdOiAweGZmCgpTbywgaXQgY2FuIGZpbmQg YSBtYXRjaGluZyBDT1MsIENPUyAxLiBUaGVuLCBpdCBjYW4gcmV1c2UgQ09TIDEKZm9yIERvbTIu CgpUaGUgcmVmWzFdIGlzIGluY3JlYXNlZCB0byAyIG5vdyBiZWNhdXNlIGJvdGggRG9tMSBhbmQg RG9tMiBhcmUKdXNpbmcgdGhpcyBDT1MgSUQuIFNldCAxIHRvIERvbTIncyBwc3JfY29zX2lkc1tz b2NrZXRdLgoKVGhlcmUgaXMgb25lIHRoaW5nIG5lZWQgdG8gZW1waGFzaXplIHRoYXQgd2UgbmVl ZCByZXN0b3JlIGRvbWFpbidzIENPUyBJRCB0bwowIHdoZW4gc29ja2V0IGlzIG9mZmxpbmUuIE90 aGVyd2lzZSwgYSB3cm9uZyBDT1MgSUQgd2lsbCBiZSB1c2VkIHdoZW4gdGhlCnNvY2tldCBpcyBv bmxpbmUgYWdhaW4uIFRoYXQgbWF5IGNhdXNlIHVzZXIgc2VlIHRoZSB3cm9uZyBDQk0gc2hvd24u IEJ1dCBpdAp0YWtlcyBtdWNoIHRpbWUgdG8gaXRlcmF0ZSBhbGwgZG9tYWlucyB0byByZXN0b3Jl IENPUyBJRCB0byAwLiBTbywgd2UgZGVmaW5lCmEgJ2RvbV9pZHNbXScgdG8gcmVwcmVzZW50cyBh bGwgZG9tYWlucywgb25lIGJpdCBjb3JyZXNwb25kcyB0byBvbmUgZG9tYWluLgpJZiB0aGUgYml0 IGlzIDAgd2hlbiBlbnRlcmluZyAncHNyX2N0eHRfc3dpdGNoX3RvJywgdGhhdCBtZWFucyB0aGlz IGlzIHRoZQpmaXJzdCB0aW1lIHRoZSBkb21haW4gaXMgc3dpdGNoZWQgdG8gdGhpcyBzb2NrZXQg b3IgZG9tYWluJ3MgQ09TIElEIGhhcyBub3QKYmVlbiBzZXQgc2luY2UgdGhlIHNvY2tldCBpcyBv bmxpbmUuIFNvLCB0aGUgQ09TIElEIHNldCB0byBBU1NPQyByZWdpc3RlciBvbgp0aGlzIHNvY2tl dCBzaG91bGQgYmUgZGVmYXVsdCB2YWx1ZSwgMC4gSWYgbm90LCB0aGF0IG1lYW5zIHRoZSBkb21h aW4ncyBDT1MKSUQgaGFzIGJlZW4gc2V0IHdoZW4gdGhlIHNvY2tldCB3YXMgb25saW5lLiBTbywg dGhpcyBDT1MgSUQgaXMgdmFsaWQgYW5kIHdlCmNhbiBkaXJlY3RseSB1c2UgaXQuIFdlIHJlc3Rv cmUgdGhlIGRvbWFpbidzIENPUyBJRCB0byAwIGlmIHRoZSBiaXQKY29ycmVzcG9uZGluZyB0byB0 aGUgZG9tYWluIGlzIDAgYnV0IHRoZSBkb21haW4ncyBDT1MgSUQgaXMgbm90IDAgd2hlbgoncHNy X2dldF92YWwnIGFuZCAncHNyX3NldF92YWwnIGlzIGNhbGxlZC4gVGhpcyBjYW4gYXZvaWQgQ1BV IHNlcmlhbGl6YXRpb24KaWYgcmVzdG9yaW5nIGFjdGlvbiBpcyBleGVjdHVlZCBpbiAncHNyX2N0 eHRfc3dpdGNoX3RvJy4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50 ZWwuY29tPgotLS0KdjEzOgogICAgLSByZXBsYWNlICd0ZXN0X2JpdCcgdG8gJ3Rlc3RfYW5kX3Nl dF9iaXQnIGluICdwc3JfZ2V0X3ZhbC9wc3Jfc2V0X3ZhbCcuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnc2V0X2JpdCcgdXNlZCBpbiAncHNyX3NldF92YWwn IC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIHVudXNlZCBw YXJhbWV0ZXIgaW4gJ2dldF9jb3NfbnVtKCknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQp2MTI6CiAgICAtIHJlbW92ZSB0aGUgbWVtZWJlcnMgcG9zaXRpb24gY2hhbmdlcyBpbiAn cHNyX3NvY2tldF9pbmZvJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g cmVuYW1lICdkb21faWRzJyB0byAnZG9tX3NldCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIGNhbGwgJ2JpdG1hcF96ZXJvJyB0byBjbGVhciBiaXRtYXAuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNvbWJpbmUgdHdvIGlmKCktcyBpbiAncHNy X2N0eHRfc3dpdGNoX3RvJyBhbmQgYWRkIGNvbW1lbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIHJlbW92ZSByZWR1bmRhbnQgY2hlY2sgaW4gJ3Bzcl9nZXRfdmFsJy4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gdXNlICdkb21haW5fbG9jaygp JyB0byBwcm90ZWN0ICdwc3JfY29zX2lkcycgc28gdGhhdCB0aGUgY29kZXMgZG8gbm90CiAgICAg IGRlcGVuZCBvbiAnZG9tY3RsX2xvY2snLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQogICAgLSBhZGp1c3QgY29kZXMgdG8gYXZvaWQgY2FzdCBpbiAncHNyX3NldF92YWwnLgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGp1c3QgY29kZXMgdG8gYXZvaWQg ZHVwbGljYXRpb24gb2YgZXJyb3IgcGF0aHMgaW4gJ3Bzcl9zZXRfdmFsJy4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2xlYXIgdGhlIGRvbWFpbiBiaXQgYW55d2F5IGlu ICdwc3JfZnJlZV9jb3MnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSB1 c2UgdGhlIGRlZmF1bHQgY29zIGlkIHdoZW4gZ2V0dGluZyBvbGRfY29zIGluICdwc3Jfc2V0X3Zh bCcuCnYxMToKICAgIC0gZGVmaW5lICdkb21faWRzW10nIGFuZCBpbXBsZW1lbnQgcmVsYXRlZCBm bG93cy4KICAgIC0gcmVzdG9yZSBkb21haW4gY29zIGlkIHRvIDAgaW4gJ3Bzcl9nZXRfdmFsJy4K ICAgIC0gcmVuYW1lICd3cml0ZV9wc3JfbXNyJyB0byAnd3JpdGVfcHNyX21zcnMnIGFuZCBjaGFu Z2UgaXRzIHBhcmFtZXRlcnMgdG8KICAgICAgaGFuZGxlIHZhbHVlIGFycmF5IHRoZSBmZWF0dXJl J3MgYWxsIE1TUnMuCiAgICAtIGZpeCBjb2Rpbmcgc3R5bGUgaXNzdWUuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGRvIG5vdCBuZWVkIGNoZWNrICdjb3MnIGluIEFTU0VS VC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdpbnNlcnRf dmFsX3RvX2FycmF5JyB0byAnaW5zZXJ0X3ZhbF9pbnRvX2FycmF5Jy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlICdyZWZfbG9jaycgZnJvbSBwYXJhbWV0ZXIg bGlzdCBpbiAnZmluZF9jb3MnIGFuZCAncGlja19hdmFpbF9jb3MnLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgQVNTRVJUIGNoZWNrIHRvICdyZWZfbG9jaycg aW4gJ2ZpbmRfY29zJyBhbmQgJ3BpY2tfYXZhaWxfY29zJy4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gZml4IGEgYnVnIGZvciBjaGVja2luZyAnZmVhdF90eXBlJy4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW92ZSAnZnJlZV9hcnJheScgbGFi ZWwuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSBjb21tZW50 cyBhbmQgY29tbWl0IG1lc3NhZ2UuCnYxMDoKICAgIC0gcmVzdG9yZSBkb21haW4gY29zIGlkIHRv IDAgd2hlbiBzb2NrZXQgaXMgb2ZmbGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gY2hlY2sgJ3Bzcl9jYXRfb3AuZGF0YScgdG8gbWFrZSBzdXJlIG9ubHkgbG93ZXIg MzIgYml0cyBhcmUgdmFsaWQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IHJlbW92ZSB1bm5lY2Vzc2FyeSBmaXhlZCB3aWR0aCB0eXBlIG9mIHBhcmFtZXRlcnMgYW5kIHZh cmlhYmxlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdp bnNlcnRfbmV3X3ZhbF90b19hcnJheScgdG8gJ2luc2VydF92YWxfdG9fYXJyYXknLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBpbnB1dCAncmVmX2xvY2snIHBvaW50ZXIg aW50byBmdW5jdGlvbnMgdG8gY2hlY2sgaWYgaXQgaGFzIGJlZW4gbG9ja2VkLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGQgY29tbWVudCB0byBkZWNsYXJlIHRoZSBz ZXQgcHJvY2VzcyBpcyBwcm90ZWN0ZWQgYnkgJ2RvbWN0bF9sb2NrJy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hlY2sgJ2ZlYXRfdHlwZScuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnZmVhdF9tYXNrJy4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGNyaXRlcmlhIG9m IEFTU0VSVC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGZs b3cgb2YgJ3Bzcl9zZXRfdmFsJyB0byBhdm9pZCAnZ290bycgZm9yIHN1Y2Nlc3NmdWwgY2FzZXMu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHVzZSBBU1NFUlQgdG8gY2hl Y2sgJ3NvY2tldF9pbmZvJyBpbiAncHNyX2ZyZWVfY29zJy4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGNvbW1lbnQgaW4gJ3Bzcl9mcmVl X2NvcycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY5OgogICAgLSB1c2UgZ290 byBzdHlsZSBlcnJvciBoYW5kbGluZyBpbiAncHNyX3NldF92YWwnLgogICAgICAoc3VnZ2VzdGVk IGJ5IFdlaSBMaXUpCiAgICAtIHVzZSBBU1NFUlQgZm9yIGNoZWNraW5nIG9sZF9jb3MuCiAgICAg IChzdWdnZXN0ZWQgYnkgV2VpIExpdSBhbmQgSmFuIEJldWxpY2gpCiAgICAtIGZpeCBjb2Rpbmcg c3R5bGUgaXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gcmVuYW1lICdh c3NlbWJsZV92YWxfYXJyYXknIHRvICdjb21iaW5lX3ZhbF9hcnJheScgaW4gcGVydmlvdXMgcGF0 Y2guCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gdXNlICdzcGluX2lzX2xvY2tl ZCcgdG8gY2hlY2sgcmVmX2xvY2suCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAg LSBhZGQgYW4gaW5wdXQgcGFyYW1ldGVyICdhcnJheV9sZW4nIGZvciAnd3JpdGVfcHNyX21zcicu CiAgICAtIGNoZWNrICdzb2NrZXRfaW5mbycgYW5kICdwc3JfY29zX2lkcycgaW4gdGhpcyBwYXRj aC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5IHBhdGNoIHRp dGxlIHRvIGluZGljYXRlICdMMyBDQVQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQogICAgLSBmaXggY29tbWl0IG1lc3NhZ2Ugd29yZHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIGNoYW5nZSAnYXNzZW1ibGVfdmFsX2FycmF5JyB0byAnZ2F0aGVyX3Zh bF9hcnJheScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAn c2V0X25ld192YWxfdG9fYXJyYXknIHRvICdpbnNlcnRfbmV3X3ZhbF90b19hcnJheScuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSBwYXJhbWV0ZXIgJ20nIG9m ICdpbnNlcnRfbmV3X3ZhbF90b19hcnJheScgdG8gJ25ld192YWwnLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2UgJ3dyaXRlX3Bzcl9tc3InIHRvICd3cml0ZV9w c3JfbXNycycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNvcnJlY3Qg Y29tbWVudHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1 bm5lY2Vzc2FyeSBjb21tZW50cy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gYWRqdXN0IGNvbmRpdGlvbnMgYWZ0ZXIgJ2ZpbmRfY29zJyB0byBzYXZlIGEgbGV2ZWwgb2Yg aW5kZW50YXRpb24uCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCAn QVNTRVJUKCFvbGRfY29zIHx8IHJlZltvbGRfY29zXSknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQogICAgLSBtb3ZlIEFTU0VSVCgpIGNoZWNrIGludG8gbG9ja2VkIHJlZ2lvbi4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVwbGFjZSBwYXJhbWV0ZXIg Jyp2YWwnIHRvICd2YWxbXScgaW4gc29tZSBmdW5jdGlvbnMuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAnd3JpdGVfcHNyX21zcicgcGFyYW1ldGVycyB0byBw cmVwYXJlIHRvIG9ubHkgc2V0IG9uZSBuZXcgdmFsdWUKICAgICAgZm9yIG9uZSBmZWF0dXJlLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2VzIGFib3V0ICd1aW50 NjRfdCcgdG8gJ3VpbnQzMl90Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gYWRkIGV4cGxhbmF0aW9uIGFib3V0IGNvbnRleHQgc3dpdGNoLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQp2NToKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZXR1cm4gYW4gZXJyb3IgZm9yIGFsbCBo ZWxwZXIgZnVuY3Rpb25zIGluIHNldCBmbG93LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSByZW1vdmUgdW5uZWNlc3NhcnkgY2FzdC4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gZGl2aWRlICdnZXRfb2xkX3NldF9uZXcnIHRvIHR3byBmdW5jdGlv bnMsICdhc3NlbWJsZV92YWxfYXJyYXknIGFuZAogICAgICAnc2V0X25ld192YWxfdG9fYXJyYXkn LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgY29tbWVudHMu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkanVzdCBjb2RlIGZvcm1h dC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlICdhbGxvY19u ZXdfY29zJyB0byAncGlja19hdmFpbF9jb3MnIHRvIG1ha2UgbmFtZSBhY2N1cmF0ZS4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hlY2sgZmVhdHVyZSB0eXBlIHdoZW4g ZW50ZXJpbmcgJ3Bzcl9zZXRfdmFsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gdXNlIEFTU0VSVCB0byBjaGVjayByZWYuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIHJlbmFtZSAnZGF0W10nIHRvICdkYXRhW10nLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQp2NDoKICAgIC0gY3JlYXRlIHRoaXMgcGF0Y2ggdG8gbWFrZSBjb2Rl cyBlYXNpZXIgdG8gdW5kZXJzdGFuZC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK LS0tCiB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgIHwgIDE4ICsrLS0KIHhlbi9hcmNoL3g4Ni9w c3IuYyAgICAgICAgfCAyNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCB8ICAgNCArLQogMyBmaWxlcyBjaGFu Z2VkLCAyNDIgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCmluZGV4IGYzNTBjNjYu LmNlYTY0M2MgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYworKysgYi94ZW4vYXJj aC94ODYvZG9tY3RsLmMKQEAgLTE0MjIsMjEgKzE0MjIsMjEgQEAgbG9uZyBhcmNoX2RvX2RvbWN0 bCgKICAgICAgICAgICAgIHVpbnQzMl90IHZhbDMyOwogCiAgICAgICAgIGNhc2UgWEVOX0RPTUNU TF9QU1JfQ0FUX09QX1NFVF9MM19DQk06Ci0gICAgICAgICAgICByZXQgPSBwc3Jfc2V0X2wzX2Ni bShkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUFNSX0NCTV9UWVBFX0wzKTsKKyAgICAgICAgICAgIHJldCA9IHBzcl9z ZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVfTDMpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg ICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NPREU6Ci0gICAgICAgICAg ICByZXQgPSBwc3Jfc2V0X2wzX2NibShkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRh LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX0NCTV9UWVBFX0wzX0NPREUp OworICAgICAgICAgICAgcmV0ID0gcHNyX3NldF92YWwoZCwgZG9tY3RsLT51LnBzcl9jYXRfb3Au dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRf b3AuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MM19D T0RFKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QU1Jf Q0FUX09QX1NFVF9MM19EQVRBOgotICAgICAgICAgICAgcmV0ID0gcHNyX3NldF9sM19jYm0oZCwg ZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBTUl9DQk1fVFlQRV9MM19EQVRBKTsKKyAgICAgICAgICAgIHJldCA9IHBzcl9z ZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVfTDNfREFUQSk7CiAgICAgICAgICAgICBicmVhazsK IAogICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ0JNOgpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IGMyNDVj OWEuLjVhYTFiY2MgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJj aC94ODYvcHNyLmMKQEAgLTEyMyw2ICsxMjMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRf cHJvcHMgewogICogcmVmX2xvY2sgIC0gQSBsb2NrIHRvIHByb3RlY3QgY29zX3JlZi4KICAqIGNv c19yZWYgICAtIEEgcmVmZXJlbmNlIGNvdW50IGFycmF5IHRvIHJlY29yZCBob3cgbWFueSBkb21h aW5zIGFyZSB1c2luZyB0aGUKICAqICAgICAgICAgICAgIENPUyBJRC4gRXZlcnkgZW50cnkgb2Yg Y29zX3JlZiBjb3JyZXNwb25kcyB0byBvbmUgQ09TIElELgorICogZG9tX3NldCAgIC0gQSBiaXRt YXAgdG8gaW5kaWNhdGUgd2hpY2ggZG9tYWluJ3MgY29zIGlkIGhhcyBiZWVuIHNldC4KICAqLwog c3RydWN0IHBzcl9zb2NrZXRfaW5mbyB7CiAgICAgYm9vbCBmZWF0X2luaXQ7CkBAIC0xMzAsNiAr MTMxLDggQEAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyB7CiAgICAgc3RydWN0IGZlYXRfbm9kZSAq ZmVhdHVyZXNbRkVBVF9UWVBFX05VTV07CiAgICAgc3BpbmxvY2tfdCByZWZfbG9jazsKICAgICB1 bnNpZ25lZCBpbnQgY29zX3JlZltNQVhfQ09TX1JFR19DTlRdOworICAgIC8qIEV2ZXJ5IGJpdCBj b3JyZXNwb25kcyB0byBhIGRvbWFpbi4gSW5kZXggaXMgZG9tYWluX2lkLiAqLworICAgIERFQ0xB UkVfQklUTUFQKGRvbV9zZXQsIERPTUlEX0lETEUgKyAxKTsKIH07CiAKIHN0cnVjdCBwc3JfYXNz b2MgewpAQCAtMTg3LDYgKzE5MCw4IEBAIHN0YXRpYyB2b2lkIGZyZWVfc29ja2V0X3Jlc291cmNl cyh1bnNpZ25lZCBpbnQgc29ja2V0KQogICAgIGluZm8tPmZlYXRfaW5pdCA9IGZhbHNlOwogCiAg ICAgbWVtc2V0KGluZm8tPmNvc19yZWYsIDAsIE1BWF9DT1NfUkVHX0NOVCAqIHNpemVvZih1bnNp Z25lZCBpbnQpKTsKKworICAgIGJpdG1hcF96ZXJvKGluZm8tPmRvbV9zZXQsIERPTUlEX0lETEUg KyAxKTsKIH0KIAogc3RhdGljIGVudW0gcHNyX2ZlYXRfdHlwZSBwc3JfY2JtX3R5cGVfdG9fZmVh dF90eXBlKGVudW0gY2JtX3R5cGUgdHlwZSkKQEAgLTQ2MywxMyArNDY4LDI1IEBAIHZvaWQgcHNy X2N0eHRfc3dpdGNoX3RvKHN0cnVjdCBkb21haW4gKmQpCiAgICAgaWYgKCBwc3JfY210X2VuYWJs ZWQoKSApCiAgICAgICAgIHBzcl9hc3NvY19ybWlkKCZyZWcsIGQtPmFyY2gucHNyX3JtaWQpOwog Ci0gICAgLyogSWYgZG9tYWluJ3MgJ3Bzcl9jb3NfaWRzJyBpcyBOVUxMLCB3ZSBzZXQgZGVmYXVs dCB2YWx1ZSBmb3IgaXQuICovCisgICAgLyoKKyAgICAgKiBJZiB0aGUgZG9tYWluIGlzIG5vdCBz ZXQgaW4gJ2RvbV9zZXQnIGJpdG1hcCwgdGhhdCBtZWFucyB0aGUgZG9tYWluJ3MKKyAgICAgKiBj b3MgaWQgaXMgbm90IHZhbGlkLiBTbywgd2UgaGF2ZSB0byB1c2UgZGVmYXVsdCB2YWx1ZSAoMCkg dG8gc2V0IEFTU09DCisgICAgICogcmVnaXN0ZXIuIEZ1cnRoZXJtb3JlLCBpZiBkb21haW4ncyAn cHNyX2Nvc19pZHMnIGlzIE5VTEwsIHdlIG5lZWQKKyAgICAgKiBkZWZhdWx0IHZhbHVlIGZvciBp dCB0b28gKGZvciBjYXNlIHRoYXQgdGhlIGRvbWFpbidzIHBzcl9jb3NfaWRzIGlzIG5vdAorICAg ICAqIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQpLgorICAgICAqLwogICAgIGlmICggcHNyYS0+Y29z X21hc2sgKQotICAgICAgICByZWcgPSBwc3JfYXNzb2NfY29zKHJlZywKLSAgICAgICAgICAgICAg ICAgIChkLT5hcmNoLnBzcl9jb3NfaWRzID8KLSAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnBz cl9jb3NfaWRzW2NwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKV0gOgotICAgICAgICAg ICAgICAgICAgIDApLAotICAgICAgICAgICAgICAgICAgcHNyYS0+Y29zX21hc2spOworICAgIHsK KyAgICAgICAgdW5zaWduZWQgaW50IHNvY2tldCA9IGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nv cl9pZCgpKTsKKyAgICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9IHNvY2tldF9p bmZvICsgc29ja2V0OworICAgICAgICB1bnNpZ25lZCBpbnQgY29zID0gMDsKKworICAgICAgICBp ZiAoIGxpa2VseSh0ZXN0X2JpdChkLT5kb21haW5faWQsIGluZm8tPmRvbV9zZXQpKSAmJgorICAg ICAgICAgICAgIGQtPmFyY2gucHNyX2Nvc19pZHMgKQorICAgICAgICAgICAgY29zID0gZC0+YXJj aC5wc3JfY29zX2lkc1tzb2NrZXRdOworCisgICAgICAgIHJlZyA9IHBzcl9hc3NvY19jb3MocmVn LCBjb3MsIHBzcmEtPmNvc19tYXNrKTsKKyAgICB9CiAKICAgICBpZiAoIHJlZyAhPSBwc3JhLT52 YWwgKQogICAgIHsKQEAgLTU1MSw3ICs1NjgsMTMgQEAgaW50IHBzcl9nZXRfdmFsKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCiAgICAgICAgIHJldHVybiAtRU5PRU5UOwog ICAgIH0KIAorICAgIGRvbWFpbl9sb2NrKGQpOworICAgIGlmICggIXRlc3RfYW5kX3NldF9iaXQo ZC0+ZG9tYWluX2lkLCBzb2NrZXRfaW5mb1tzb2NrZXRdLmRvbV9zZXQpICkKKyAgICAgICAgZC0+ YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdID0gMDsKKwogICAgIGNvcyA9IGQtPmFyY2gucHNyX2Nv c19pZHNbc29ja2V0XTsKKyAgICBkb21haW5fdW5sb2NrKGQpOworCiAgICAgLyoKICAgICAgKiBJ ZiBpbnB1dCBjb3MgZXhjZWVkcyBjdXJyZW50IGZlYXR1cmUncyBjb3NfbWF4LCB3ZSBzaG91bGQg cmV0dXJuIGl0cwogICAgICAqIGRlZmF1bHQgdmFsdWUgd2hpY2ggaXMgc3RvcmVkIGluIGNvcyAw LiBUaGlzIGNhc2Ugb25seSBoYXBwZW5zCkBAIC01NzUsMTUgKzU5OCwyMTQgQEAgaW50IHBzcl9n ZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCiAgICAgcmV0dXJu IC1FSU5WQUw7CiB9CiAKLWludCBwc3Jfc2V0X2wzX2NibShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBpbnQgc29ja2V0LAotICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNibSwgZW51bSBj Ym1fdHlwZSB0eXBlKQorLyogU2V0IHZhbHVlIGZ1bmN0aW9ucyAqLworc3RhdGljIHVuc2lnbmVk IGludCBnZXRfY29zX251bSh2b2lkKQogewogICAgIHJldHVybiAwOwogfQogCi0vKiBDYWxsZWQg d2l0aCBkb21haW4gbG9jayBoZWxkLCBubyBleHRyYSBsb2NrIG5lZWRlZCBmb3IgJ3Bzcl9jb3Nf aWRzJyAqLworc3RhdGljIGludCBnYXRoZXJfdmFsX2FycmF5KHVpbnQzMl90IHZhbFtdLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheV9sZW4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcykKK3sKKyAg ICByZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIGludCBpbnNlcnRfdmFsX2ludG9fYXJyYXko dWludDMyX3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIGNibV90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCBuZXdfdmFsKQoreworICAgIHJldHVybiAtRUlOVkFMOworfQor CitzdGF0aWMgaW50IGZpbmRfY29zKGNvbnN0IHVpbnQzMl90IHZhbFtdLCB1bnNpZ25lZCBpbnQg YXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90 eXBlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICpp bmZvKQoreworICAgIHJldHVybiAtRU5PRU5UOworfQorCitzdGF0aWMgaW50IHBpY2tfYXZhaWxf Y29zKGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHZhbFtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuLAor ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZSkKK3sKKyAgICBy ZXR1cm4gLUVOT0VOVDsKK30KKworc3RhdGljIGludCB3cml0ZV9wc3JfbXNycyh1bnNpZ25lZCBp bnQgc29ja2V0LCB1bnNpZ25lZCBpbnQgY29zLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50MzJfdCB2YWxbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZSkKK3sKKyAgICByZXR1cm4gLUVO T0VOVDsKK30KKworaW50IHBzcl9zZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGlu dCBzb2NrZXQsCisgICAgICAgICAgICAgICAgdWludDY0X3QgbmV3X3ZhbCwgZW51bSBjYm1fdHlw ZSB0eXBlKQoreworICAgIHVuc2lnbmVkIGludCBvbGRfY29zLCBhcnJheV9sZW47CisgICAgaW50 IGNvcywgcmV0OworICAgIHVuc2lnbmVkIGludCAqcmVmOworICAgIHVpbnQzMl90ICp2YWxfYXJy YXksIHZhbDsKKyAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvID0gZ2V0X3NvY2tldF9p bmZvKHNvY2tldCk7CisgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZTsKKworICAgIGlm ICggSVNfRVJSKGluZm8pICkKKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoaW5mbyk7CisKKyAgICB2 YWwgPSBuZXdfdmFsOworICAgIGlmICggbmV3X3ZhbCAhPSB2YWwgKQorICAgICAgICByZXR1cm4g LUVJTlZBTDsKKworICAgIGZlYXRfdHlwZSA9IHBzcl9jYm1fdHlwZV90b19mZWF0X3R5cGUodHlw ZSk7CisgICAgaWYgKCBmZWF0X3R5cGUgPj0gQVJSQVlfU0laRShpbmZvLT5mZWF0dXJlcykgfHwK KyAgICAgICAgICFpbmZvLT5mZWF0dXJlc1tmZWF0X3R5cGVdICkKKyAgICAgICAgcmV0dXJuIC1F Tk9FTlQ7CisKKyAgICAvKgorICAgICAqIFN0ZXAgMDoKKyAgICAgKiBvbGRfY29zIG1lYW5zIHRo ZSBDT1MgSUQgY3VycmVudCBkb21haW4gaXMgdXNpbmcuIEJ5IGRlZmF1bHQsIGl0IGlzIDAuCisg ICAgICoKKyAgICAgKiBGb3IgZXZlcnkgQ09TIElELCB0aGVyZSBpcyBhIHJlZmVyZW5jZSBjb3Vu dCB0byByZWNvcmQgaG93IG1hbnkgZG9tYWlucworICAgICAqIGFyZSB1c2luZyB0aGUgQ09TIHJl Z2lzdGVyIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBDT1MgSUQuCisgICAgICogLSBJZiByZWZbb2xk X2Nvc10gaXMgMCwgdGhhdCBtZWFucyB0aGlzIENPUyBpcyBub3QgdXNlZCBieSBhbnkgZG9tYWlu LgorICAgICAqIC0gSWYgcmVmW29sZF9jb3NdIGlzIDEsIHRoYXQgbWVhbnMgdGhpcyBDT1MgaXMg b25seSB1c2VkIGJ5IGN1cnJlbnQKKyAgICAgKiAgIGRvbWFpbi4KKyAgICAgKiAtIElmIHJlZltv bGRfY29zXSBpcyBtb3JlIHRoYW4gMSwgdGhhdCBtZWFuIG11bHRpcGxlIGRvbWFpbnMgYXJlIHVz aW5nCisgICAgICogICB0aGlzIENPUy4KKyAgICAgKi8KKyAgICBkb21haW5fbG9jayhkKTsKKyAg ICBpZiAoICF0ZXN0X2FuZF9zZXRfYml0KGQtPmRvbWFpbl9pZCwgaW5mby0+ZG9tX3NldCkgKQor ICAgICAgICBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF0gPSAwOworCisgICAgb2xkX2NvcyA9 IGQtPmFyY2gucHNyX2Nvc19pZHNbc29ja2V0XTsKKyAgICBkb21haW5fdW5sb2NrKGQpOworCisg ICAgQVNTRVJUKG9sZF9jb3MgPCBNQVhfQ09TX1JFR19DTlQpOworCisgICAgcmVmID0gaW5mby0+ Y29zX3JlZjsKKworICAgIC8qCisgICAgICogU3RlcCAxOgorICAgICAqIEdhdGhlciBhIHZhbHVl IGFycmF5IHRvIHN0b3JlIGFsbCBmZWF0dXJlcyBjb3NfcmVnX3ZhbFtvbGRfY29zXS4KKyAgICAg KiBBbmQsIHNldCB0aGUgaW5wdXQgbmV3IHZhbCBpbnRvIGFycmF5IGFjY29yZGluZyB0byB0aGUg ZmVhdHVyZSdzCisgICAgICogcG9zaXRpb24gaW4gYXJyYXkuCisgICAgICovCisgICAgYXJyYXlf bGVuID0gZ2V0X2Nvc19udW0oKTsKKyAgICB2YWxfYXJyYXkgPSB4emFsbG9jX2FycmF5KHVpbnQz Ml90LCBhcnJheV9sZW4pOworICAgIGlmICggIXZhbF9hcnJheSApCisgICAgICAgIHJldHVybiAt RU5PTUVNOworCisgICAgaWYgKCAocmV0ID0gZ2F0aGVyX3ZhbF9hcnJheSh2YWxfYXJyYXksIGFy cmF5X2xlbiwgaW5mbywgb2xkX2NvcykpICE9IDAgKQorICAgICAgICBnb3RvIGZyZWVfYXJyYXk7 CisKKyAgICBpZiAoIChyZXQgPSBpbnNlcnRfdmFsX2ludG9fYXJyYXkodmFsX2FycmF5LCBhcnJh eV9sZW4sIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXRf dHlwZSwgdHlwZSwgdmFsKSkgIT0gMCApCisgICAgICAgIGdvdG8gZnJlZV9hcnJheTsKKworICAg IHNwaW5fbG9jaygmaW5mby0+cmVmX2xvY2spOworCisgICAgLyoKKyAgICAgKiBTdGVwIDI6Cisg ICAgICogVHJ5IHRvIGZpbmQgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIENPUyBJRCBvbiB3aGljaCBh bGwgZmVhdHVyZXMnIHZhbHVlcworICAgICAqIGFyZSBzYW1lIGFzIHRoZSBhcnJheS4gVGhlbiwg d2UgY2FuIHJldXNlIHRoaXMgQ09TIElELgorICAgICAqLworICAgIGNvcyA9IGZpbmRfY29zKHZh bF9hcnJheSwgYXJyYXlfbGVuLCBmZWF0X3R5cGUsIGluZm8pOworICAgIGlmICggY29zID09IG9s ZF9jb3MgKQorICAgIHsKKyAgICAgICAgcmV0ID0gMDsKKyAgICAgICAgZ290byB1bmxvY2tfZnJl ZV9hcnJheTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFN0ZXAgMzoKKyAgICAgKiBJZiBmYWls IHRvIGZpbmQsIHdlIG5lZWQgcGljayBhbiBhdmFpbGFibGUgQ09TIElELgorICAgICAqIEluIGZh Y3QsIG9ubHkgQ09TIElEIHdoaWNoIHJlZiBpcyAxIG9yIDAgY2FuIGJlIHBpY2tlZCBmb3IgY3Vy cmVudAorICAgICAqIGRvbWFpbi4gSWYgb2xkX2NvcyBpcyBub3QgMCBhbmQgaXRzIHJlZj09MSwg dGhhdCBtZWFucyBvbmx5IGN1cnJlbnQKKyAgICAgKiBkb21haW4gaXMgdXNpbmcgdGhpcyBvbGRf Y29zIElELiBTbywgdGhpcyBvbGRfY29zIElEIGNlcnRhaW5seSBjYW4KKyAgICAgKiBiZSByZXVz ZWQgYnkgY3VycmVudCBkb21haW4uIFJlZj09MCBtZWFucyB0aGVyZSBpcyBubyBhbnkgZG9tYWlu CisgICAgICogdXNpbmcgdGhpcyBDT1MgSUQuIFNvIGl0IGNhbiBiZSB1c2VkIGZvciBjdXJyZW50 IGRvbWFpbiB0b28uCisgICAgICovCisgICAgaWYgKCBjb3MgPCAwICkKKyAgICB7CisgICAgICAg IGNvcyA9IHBpY2tfYXZhaWxfY29zKGluZm8sIHZhbF9hcnJheSwgYXJyYXlfbGVuLCBvbGRfY29z LCBmZWF0X3R5cGUpOworICAgICAgICBpZiAoIGNvcyA8IDAgKQorICAgICAgICB7CisgICAgICAg ICAgICByZXQgPSBjb3M7CisgICAgICAgICAgICBnb3RvIHVubG9ja19mcmVlX2FycmF5OworICAg ICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogU3RlcCA0OgorICAgICAgICAgKiBXcml0 ZSB0aGUgZmVhdHVyZSdzIE1TUnMgYWNjb3JkaW5nIHRvIHRoZSBDT1MgSUQuCisgICAgICAgICAq LworICAgICAgICByZXQgPSB3cml0ZV9wc3JfbXNycyhzb2NrZXQsIGNvcywgdmFsX2FycmF5LCBh cnJheV9sZW4sIGZlYXRfdHlwZSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIGdv dG8gdW5sb2NrX2ZyZWVfYXJyYXk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBTdGVwIDU6Cisg ICAgICogRmluZCB0aGUgQ09TIElEIChmaW5kX2NvcyByZXN1bHQgaXMgJz49IDAnIG9yIGFuIGF2 YWlsYWJsZSBDT1MgSUQgaXMKKyAgICAgKiBwaWNrZWQsIHRoZW4gdXBkYXRlIHJlZiBhY2NvcmRp bmcgdG8gQ09TIElELgorICAgICAqLworICAgIHJlZltjb3NdKys7CisgICAgQVNTRVJUKCFjb3Mg fHwgcmVmW2Nvc10pOworICAgIEFTU0VSVCghb2xkX2NvcyB8fCByZWZbb2xkX2Nvc10pOworICAg IHJlZltvbGRfY29zXS0tOworICAgIHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7CisKKyAg ICAvKgorICAgICAqIFN0ZXAgNjoKKyAgICAgKiBTYXZlIHRoZSBDT1MgSUQgaW50byBjdXJyZW50 IGRvbWFpbidzIHBzcl9jb3NfaWRzW10gc28gdGhhdCB3ZSBjYW4ga25vdworICAgICAqIHdoaWNo IENPUyB0aGUgZG9tYWluIGlzIHVzaW5nIG9uIHRoZSBzb2NrZXQuIE9uZSBkb21haW4gY2FuIG9u bHkgdXNlCisgICAgICogb25lIENPUyBJRCBhdCBzYW1lIHRpbWUgb24gZWFjaCBzb2NrZXQuCisg ICAgICovCisgICAgZG9tYWluX2xvY2soZCk7CisgICAgZC0+YXJjaC5wc3JfY29zX2lkc1tzb2Nr ZXRdID0gY29zOworICAgIGRvbWFpbl91bmxvY2soZCk7CisKKyAgICBnb3RvIGZyZWVfYXJyYXk7 CisKKyB1bmxvY2tfZnJlZV9hcnJheToKKyAgICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2sp OworCisgZnJlZV9hcnJheToKKyAgICB4ZnJlZSh2YWxfYXJyYXkpOworICAgIHJldHVybiByZXQ7 Cit9CisKIHN0YXRpYyB2b2lkIHBzcl9mcmVlX2NvcyhzdHJ1Y3QgZG9tYWluICpkKQogeworICAg IHVuc2lnbmVkIGludCBzb2NrZXQsIGNvczsKKworICAgIEFTU0VSVChzb2NrZXRfaW5mbyk7CisK KyAgICBpZiAoICFkLT5hcmNoLnBzcl9jb3NfaWRzICkKKyAgICAgICAgcmV0dXJuOworCisgICAg LyogRG9tYWluIGlzIGRlc3Ryb3llZCBzbyBpdHMgY29zX3JlZiBzaG91bGQgYmUgZGVjcmVhc2Vk LiAqLworICAgIGZvciAoIHNvY2tldCA9IDA7IHNvY2tldCA8IG5yX3NvY2tldHM7IHNvY2tldCsr ICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBzb2NrZXRf aW5mbyArIHNvY2tldDsKKworICAgICAgICBjbGVhcl9iaXQoZC0+ZG9tYWluX2lkLCBpbmZvLT5k b21fc2V0KTsKKworICAgICAgICAvKiBjb3MgMCBpcyBkZWZhdWx0IG9uZSB3aGljaCBkb2VzIG5v dCBuZWVkIGJlIGhhbmRsZWQuICovCisgICAgICAgIGNvcyA9IGQtPmFyY2gucHNyX2Nvc19pZHNb c29ja2V0XTsKKyAgICAgICAgaWYgKCBjb3MgPT0gMCApCisgICAgICAgICAgICBjb250aW51ZTsK KworICAgICAgICBzcGluX2xvY2soJmluZm8tPnJlZl9sb2NrKTsKKyAgICAgICAgQVNTRVJUKGlu Zm8tPmNvc19yZWZbY29zXSk7CisgICAgICAgIGluZm8tPmNvc19yZWZbY29zXS0tOworICAgICAg ICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2spOworICAgIH0KKwogICAgIHhmcmVlKGQtPmFy Y2gucHNyX2Nvc19pZHMpOwogICAgIGQtPmFyY2gucHNyX2Nvc19pZHMgPSBOVUxMOwogfQpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYv cHNyLmgKaW5kZXggMGU5NjBiZi4uNTBiODc1NyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9wc3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCkBAIC03NCw4ICs3NCw4 IEBAIGludCBwc3JfZ2V0X2luZm8odW5zaWduZWQgaW50IHNvY2tldCwgZW51bSBjYm1fdHlwZSB0 eXBlLAogICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRhW10sIHVuc2lnbmVkIGludCBhcnJh eV9sZW4pOwogaW50IHBzcl9nZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBz b2NrZXQsCiAgICAgICAgICAgICAgICAgdWludDMyX3QgKnZhbCwgZW51bSBjYm1fdHlwZSB0eXBl KTsKLWludCBwc3Jfc2V0X2wzX2NibShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29j a2V0LAotICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNibSwgZW51bSBjYm1fdHlwZSB0eXBl KTsKK2ludCBwc3Jfc2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0 LAorICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbCwgZW51bSBjYm1fdHlwZSB0eXBlKTsKIAog dm9pZCBwc3JfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCk7CiB2b2lkIHBzcl9kb21haW5f ZnJlZShzdHJ1Y3QgZG9tYWluICpkKTsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==