From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v14 08/23] x86: refactor psr: L3 CAT: set value: implement framework. Date: Sat, 15 Jul 2017 08:31:41 +0800 Message-ID: <1500078716-5928-9-git-send-email-yi.y.sun@linux.intel.com> References: <1500078716-5928-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 1dWBEU-0007Pg-Tv for xen-devel@lists.xenproject.org; Sat, 15 Jul 2017 00:46:55 +0000 In-Reply-To: <1500078716-5928-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 ZWwuY29tPgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0K djE0OgogICAgLSBhZGQgJ2NvbnN0JyBmb3IgcGFyYW1ldGVyICd2YWxbXScgaW4gJ3dyaXRlX3Bz cl9tc3JzJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjEzOgogICAgLSByZXBs YWNlICd0ZXN0X2JpdCcgdG8gJ3Rlc3RfYW5kX3NldF9iaXQnIGluICdwc3JfZ2V0X3ZhbC9wc3Jf c2V0X3ZhbCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAn c2V0X2JpdCcgdXNlZCBpbiAncHNyX3NldF92YWwnIC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gcmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgaW4gJ2dldF9jb3NfbnVtKCkn LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2MTI6CiAgICAtIHJlbW92ZSB0aGUg bWVtZWJlcnMgcG9zaXRpb24gY2hhbmdlcyBpbiAncHNyX3NvY2tldF9pbmZvJy4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdkb21faWRzJyB0byAnZG9tX3Nl dCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNhbGwgJ2JpdG1hcF96 ZXJvJyB0byBjbGVhciBiaXRtYXAuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIGNvbWJpbmUgdHdvIGlmKCktcyBpbiAncHNyX2N0eHRfc3dpdGNoX3RvJyBhbmQgYWRkIGNv bW1lbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSByZWR1 bmRhbnQgY2hlY2sgaW4gJ3Bzcl9nZXRfdmFsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gdXNlICdkb21haW5fbG9jaygpJyB0byBwcm90ZWN0ICdwc3JfY29zX2lkcycg c28gdGhhdCB0aGUgY29kZXMgZG8gbm90CiAgICAgIGRlcGVuZCBvbiAnZG9tY3RsX2xvY2snLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGp1c3QgY29kZXMgdG8gYXZv aWQgY2FzdCBpbiAncHNyX3NldF92YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQogICAgLSBhZGp1c3QgY29kZXMgdG8gYXZvaWQgZHVwbGljYXRpb24gb2YgZXJyb3IgcGF0aHMg aW4gJ3Bzcl9zZXRfdmFsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g Y2xlYXIgdGhlIGRvbWFpbiBiaXQgYW55d2F5IGluICdwc3JfZnJlZV9jb3MnLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSB1c2UgdGhlIGRlZmF1bHQgY29zIGlkIHdoZW4g Z2V0dGluZyBvbGRfY29zIGluICdwc3Jfc2V0X3ZhbCcuCnYxMToKICAgIC0gZGVmaW5lICdkb21f aWRzW10nIGFuZCBpbXBsZW1lbnQgcmVsYXRlZCBmbG93cy4KICAgIC0gcmVzdG9yZSBkb21haW4g Y29zIGlkIHRvIDAgaW4gJ3Bzcl9nZXRfdmFsJy4KICAgIC0gcmVuYW1lICd3cml0ZV9wc3JfbXNy JyB0byAnd3JpdGVfcHNyX21zcnMnIGFuZCBjaGFuZ2UgaXRzIHBhcmFtZXRlcnMgdG8KICAgICAg aGFuZGxlIHZhbHVlIGFycmF5IHRoZSBmZWF0dXJlJ3MgYWxsIE1TUnMuCiAgICAtIGZpeCBjb2Rp bmcgc3R5bGUgaXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGRv IG5vdCBuZWVkIGNoZWNrICdjb3MnIGluIEFTU0VSVC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gcmVuYW1lICdpbnNlcnRfdmFsX3RvX2FycmF5JyB0byAnaW5zZXJ0X3Zh bF9pbnRvX2FycmF5Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVt b3ZlICdyZWZfbG9jaycgZnJvbSBwYXJhbWV0ZXIgbGlzdCBpbiAnZmluZF9jb3MnIGFuZCAncGlj a19hdmFpbF9jb3MnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1v dmUgQVNTRVJUIGNoZWNrIHRvICdyZWZfbG9jaycgaW4gJ2ZpbmRfY29zJyBhbmQgJ3BpY2tfYXZh aWxfY29zJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gZml4IGEgYnVn IGZvciBjaGVja2luZyAnZmVhdF90eXBlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gbW92ZSAnZnJlZV9hcnJheScgbGFiZWwuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIG1vZGlmeSBjb21tZW50cyBhbmQgY29tbWl0IG1lc3NhZ2UuCnYxMDoK ICAgIC0gcmVzdG9yZSBkb21haW4gY29zIGlkIHRvIDAgd2hlbiBzb2NrZXQgaXMgb2ZmbGluZS4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hlY2sgJ3Bzcl9jYXRfb3Au ZGF0YScgdG8gbWFrZSBzdXJlIG9ubHkgbG93ZXIgMzIgYml0cyBhcmUgdmFsaWQuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2FyeSBmaXhlZCB3 aWR0aCB0eXBlIG9mIHBhcmFtZXRlcnMgYW5kIHZhcmlhYmxlcy4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdpbnNlcnRfbmV3X3ZhbF90b19hcnJheScgdG8g J2luc2VydF92YWxfdG9fYXJyYXknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSBpbnB1dCAncmVmX2xvY2snIHBvaW50ZXIgaW50byBmdW5jdGlvbnMgdG8gY2hlY2sgaWYg aXQgaGFzIGJlZW4gbG9ja2VkLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAg LSBhZGQgY29tbWVudCB0byBkZWNsYXJlIHRoZSBzZXQgcHJvY2VzcyBpcyBwcm90ZWN0ZWQgYnkg J2RvbWN0bF9sb2NrJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hl Y2sgJ2ZlYXRfdHlwZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJl bW92ZSAnZmVhdF9tYXNrJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g cmVtb3ZlIHVubmVjZXNzYXJ5IGNyaXRlcmlhIG9mIEFTU0VSVC4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGZsb3cgb2YgJ3Bzcl9zZXRfdmFsJyB0byBhdm9p ZCAnZ290bycgZm9yIHN1Y2Nlc3NmdWwgY2FzZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIHVzZSBBU1NFUlQgdG8gY2hlY2sgJ3NvY2tldF9pbmZvJyBpbiAncHNyX2Zy ZWVfY29zJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIHVu bmVjZXNzYXJ5IGNvbW1lbnQgaW4gJ3Bzcl9mcmVlX2NvcycuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCnY5OgogICAgLSB1c2UgZ290byBzdHlsZSBlcnJvciBoYW5kbGluZyBpbiAn cHNyX3NldF92YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIHVzZSBBU1NF UlQgZm9yIGNoZWNraW5nIG9sZF9jb3MuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSBhbmQg SmFuIEJldWxpY2gpCiAgICAtIGZpeCBjb2Rpbmcgc3R5bGUgaXNzdWUuCiAgICAgIChzdWdnZXN0 ZWQgYnkgV2VpIExpdSkKICAgIC0gcmVuYW1lICdhc3NlbWJsZV92YWxfYXJyYXknIHRvICdjb21i aW5lX3ZhbF9hcnJheScgaW4gcGVydmlvdXMgcGF0Y2guCiAgICAgIChzdWdnZXN0ZWQgYnkgV2Vp IExpdSkKICAgIC0gdXNlICdzcGluX2lzX2xvY2tlZCcgdG8gY2hlY2sgcmVmX2xvY2suCiAgICAg IChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAgLSBhZGQgYW4gaW5wdXQgcGFyYW1ldGVyICdh cnJheV9sZW4nIGZvciAnd3JpdGVfcHNyX21zcicuCiAgICAtIGNoZWNrICdzb2NrZXRfaW5mbycg YW5kICdwc3JfY29zX2lkcycgaW4gdGhpcyBwYXRjaC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gbW9kaWZ5IHBhdGNoIHRpdGxlIHRvIGluZGljYXRlICdMMyBDQVQnLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBmaXggY29tbWl0IG1lc3NhZ2Ug d29yZHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAnYXNz ZW1ibGVfdmFsX2FycmF5JyB0byAnZ2F0aGVyX3ZhbF9hcnJheScuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAnc2V0X25ld192YWxfdG9fYXJyYXknIHRvICdp bnNlcnRfbmV3X3ZhbF90b19hcnJheScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp CiAgICAtIGNoYW5nZSBwYXJhbWV0ZXIgJ20nIG9mICdpbnNlcnRfbmV3X3ZhbF90b19hcnJheScg dG8gJ25ld192YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFu Z2UgJ3dyaXRlX3Bzcl9tc3InIHRvICd3cml0ZV9wc3JfbXNycycuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIGNvcnJlY3QgY29tbWVudHMuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2FyeSBjb21tZW50cy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGNvbmRpdGlvbnMgYWZ0ZXIg J2ZpbmRfY29zJyB0byBzYXZlIGEgbGV2ZWwgb2YgaW5kZW50YXRpb24uCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCAnQVNTRVJUKCFvbGRfY29zIHx8IHJlZltvbGRf Y29zXSknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3ZlIEFTU0VS VCgpIGNoZWNrIGludG8gbG9ja2VkIHJlZ2lvbi4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gcmVwbGFjZSBwYXJhbWV0ZXIgJyp2YWwnIHRvICd2YWxbXScgaW4gc29tZSBm dW5jdGlvbnMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAn d3JpdGVfcHNyX21zcicgcGFyYW1ldGVycyB0byBwcmVwYXJlIHRvIG9ubHkgc2V0IG9uZSBuZXcg dmFsdWUKICAgICAgZm9yIG9uZSBmZWF0dXJlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSBjaGFuZ2VzIGFib3V0ICd1aW50NjRfdCcgdG8gJ3VpbnQzMl90Jy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRkIGV4cGxhbmF0aW9uIGFib3V0IGNv bnRleHQgc3dpdGNoLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2NToKICAgIC0g bW9kaWZ5IGNvbW1pdCBtZXNzYWdlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSByZXR1cm4gYW4gZXJyb3IgZm9yIGFsbCBoZWxwZXIgZnVuY3Rpb25zIGluIHNldCBmbG93 LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgdW5uZWNlc3Nh cnkgY2FzdC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gZGl2aWRlICdn ZXRfb2xkX3NldF9uZXcnIHRvIHR3byBmdW5jdGlvbnMsICdhc3NlbWJsZV92YWxfYXJyYXknIGFu ZAogICAgICAnc2V0X25ld192YWxfdG9fYXJyYXknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSBtb2RpZnkgY29tbWVudHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIGFkanVzdCBjb2RlIGZvcm1hdC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gY2hhbmdlICdhbGxvY19uZXdfY29zJyB0byAncGlja19hdmFpbF9jb3Mn IHRvIG1ha2UgbmFtZSBhY2N1cmF0ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gY2hlY2sgZmVhdHVyZSB0eXBlIHdoZW4gZW50ZXJpbmcgJ3Bzcl9zZXRfdmFsJy4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gdXNlIEFTU0VSVCB0byBjaGVjayBy ZWYuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbmFtZSAnZGF0W10n IHRvICdkYXRhW10nLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2NDoKICAgIC0g Y3JlYXRlIHRoaXMgcGF0Y2ggdG8gbWFrZSBjb2RlcyBlYXNpZXIgdG8gdW5kZXJzdGFuZC4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKLS0tCiB4ZW4vYXJjaC94ODYvZG9tY3RsLmMg ICAgIHwgIDE4ICsrLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyAgICAgICAgfCAyNDAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogeGVuL2luY2x1ZGUvYXNtLXg4 Ni9wc3IuaCB8ICAgNCArLQogMyBmaWxlcyBjaGFuZ2VkLCAyNDIgaW5zZXJ0aW9ucygrKSwgMjAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2Fy Y2gveDg2L2RvbWN0bC5jCmluZGV4IGFiZmE2OGEuLjZhYTNkMDYgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9kb21jdGwuYworKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKQEAgLTE0MjIsMjEg KzE0MjIsMjEgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKICAgICAgICAgICAgIHVpbnQzMl90IHZh bDMyOwogCiAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DQk06Ci0g ICAgICAgICAgICByZXQgPSBwc3Jfc2V0X2wzX2NibShkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50 YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2Nh dF9vcC5kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX0NCTV9UWVBF X0wzKTsKKyAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0 X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3Jf Y2F0X29wLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVf TDMpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9D QVRfT1BfU0VUX0wzX0NPREU6Ci0gICAgICAgICAgICByZXQgPSBwc3Jfc2V0X2wzX2NibShkLCBk b21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUFNSX0NCTV9UWVBFX0wzX0NPREUpOworICAgICAgICAgICAgcmV0ID0gcHNyX3Nl dF92YWwoZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0YSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MM19DT0RFKTsKICAgICAgICAgICAgIGJyZWFrOwog CiAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19EQVRBOgotICAgICAg ICAgICAgcmV0ID0gcHNyX3NldF9sM19jYm0oZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3Au ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MM19E QVRBKTsKKyAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0 X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3Jf Y2F0X29wLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVf TDNfREFUQSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFhFTl9ET01DVExf UFNSX0NBVF9PUF9HRVRfTDNfQ0JNOgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Bzci5jIGIv eGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IDBmZTYzZGQuLmYxYjU4MzcgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94ODYvcHNyLmMKQEAgLTEyMyw2ICsxMjMs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgewogICogcmVmX2xvY2sgIC0gQSBs b2NrIHRvIHByb3RlY3QgY29zX3JlZi4KICAqIGNvc19yZWYgICAtIEEgcmVmZXJlbmNlIGNvdW50 IGFycmF5IHRvIHJlY29yZCBob3cgbWFueSBkb21haW5zIGFyZSB1c2luZyB0aGUKICAqICAgICAg ICAgICAgIENPUyBJRC4gRXZlcnkgZW50cnkgb2YgY29zX3JlZiBjb3JyZXNwb25kcyB0byBvbmUg Q09TIElELgorICogZG9tX3NldCAgIC0gQSBiaXRtYXAgdG8gaW5kaWNhdGUgd2hpY2ggZG9tYWlu J3MgY29zIGlkIGhhcyBiZWVuIHNldC4KICAqLwogc3RydWN0IHBzcl9zb2NrZXRfaW5mbyB7CiAg ICAgYm9vbCBmZWF0X2luaXQ7CkBAIC0xMzAsNiArMTMxLDggQEAgc3RydWN0IHBzcl9zb2NrZXRf aW5mbyB7CiAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdHVyZXNbRkVBVF9UWVBFX05VTV07CiAg ICAgc3BpbmxvY2tfdCByZWZfbG9jazsKICAgICB1bnNpZ25lZCBpbnQgY29zX3JlZltNQVhfQ09T X1JFR19DTlRdOworICAgIC8qIEV2ZXJ5IGJpdCBjb3JyZXNwb25kcyB0byBhIGRvbWFpbi4gSW5k ZXggaXMgZG9tYWluX2lkLiAqLworICAgIERFQ0xBUkVfQklUTUFQKGRvbV9zZXQsIERPTUlEX0lE TEUgKyAxKTsKIH07CiAKIHN0cnVjdCBwc3JfYXNzb2MgewpAQCAtMTg3LDYgKzE5MCw4IEBAIHN0 YXRpYyB2b2lkIGZyZWVfc29ja2V0X3Jlc291cmNlcyh1bnNpZ25lZCBpbnQgc29ja2V0KQogICAg IGluZm8tPmZlYXRfaW5pdCA9IGZhbHNlOwogCiAgICAgbWVtc2V0KGluZm8tPmNvc19yZWYsIDAs IE1BWF9DT1NfUkVHX0NOVCAqIHNpemVvZih1bnNpZ25lZCBpbnQpKTsKKworICAgIGJpdG1hcF96 ZXJvKGluZm8tPmRvbV9zZXQsIERPTUlEX0lETEUgKyAxKTsKIH0KIAogc3RhdGljIGVudW0gcHNy X2ZlYXRfdHlwZSBwc3JfY2JtX3R5cGVfdG9fZmVhdF90eXBlKGVudW0gY2JtX3R5cGUgdHlwZSkK QEAgLTQ2MywxMyArNDY4LDI1IEBAIHZvaWQgcHNyX2N0eHRfc3dpdGNoX3RvKHN0cnVjdCBkb21h aW4gKmQpCiAgICAgaWYgKCBwc3JfY210X2VuYWJsZWQoKSApCiAgICAgICAgIHBzcl9hc3NvY19y bWlkKCZyZWcsIGQtPmFyY2gucHNyX3JtaWQpOwogCi0gICAgLyogSWYgZG9tYWluJ3MgJ3Bzcl9j b3NfaWRzJyBpcyBOVUxMLCB3ZSBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgaXQuICovCisgICAgLyoK KyAgICAgKiBJZiB0aGUgZG9tYWluIGlzIG5vdCBzZXQgaW4gJ2RvbV9zZXQnIGJpdG1hcCwgdGhh dCBtZWFucyB0aGUgZG9tYWluJ3MKKyAgICAgKiBjb3MgaWQgaXMgbm90IHZhbGlkLiBTbywgd2Ug aGF2ZSB0byB1c2UgZGVmYXVsdCB2YWx1ZSAoMCkgdG8gc2V0IEFTU09DCisgICAgICogcmVnaXN0 ZXIuIEZ1cnRoZXJtb3JlLCBpZiBkb21haW4ncyAncHNyX2Nvc19pZHMnIGlzIE5VTEwsIHdlIG5l ZWQKKyAgICAgKiBkZWZhdWx0IHZhbHVlIGZvciBpdCB0b28gKGZvciBjYXNlIHRoYXQgdGhlIGRv bWFpbidzIHBzcl9jb3NfaWRzIGlzIG5vdAorICAgICAqIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQp LgorICAgICAqLwogICAgIGlmICggcHNyYS0+Y29zX21hc2sgKQotICAgICAgICByZWcgPSBwc3Jf YXNzb2NfY29zKHJlZywKLSAgICAgICAgICAgICAgICAgIChkLT5hcmNoLnBzcl9jb3NfaWRzID8K LSAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnBzcl9jb3NfaWRzW2NwdV90b19zb2NrZXQoc21w X3Byb2Nlc3Nvcl9pZCgpKV0gOgotICAgICAgICAgICAgICAgICAgIDApLAotICAgICAgICAgICAg ICAgICAgcHNyYS0+Y29zX21hc2spOworICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvY2tl dCA9IGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKTsKKyAgICAgICAgc3RydWN0IHBz cl9zb2NrZXRfaW5mbyAqaW5mbyA9IHNvY2tldF9pbmZvICsgc29ja2V0OworICAgICAgICB1bnNp Z25lZCBpbnQgY29zID0gMDsKKworICAgICAgICBpZiAoIGxpa2VseSh0ZXN0X2JpdChkLT5kb21h aW5faWQsIGluZm8tPmRvbV9zZXQpKSAmJgorICAgICAgICAgICAgIGQtPmFyY2gucHNyX2Nvc19p ZHMgKQorICAgICAgICAgICAgY29zID0gZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdOworCisg ICAgICAgIHJlZyA9IHBzcl9hc3NvY19jb3MocmVnLCBjb3MsIHBzcmEtPmNvc19tYXNrKTsKKyAg ICB9CiAKICAgICBpZiAoIHJlZyAhPSBwc3JhLT52YWwgKQogICAgIHsKQEAgLTU1MSw3ICs1Njgs MTMgQEAgaW50IHBzcl9nZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2Nr ZXQsCiAgICAgICAgIHJldHVybiAtRU5PRU5UOwogICAgIH0KIAorICAgIGRvbWFpbl9sb2NrKGQp OworICAgIGlmICggIXRlc3RfYW5kX3NldF9iaXQoZC0+ZG9tYWluX2lkLCBzb2NrZXRfaW5mb1tz b2NrZXRdLmRvbV9zZXQpICkKKyAgICAgICAgZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdID0g MDsKKwogICAgIGNvcyA9IGQtPmFyY2gucHNyX2Nvc19pZHNbc29ja2V0XTsKKyAgICBkb21haW5f dW5sb2NrKGQpOworCiAgICAgLyoKICAgICAgKiBJZiBpbnB1dCBjb3MgZXhjZWVkcyBjdXJyZW50 IGZlYXR1cmUncyBjb3NfbWF4LCB3ZSBzaG91bGQgcmV0dXJuIGl0cwogICAgICAqIGRlZmF1bHQg dmFsdWUgd2hpY2ggaXMgc3RvcmVkIGluIGNvcyAwLiBUaGlzIGNhc2Ugb25seSBoYXBwZW5zCkBA IC01NzUsMTUgKzU5OCwyMTQgQEAgaW50IHBzcl9nZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGludCBzb2NrZXQsCiAgICAgcmV0dXJuIC1FSU5WQUw7CiB9CiAKLWludCBwc3Jfc2V0 X2wzX2NibShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0LAotICAgICAgICAg ICAgICAgICAgIHVpbnQ2NF90IGNibSwgZW51bSBjYm1fdHlwZSB0eXBlKQorLyogU2V0IHZhbHVl IGZ1bmN0aW9ucyAqLworc3RhdGljIHVuc2lnbmVkIGludCBnZXRfY29zX251bSh2b2lkKQogewog ICAgIHJldHVybiAwOwogfQogCi0vKiBDYWxsZWQgd2l0aCBkb21haW4gbG9jayBoZWxkLCBubyBl eHRyYSBsb2NrIG5lZWRlZCBmb3IgJ3Bzcl9jb3NfaWRzJyAqLworc3RhdGljIGludCBnYXRoZXJf dmFsX2FycmF5KHVpbnQzMl90IHZhbFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBhcnJheV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgb2xkX2NvcykKK3sKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworc3Rh dGljIGludCBpbnNlcnRfdmFsX2ludG9fYXJyYXkodWludDMyX3QgdmFsW10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5m bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBm ZWF0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGNibV90eXBl IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBuZXdfdmFs KQoreworICAgIHJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IGZpbmRfY29zKGNvbnN0 IHVpbnQzMl90IHZhbFtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAg ICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlLAorICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvKQoreworICAgIHJldHVybiAtRU5PRU5U OworfQorCitzdGF0aWMgaW50IHBpY2tfYXZhaWxfY29zKGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0 X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHZh bFtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgb2xkX2NvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3Jf ZmVhdF90eXBlIGZlYXRfdHlwZSkKK3sKKyAgICByZXR1cm4gLUVOT0VOVDsKK30KKworc3RhdGlj IGludCB3cml0ZV9wc3JfbXNycyh1bnNpZ25lZCBpbnQgc29ja2V0LCB1bnNpZ25lZCBpbnQgY29z LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCB2YWxbXSwgdW5zaWdu ZWQgaW50IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVh dF90eXBlIGZlYXRfdHlwZSkKK3sKKyAgICByZXR1cm4gLUVOT0VOVDsKK30KKworaW50IHBzcl9z ZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCisgICAgICAgICAg ICAgICAgdWludDY0X3QgbmV3X3ZhbCwgZW51bSBjYm1fdHlwZSB0eXBlKQoreworICAgIHVuc2ln bmVkIGludCBvbGRfY29zLCBhcnJheV9sZW47CisgICAgaW50IGNvcywgcmV0OworICAgIHVuc2ln bmVkIGludCAqcmVmOworICAgIHVpbnQzMl90ICp2YWxfYXJyYXksIHZhbDsKKyAgICBzdHJ1Y3Qg cHNyX3NvY2tldF9pbmZvICppbmZvID0gZ2V0X3NvY2tldF9pbmZvKHNvY2tldCk7CisgICAgZW51 bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZTsKKworICAgIGlmICggSVNfRVJSKGluZm8pICkKKyAg ICAgICAgcmV0dXJuIFBUUl9FUlIoaW5mbyk7CisKKyAgICB2YWwgPSBuZXdfdmFsOworICAgIGlm ICggbmV3X3ZhbCAhPSB2YWwgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGZlYXRf dHlwZSA9IHBzcl9jYm1fdHlwZV90b19mZWF0X3R5cGUodHlwZSk7CisgICAgaWYgKCBmZWF0X3R5 cGUgPj0gQVJSQVlfU0laRShpbmZvLT5mZWF0dXJlcykgfHwKKyAgICAgICAgICFpbmZvLT5mZWF0 dXJlc1tmZWF0X3R5cGVdICkKKyAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisKKyAgICAvKgorICAg ICAqIFN0ZXAgMDoKKyAgICAgKiBvbGRfY29zIG1lYW5zIHRoZSBDT1MgSUQgY3VycmVudCBkb21h aW4gaXMgdXNpbmcuIEJ5IGRlZmF1bHQsIGl0IGlzIDAuCisgICAgICoKKyAgICAgKiBGb3IgZXZl cnkgQ09TIElELCB0aGVyZSBpcyBhIHJlZmVyZW5jZSBjb3VudCB0byByZWNvcmQgaG93IG1hbnkg ZG9tYWlucworICAgICAqIGFyZSB1c2luZyB0aGUgQ09TIHJlZ2lzdGVyIGNvcnJlc3BvbmRpbmcg dG8gdGhpcyBDT1MgSUQuCisgICAgICogLSBJZiByZWZbb2xkX2Nvc10gaXMgMCwgdGhhdCBtZWFu cyB0aGlzIENPUyBpcyBub3QgdXNlZCBieSBhbnkgZG9tYWluLgorICAgICAqIC0gSWYgcmVmW29s ZF9jb3NdIGlzIDEsIHRoYXQgbWVhbnMgdGhpcyBDT1MgaXMgb25seSB1c2VkIGJ5IGN1cnJlbnQK KyAgICAgKiAgIGRvbWFpbi4KKyAgICAgKiAtIElmIHJlZltvbGRfY29zXSBpcyBtb3JlIHRoYW4g MSwgdGhhdCBtZWFuIG11bHRpcGxlIGRvbWFpbnMgYXJlIHVzaW5nCisgICAgICogICB0aGlzIENP Uy4KKyAgICAgKi8KKyAgICBkb21haW5fbG9jayhkKTsKKyAgICBpZiAoICF0ZXN0X2FuZF9zZXRf Yml0KGQtPmRvbWFpbl9pZCwgaW5mby0+ZG9tX3NldCkgKQorICAgICAgICBkLT5hcmNoLnBzcl9j b3NfaWRzW3NvY2tldF0gPSAwOworCisgICAgb2xkX2NvcyA9IGQtPmFyY2gucHNyX2Nvc19pZHNb c29ja2V0XTsKKyAgICBkb21haW5fdW5sb2NrKGQpOworCisgICAgQVNTRVJUKG9sZF9jb3MgPCBN QVhfQ09TX1JFR19DTlQpOworCisgICAgcmVmID0gaW5mby0+Y29zX3JlZjsKKworICAgIC8qCisg ICAgICogU3RlcCAxOgorICAgICAqIEdhdGhlciBhIHZhbHVlIGFycmF5IHRvIHN0b3JlIGFsbCBm ZWF0dXJlcyBjb3NfcmVnX3ZhbFtvbGRfY29zXS4KKyAgICAgKiBBbmQsIHNldCB0aGUgaW5wdXQg bmV3IHZhbCBpbnRvIGFycmF5IGFjY29yZGluZyB0byB0aGUgZmVhdHVyZSdzCisgICAgICogcG9z aXRpb24gaW4gYXJyYXkuCisgICAgICovCisgICAgYXJyYXlfbGVuID0gZ2V0X2Nvc19udW0oKTsK KyAgICB2YWxfYXJyYXkgPSB4emFsbG9jX2FycmF5KHVpbnQzMl90LCBhcnJheV9sZW4pOworICAg IGlmICggIXZhbF9hcnJheSApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgaWYgKCAo cmV0ID0gZ2F0aGVyX3ZhbF9hcnJheSh2YWxfYXJyYXksIGFycmF5X2xlbiwgaW5mbywgb2xkX2Nv cykpICE9IDAgKQorICAgICAgICBnb3RvIGZyZWVfYXJyYXk7CisKKyAgICBpZiAoIChyZXQgPSBp bnNlcnRfdmFsX2ludG9fYXJyYXkodmFsX2FycmF5LCBhcnJheV9sZW4sIGluZm8sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXRfdHlwZSwgdHlwZSwgdmFsKSkgIT0g MCApCisgICAgICAgIGdvdG8gZnJlZV9hcnJheTsKKworICAgIHNwaW5fbG9jaygmaW5mby0+cmVm X2xvY2spOworCisgICAgLyoKKyAgICAgKiBTdGVwIDI6CisgICAgICogVHJ5IHRvIGZpbmQgaWYg dGhlcmUgaXMgYWxyZWFkeSBhIENPUyBJRCBvbiB3aGljaCBhbGwgZmVhdHVyZXMnIHZhbHVlcwor ICAgICAqIGFyZSBzYW1lIGFzIHRoZSBhcnJheS4gVGhlbiwgd2UgY2FuIHJldXNlIHRoaXMgQ09T IElELgorICAgICAqLworICAgIGNvcyA9IGZpbmRfY29zKHZhbF9hcnJheSwgYXJyYXlfbGVuLCBm ZWF0X3R5cGUsIGluZm8pOworICAgIGlmICggY29zID09IG9sZF9jb3MgKQorICAgIHsKKyAgICAg ICAgcmV0ID0gMDsKKyAgICAgICAgZ290byB1bmxvY2tfZnJlZV9hcnJheTsKKyAgICB9CisKKyAg ICAvKgorICAgICAqIFN0ZXAgMzoKKyAgICAgKiBJZiBmYWlsIHRvIGZpbmQsIHdlIG5lZWQgcGlj ayBhbiBhdmFpbGFibGUgQ09TIElELgorICAgICAqIEluIGZhY3QsIG9ubHkgQ09TIElEIHdoaWNo IHJlZiBpcyAxIG9yIDAgY2FuIGJlIHBpY2tlZCBmb3IgY3VycmVudAorICAgICAqIGRvbWFpbi4g SWYgb2xkX2NvcyBpcyBub3QgMCBhbmQgaXRzIHJlZj09MSwgdGhhdCBtZWFucyBvbmx5IGN1cnJl bnQKKyAgICAgKiBkb21haW4gaXMgdXNpbmcgdGhpcyBvbGRfY29zIElELiBTbywgdGhpcyBvbGRf Y29zIElEIGNlcnRhaW5seSBjYW4KKyAgICAgKiBiZSByZXVzZWQgYnkgY3VycmVudCBkb21haW4u IFJlZj09MCBtZWFucyB0aGVyZSBpcyBubyBhbnkgZG9tYWluCisgICAgICogdXNpbmcgdGhpcyBD T1MgSUQuIFNvIGl0IGNhbiBiZSB1c2VkIGZvciBjdXJyZW50IGRvbWFpbiB0b28uCisgICAgICov CisgICAgaWYgKCBjb3MgPCAwICkKKyAgICB7CisgICAgICAgIGNvcyA9IHBpY2tfYXZhaWxfY29z KGluZm8sIHZhbF9hcnJheSwgYXJyYXlfbGVuLCBvbGRfY29zLCBmZWF0X3R5cGUpOworICAgICAg ICBpZiAoIGNvcyA8IDAgKQorICAgICAgICB7CisgICAgICAgICAgICByZXQgPSBjb3M7CisgICAg ICAgICAgICBnb3RvIHVubG9ja19mcmVlX2FycmF5OworICAgICAgICB9CisKKyAgICAgICAgLyoK KyAgICAgICAgICogU3RlcCA0OgorICAgICAgICAgKiBXcml0ZSB0aGUgZmVhdHVyZSdzIE1TUnMg YWNjb3JkaW5nIHRvIHRoZSBDT1MgSUQuCisgICAgICAgICAqLworICAgICAgICByZXQgPSB3cml0 ZV9wc3JfbXNycyhzb2NrZXQsIGNvcywgdmFsX2FycmF5LCBhcnJheV9sZW4sIGZlYXRfdHlwZSk7 CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIGdvdG8gdW5sb2NrX2ZyZWVfYXJyYXk7 CisgICAgfQorCisgICAgLyoKKyAgICAgKiBTdGVwIDU6CisgICAgICogRmluZCB0aGUgQ09TIElE IChmaW5kX2NvcyByZXN1bHQgaXMgJz49IDAnIG9yIGFuIGF2YWlsYWJsZSBDT1MgSUQgaXMKKyAg ICAgKiBwaWNrZWQsIHRoZW4gdXBkYXRlIHJlZiBhY2NvcmRpbmcgdG8gQ09TIElELgorICAgICAq LworICAgIHJlZltjb3NdKys7CisgICAgQVNTRVJUKCFjb3MgfHwgcmVmW2Nvc10pOworICAgIEFT U0VSVCghb2xkX2NvcyB8fCByZWZbb2xkX2Nvc10pOworICAgIHJlZltvbGRfY29zXS0tOworICAg IHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7CisKKyAgICAvKgorICAgICAqIFN0ZXAgNjoK KyAgICAgKiBTYXZlIHRoZSBDT1MgSUQgaW50byBjdXJyZW50IGRvbWFpbidzIHBzcl9jb3NfaWRz W10gc28gdGhhdCB3ZSBjYW4ga25vdworICAgICAqIHdoaWNoIENPUyB0aGUgZG9tYWluIGlzIHVz aW5nIG9uIHRoZSBzb2NrZXQuIE9uZSBkb21haW4gY2FuIG9ubHkgdXNlCisgICAgICogb25lIENP UyBJRCBhdCBzYW1lIHRpbWUgb24gZWFjaCBzb2NrZXQuCisgICAgICovCisgICAgZG9tYWluX2xv Y2soZCk7CisgICAgZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdID0gY29zOworICAgIGRvbWFp bl91bmxvY2soZCk7CisKKyAgICBnb3RvIGZyZWVfYXJyYXk7CisKKyB1bmxvY2tfZnJlZV9hcnJh eToKKyAgICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2spOworCisgZnJlZV9hcnJheToKKyAg ICB4ZnJlZSh2YWxfYXJyYXkpOworICAgIHJldHVybiByZXQ7Cit9CisKIHN0YXRpYyB2b2lkIHBz cl9mcmVlX2NvcyhzdHJ1Y3QgZG9tYWluICpkKQogeworICAgIHVuc2lnbmVkIGludCBzb2NrZXQs IGNvczsKKworICAgIEFTU0VSVChzb2NrZXRfaW5mbyk7CisKKyAgICBpZiAoICFkLT5hcmNoLnBz cl9jb3NfaWRzICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogRG9tYWluIGlzIGRlc3Ryb3ll ZCBzbyBpdHMgY29zX3JlZiBzaG91bGQgYmUgZGVjcmVhc2VkLiAqLworICAgIGZvciAoIHNvY2tl dCA9IDA7IHNvY2tldCA8IG5yX3NvY2tldHM7IHNvY2tldCsrICkKKyAgICB7CisgICAgICAgIHN0 cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBzb2NrZXRfaW5mbyArIHNvY2tldDsKKworICAg ICAgICBjbGVhcl9iaXQoZC0+ZG9tYWluX2lkLCBpbmZvLT5kb21fc2V0KTsKKworICAgICAgICAv KiBjb3MgMCBpcyBkZWZhdWx0IG9uZSB3aGljaCBkb2VzIG5vdCBuZWVkIGJlIGhhbmRsZWQuICov CisgICAgICAgIGNvcyA9IGQtPmFyY2gucHNyX2Nvc19pZHNbc29ja2V0XTsKKyAgICAgICAgaWYg KCBjb3MgPT0gMCApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzcGluX2xvY2so JmluZm8tPnJlZl9sb2NrKTsKKyAgICAgICAgQVNTRVJUKGluZm8tPmNvc19yZWZbY29zXSk7Cisg ICAgICAgIGluZm8tPmNvc19yZWZbY29zXS0tOworICAgICAgICBzcGluX3VubG9jaygmaW5mby0+ cmVmX2xvY2spOworICAgIH0KKwogICAgIHhmcmVlKGQtPmFyY2gucHNyX2Nvc19pZHMpOwogICAg IGQtPmFyY2gucHNyX2Nvc19pZHMgPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKaW5kZXggMGU5NjBiZi4u NTBiODc1NyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAorKysgYi94ZW4v aW5jbHVkZS9hc20teDg2L3Bzci5oCkBAIC03NCw4ICs3NCw4IEBAIGludCBwc3JfZ2V0X2luZm8o dW5zaWduZWQgaW50IHNvY2tldCwgZW51bSBjYm1fdHlwZSB0eXBlLAogICAgICAgICAgICAgICAg ICB1aW50MzJfdCBkYXRhW10sIHVuc2lnbmVkIGludCBhcnJheV9sZW4pOwogaW50IHBzcl9nZXRf dmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCiAgICAgICAgICAgICAg ICAgdWludDMyX3QgKnZhbCwgZW51bSBjYm1fdHlwZSB0eXBlKTsKLWludCBwc3Jfc2V0X2wzX2Ni bShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0LAotICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IGNibSwgZW51bSBjYm1fdHlwZSB0eXBlKTsKK2ludCBwc3Jfc2V0X3ZhbChz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0LAorICAgICAgICAgICAgICAgIHVp bnQ2NF90IHZhbCwgZW51bSBjYm1fdHlwZSB0eXBlKTsKIAogdm9pZCBwc3JfZG9tYWluX2luaXQo c3RydWN0IGRvbWFpbiAqZCk7CiB2b2lkIHBzcl9kb21haW5fZnJlZShzdHJ1Y3QgZG9tYWluICpk KTsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==