From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v15.2 08/23] x86: refactor psr: L3 CAT: set value: implement framework. Date: Fri, 4 Aug 2017 11:10:50 +0800 Message-ID: <1501816250-97614-1-git-send-email-yi.y.sun@linux.intel.com> References: <1501577334-7431-9-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 1ddTFr-0005mq-Jv for xen-devel@lists.xenproject.org; Fri, 04 Aug 2017 03:26:27 +0000 In-Reply-To: <1501577334-7431-9-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: andrew.cooper3@citrix.com, boris.ostrovsky@oracle.com, Yi Sun , jbeulich@suse.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 djE1OgogICAgLSByZW1vdmUgJ0FTU0VSVCcgaW4gJ3Bzcl9mcmVlX2NvcycgYmVjYXVzZSBzb2Nr ZXRfaW5mbyBtYXkgYmUgbnVsbCBvbgogICAgICBtYWNoaW5lcyB3aGljaCBkbyBub3Qgc3VwcG9y dCBQU1IgZmVhdHVyZXMuIFVzZSAncHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCcKICAgICAgdG8gY2hl Y2sgaWYgc29ja2V0X2luZm8gaXMgdmFsaWQuCnYxNDoKICAgIC0gYWRkICdjb25zdCcgZm9yIHBh cmFtZXRlciAndmFsW10nIGluICd3cml0ZV9wc3JfbXNycycuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCnYxMzoKICAgIC0gcmVwbGFjZSAndGVzdF9iaXQnIHRvICd0ZXN0X2FuZF9z ZXRfYml0JyBpbiAncHNyX2dldF92YWwvcHNyX3NldF92YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ3NldF9iaXQnIHVzZWQgaW4gJ3Bzcl9zZXRfdmFs JyAuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bnVzZWQg cGFyYW1ldGVyIGluICdnZXRfY29zX251bSgpJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKdjEyOgogICAgLSByZW1vdmUgdGhlIG1lbWViZXJzIHBvc2l0aW9uIGNoYW5nZXMgaW4g J3Bzcl9zb2NrZXRfaW5mbycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IHJlbmFtZSAnZG9tX2lkcycgdG8gJ2RvbV9zZXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSBjYWxsICdiaXRtYXBfemVybycgdG8gY2xlYXIgYml0bWFwLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjb21iaW5lIHR3byBpZigpLXMgaW4gJ3Bz cl9jdHh0X3N3aXRjaF90bycgYW5kIGFkZCBjb21tZW50LgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQogICAgLSByZW1vdmUgcmVkdW5kYW50IGNoZWNrIGluICdwc3JfZ2V0X3ZhbCcu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHVzZSAnZG9tYWluX2xvY2so KScgdG8gcHJvdGVjdCAncHNyX2Nvc19pZHMnIHNvIHRoYXQgdGhlIGNvZGVzIGRvIG5vdAogICAg ICBkZXBlbmQgb24gJ2RvbWN0bF9sb2NrJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gYWRqdXN0IGNvZGVzIHRvIGF2b2lkIGNhc3QgaW4gJ3Bzcl9zZXRfdmFsJy4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGNvZGVzIHRvIGF2b2lk IGR1cGxpY2F0aW9uIG9mIGVycm9yIHBhdGhzIGluICdwc3Jfc2V0X3ZhbCcuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNsZWFyIHRoZSBkb21haW4gYml0IGFueXdheSBp biAncHNyX2ZyZWVfY29zJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g dXNlIHRoZSBkZWZhdWx0IGNvcyBpZCB3aGVuIGdldHRpbmcgb2xkX2NvcyBpbiAncHNyX3NldF92 YWwnLgp2MTE6CiAgICAtIGRlZmluZSAnZG9tX2lkc1tdJyBhbmQgaW1wbGVtZW50IHJlbGF0ZWQg Zmxvd3MuCiAgICAtIHJlc3RvcmUgZG9tYWluIGNvcyBpZCB0byAwIGluICdwc3JfZ2V0X3ZhbCcu CiAgICAtIHJlbmFtZSAnd3JpdGVfcHNyX21zcicgdG8gJ3dyaXRlX3Bzcl9tc3JzJyBhbmQgY2hh bmdlIGl0cyBwYXJhbWV0ZXJzIHRvCiAgICAgIGhhbmRsZSB2YWx1ZSBhcnJheSB0aGUgZmVhdHVy ZSdzIGFsbCBNU1JzLgogICAgLSBmaXggY29kaW5nIHN0eWxlIGlzc3VlLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBkbyBub3QgbmVlZCBjaGVjayAnY29zJyBpbiBBU1NF UlQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbmFtZSAnaW5zZXJ0 X3ZhbF90b19hcnJheScgdG8gJ2luc2VydF92YWxfaW50b19hcnJheScuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAncmVmX2xvY2snIGZyb20gcGFyYW1ldGVy IGxpc3QgaW4gJ2ZpbmRfY29zJyBhbmQgJ3BpY2tfYXZhaWxfY29zJy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIEFTU0VSVCBjaGVjayB0byAncmVmX2xvY2sn IGluICdmaW5kX2NvcycgYW5kICdwaWNrX2F2YWlsX2NvcycuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIGZpeCBhIGJ1ZyBmb3IgY2hlY2tpbmcgJ2ZlYXRfdHlwZScuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vdmUgJ2ZyZWVfYXJyYXknIGxh YmVsLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgY29tbWVu dHMgYW5kIGNvbW1pdCBtZXNzYWdlLgp2MTA6CiAgICAtIHJlc3RvcmUgZG9tYWluIGNvcyBpZCB0 byAwIHdoZW4gc29ja2V0IGlzIG9mZmxpbmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIGNoZWNrICdwc3JfY2F0X29wLmRhdGEnIHRvIG1ha2Ugc3VyZSBvbmx5IGxvd2Vy IDMyIGJpdHMgYXJlIHZhbGlkLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAg LSByZW1vdmUgdW5uZWNlc3NhcnkgZml4ZWQgd2lkdGggdHlwZSBvZiBwYXJhbWV0ZXJzIGFuZCB2 YXJpYWJsZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbmFtZSAn aW5zZXJ0X25ld192YWxfdG9fYXJyYXknIHRvICdpbnNlcnRfdmFsX3RvX2FycmF5Jy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gaW5wdXQgJ3JlZl9sb2NrJyBwb2ludGVy IGludG8gZnVuY3Rpb25zIHRvIGNoZWNrIGlmIGl0IGhhcyBiZWVuIGxvY2tlZC4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRkIGNvbW1lbnQgdG8gZGVjbGFyZSB0aGUg c2V0IHByb2Nlc3MgaXMgcHJvdGVjdGVkIGJ5ICdkb21jdGxfbG9jaycuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoZWNrICdmZWF0X3R5cGUnLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ2ZlYXRfbWFzaycuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2FyeSBjcml0ZXJpYSBv ZiBBU1NFUlQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkanVzdCBm bG93IG9mICdwc3Jfc2V0X3ZhbCcgdG8gYXZvaWQgJ2dvdG8nIGZvciBzdWNjZXNzZnVsIGNhc2Vz LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSB1c2UgQVNTRVJUIHRvIGNo ZWNrICdzb2NrZXRfaW5mbycgaW4gJ3Bzcl9mcmVlX2NvcycuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2FyeSBjb21tZW50IGluICdwc3JfZnJl ZV9jb3MnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2OToKICAgIC0gdXNlIGdv dG8gc3R5bGUgZXJyb3IgaGFuZGxpbmcgaW4gJ3Bzcl9zZXRfdmFsJy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBXZWkgTGl1KQogICAgLSB1c2UgQVNTRVJUIGZvciBjaGVja2luZyBvbGRfY29zLgogICAg ICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUgYW5kIEphbiBCZXVsaWNoKQogICAgLSBmaXggY29kaW5n IHN0eWxlIGlzc3VlLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIHJlbmFtZSAn YXNzZW1ibGVfdmFsX2FycmF5JyB0byAnY29tYmluZV92YWxfYXJyYXknIGluIHBlcnZpb3VzIHBh dGNoLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIHVzZSAnc3Bpbl9pc19sb2Nr ZWQnIHRvIGNoZWNrIHJlZl9sb2NrLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAg IC0gYWRkIGFuIGlucHV0IHBhcmFtZXRlciAnYXJyYXlfbGVuJyBmb3IgJ3dyaXRlX3Bzcl9tc3In LgogICAgLSBjaGVjayAnc29ja2V0X2luZm8nIGFuZCAncHNyX2Nvc19pZHMnIGluIHRoaXMgcGF0 Y2guCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSBwYXRjaCB0 aXRsZSB0byBpbmRpY2F0ZSAnTDMgQ0FUJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gZml4IGNvbW1pdCBtZXNzYWdlIHdvcmRzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQogICAgLSBjaGFuZ2UgJ2Fzc2VtYmxlX3ZhbF9hcnJheScgdG8gJ2dhdGhlcl92 YWxfYXJyYXknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2Ug J3NldF9uZXdfdmFsX3RvX2FycmF5JyB0byAnaW5zZXJ0X25ld192YWxfdG9fYXJyYXknLgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2UgcGFyYW1ldGVyICdtJyBv ZiAnaW5zZXJ0X25ld192YWxfdG9fYXJyYXknIHRvICduZXdfdmFsJy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlICd3cml0ZV9wc3JfbXNyJyB0byAnd3JpdGVf cHNyX21zcnMnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjb3JyZWN0 IGNvbW1lbnRzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUg dW5uZWNlc3NhcnkgY29tbWVudHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIGFkanVzdCBjb25kaXRpb25zIGFmdGVyICdmaW5kX2NvcycgdG8gc2F2ZSBhIGxldmVsIG9m IGluZGVudGF0aW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGQg J0FTU0VSVCghb2xkX2NvcyB8fCByZWZbb2xkX2Nvc10pJy4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gbW92ZSBBU1NFUlQoKSBjaGVjayBpbnRvIGxvY2tlZCByZWdpb24u CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlcGxhY2UgcGFyYW1ldGVy ICcqdmFsJyB0byAndmFsW10nIGluIHNvbWUgZnVuY3Rpb25zLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2UgJ3dyaXRlX3Bzcl9tc3InIHBhcmFtZXRlcnMgdG8g cHJlcGFyZSB0byBvbmx5IHNldCBvbmUgbmV3IHZhbHVlCiAgICAgIGZvciBvbmUgZmVhdHVyZS4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlcyBhYm91dCAndWlu dDY0X3QnIHRvICd1aW50MzJfdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIGFkZCBleHBsYW5hdGlvbiBhYm91dCBjb250ZXh0IHN3aXRjaC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKdjU6CiAgICAtIG1vZGlmeSBjb21taXQgbWVzc2FnZS4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmV0dXJuIGFuIGVycm9yIGZvciBhbGwg aGVscGVyIGZ1bmN0aW9ucyBpbiBzZXQgZmxvdy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGNhc3QuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIGRpdmlkZSAnZ2V0X29sZF9zZXRfbmV3JyB0byB0d28gZnVuY3Rp b25zLCAnYXNzZW1ibGVfdmFsX2FycmF5JyBhbmQKICAgICAgJ3NldF9uZXdfdmFsX3RvX2FycmF5 Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5IGNvbW1lbnRz LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGp1c3QgY29kZSBmb3Jt YXQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAnYWxsb2Nf bmV3X2NvcycgdG8gJ3BpY2tfYXZhaWxfY29zJyB0byBtYWtlIG5hbWUgYWNjdXJhdGUuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoZWNrIGZlYXR1cmUgdHlwZSB3aGVu IGVudGVyaW5nICdwc3Jfc2V0X3ZhbCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp CiAgICAtIHVzZSBBU1NFUlQgdG8gY2hlY2sgcmVmLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSByZW5hbWUgJ2RhdFtdJyB0byAnZGF0YVtdJy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKdjQ6CiAgICAtIGNyZWF0ZSB0aGlzIHBhdGNoIHRvIG1ha2UgY29k ZXMgZWFzaWVyIHRvIHVuZGVyc3RhbmQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp Ci0tLQogeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICB8ICAxOCArKy0tCiB4ZW4vYXJjaC94ODYv cHNyLmMgICAgICAgIHwgMjM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmggfCAgIDQgKy0KIDMgZmlsZXMgY2hh bmdlZCwgMjQwIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwppbmRleCBlOWE3MmM4 Li40MjI0NDA4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMKKysrIGIveGVuL2Fy Y2gveDg2L2RvbWN0bC5jCkBAIC0xNDQ1LDIxICsxNDQ1LDIxIEBAIGxvbmcgYXJjaF9kb19kb21j dGwoCiAgICAgICAgICAgICB1aW50MzJfdCB2YWwzMjsKIAogICAgICAgICBjYXNlIFhFTl9ET01D VExfUFNSX0NBVF9PUF9TRVRfTDNfQ0JNOgotICAgICAgICAgICAgcmV0ID0gcHNyX3NldF9sM19j Ym0oZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0YSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MMyk7CisgICAgICAgICAgICByZXQgPSBwc3Jf c2V0X3ZhbChkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUFNSX0NCTV9UWVBFX0wzKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg ICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DT0RFOgotICAgICAgICAg ICAgcmV0ID0gcHNyX3NldF9sM19jYm0oZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0 YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MM19DT0RF KTsKKyAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29w LnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfY2F0 X29wLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVfTDNf Q09ERSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNS X0NBVF9PUF9TRVRfTDNfREFUQToKLSAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfbDNfY2JtKGQs IGRvbWN0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQU1JfQ0JNX1RZUEVfTDNfREFUQSk7CisgICAgICAgICAgICByZXQgPSBwc3Jf c2V0X3ZhbChkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUFNSX0NCTV9UWVBFX0wzX0RBVEEpOwogICAgICAgICAgICAgYnJlYWs7 CiAKICAgICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0NCTToKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCAwZmU2 M2RkLi4xNjQxODJkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2Fy Y2gveDg2L3Bzci5jCkBAIC0xMjMsNiArMTIzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0 X3Byb3BzIHsKICAqIHJlZl9sb2NrICAtIEEgbG9jayB0byBwcm90ZWN0IGNvc19yZWYuCiAgKiBj b3NfcmVmICAgLSBBIHJlZmVyZW5jZSBjb3VudCBhcnJheSB0byByZWNvcmQgaG93IG1hbnkgZG9t YWlucyBhcmUgdXNpbmcgdGhlCiAgKiAgICAgICAgICAgICBDT1MgSUQuIEV2ZXJ5IGVudHJ5IG9m IGNvc19yZWYgY29ycmVzcG9uZHMgdG8gb25lIENPUyBJRC4KKyAqIGRvbV9zZXQgICAtIEEgYml0 bWFwIHRvIGluZGljYXRlIHdoaWNoIGRvbWFpbidzIGNvcyBpZCBoYXMgYmVlbiBzZXQuCiAgKi8K IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gewogICAgIGJvb2wgZmVhdF9pbml0OwpAQCAtMTMwLDYg KzEzMSw4IEBAIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gewogICAgIHN0cnVjdCBmZWF0X25vZGUg KmZlYXR1cmVzW0ZFQVRfVFlQRV9OVU1dOwogICAgIHNwaW5sb2NrX3QgcmVmX2xvY2s7CiAgICAg dW5zaWduZWQgaW50IGNvc19yZWZbTUFYX0NPU19SRUdfQ05UXTsKKyAgICAvKiBFdmVyeSBiaXQg Y29ycmVzcG9uZHMgdG8gYSBkb21haW4uIEluZGV4IGlzIGRvbWFpbl9pZC4gKi8KKyAgICBERUNM QVJFX0JJVE1BUChkb21fc2V0LCBET01JRF9JRExFICsgMSk7CiB9OwogCiBzdHJ1Y3QgcHNyX2Fz c29jIHsKQEAgLTE4Nyw2ICsxOTAsOCBAQCBzdGF0aWMgdm9pZCBmcmVlX3NvY2tldF9yZXNvdXJj ZXModW5zaWduZWQgaW50IHNvY2tldCkKICAgICBpbmZvLT5mZWF0X2luaXQgPSBmYWxzZTsKIAog ICAgIG1lbXNldChpbmZvLT5jb3NfcmVmLCAwLCBNQVhfQ09TX1JFR19DTlQgKiBzaXplb2YodW5z aWduZWQgaW50KSk7CisKKyAgICBiaXRtYXBfemVybyhpbmZvLT5kb21fc2V0LCBET01JRF9JRExF ICsgMSk7CiB9CiAKIHN0YXRpYyBlbnVtIHBzcl9mZWF0X3R5cGUgcHNyX2NibV90eXBlX3RvX2Zl YXRfdHlwZShlbnVtIGNibV90eXBlIHR5cGUpCkBAIC00NjMsMTMgKzQ2OCwyNSBAQCB2b2lkIHBz cl9jdHh0X3N3aXRjaF90byhzdHJ1Y3QgZG9tYWluICpkKQogICAgIGlmICggcHNyX2NtdF9lbmFi bGVkKCkgKQogICAgICAgICBwc3JfYXNzb2Nfcm1pZCgmcmVnLCBkLT5hcmNoLnBzcl9ybWlkKTsK IAotICAgIC8qIElmIGRvbWFpbidzICdwc3JfY29zX2lkcycgaXMgTlVMTCwgd2Ugc2V0IGRlZmF1 bHQgdmFsdWUgZm9yIGl0LiAqLworICAgIC8qCisgICAgICogSWYgdGhlIGRvbWFpbiBpcyBub3Qg c2V0IGluICdkb21fc2V0JyBiaXRtYXAsIHRoYXQgbWVhbnMgdGhlIGRvbWFpbidzCisgICAgICog Y29zIGlkIGlzIG5vdCB2YWxpZC4gU28sIHdlIGhhdmUgdG8gdXNlIGRlZmF1bHQgdmFsdWUgKDAp IHRvIHNldCBBU1NPQworICAgICAqIHJlZ2lzdGVyLiBGdXJ0aGVybW9yZSwgaWYgZG9tYWluJ3Mg J3Bzcl9jb3NfaWRzJyBpcyBOVUxMLCB3ZSBuZWVkCisgICAgICogZGVmYXVsdCB2YWx1ZSBmb3Ig aXQgdG9vIChmb3IgY2FzZSB0aGF0IHRoZSBkb21haW4ncyBwc3JfY29zX2lkcyBpcyBub3QKKyAg ICAgKiBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkKS4KKyAgICAgKi8KICAgICBpZiAoIHBzcmEtPmNv c19tYXNrICkKLSAgICAgICAgcmVnID0gcHNyX2Fzc29jX2NvcyhyZWcsCi0gICAgICAgICAgICAg ICAgICAoZC0+YXJjaC5wc3JfY29zX2lkcyA/Ci0gICAgICAgICAgICAgICAgICAgZC0+YXJjaC5w c3JfY29zX2lkc1tjcHVfdG9fc29ja2V0KHNtcF9wcm9jZXNzb3JfaWQoKSldIDoKLSAgICAgICAg ICAgICAgICAgICAwKSwKLSAgICAgICAgICAgICAgICAgIHBzcmEtPmNvc19tYXNrKTsKKyAgICB7 CisgICAgICAgIHVuc2lnbmVkIGludCBzb2NrZXQgPSBjcHVfdG9fc29ja2V0KHNtcF9wcm9jZXNz b3JfaWQoKSk7CisgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBzb2NrZXRf aW5mbyArIHNvY2tldDsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvcyA9IDA7CisKKyAgICAgICAg aWYgKCBsaWtlbHkodGVzdF9iaXQoZC0+ZG9tYWluX2lkLCBpbmZvLT5kb21fc2V0KSkgJiYKKyAg ICAgICAgICAgICBkLT5hcmNoLnBzcl9jb3NfaWRzICkKKyAgICAgICAgICAgIGNvcyA9IGQtPmFy Y2gucHNyX2Nvc19pZHNbc29ja2V0XTsKKworICAgICAgICByZWcgPSBwc3JfYXNzb2NfY29zKHJl ZywgY29zLCBwc3JhLT5jb3NfbWFzayk7CisgICAgfQogCiAgICAgaWYgKCByZWcgIT0gcHNyYS0+ dmFsICkKICAgICB7CkBAIC01NTEsNyArNTY4LDEzIEBAIGludCBwc3JfZ2V0X3ZhbChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0LAogICAgICAgICByZXR1cm4gLUVOT0VOVDsK ICAgICB9CiAKKyAgICBkb21haW5fbG9jayhkKTsKKyAgICBpZiAoICF0ZXN0X2FuZF9zZXRfYml0 KGQtPmRvbWFpbl9pZCwgc29ja2V0X2luZm9bc29ja2V0XS5kb21fc2V0KSApCisgICAgICAgIGQt PmFyY2gucHNyX2Nvc19pZHNbc29ja2V0XSA9IDA7CisKICAgICBjb3MgPSBkLT5hcmNoLnBzcl9j b3NfaWRzW3NvY2tldF07CisgICAgZG9tYWluX3VubG9jayhkKTsKKwogICAgIC8qCiAgICAgICog SWYgaW5wdXQgY29zIGV4Y2VlZHMgY3VycmVudCBmZWF0dXJlJ3MgY29zX21heCwgd2Ugc2hvdWxk IHJldHVybiBpdHMKICAgICAgKiBkZWZhdWx0IHZhbHVlIHdoaWNoIGlzIHN0b3JlZCBpbiBjb3Mg MC4gVGhpcyBjYXNlIG9ubHkgaGFwcGVucwpAQCAtNTc1LDE1ICs1OTgsMjEyIEBAIGludCBwc3Jf Z2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0LAogICAgIHJldHVy biAtRUlOVkFMOwogfQogCi1pbnQgcHNyX3NldF9sM19jYm0oc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgaW50IHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBjYm0sIGVudW0g Y2JtX3R5cGUgdHlwZSkKKy8qIFNldCB2YWx1ZSBmdW5jdGlvbnMgKi8KK3N0YXRpYyB1bnNpZ25l ZCBpbnQgZ2V0X2Nvc19udW0odm9pZCkKIHsKICAgICByZXR1cm4gMDsKIH0KIAotLyogQ2FsbGVk IHdpdGggZG9tYWluIGxvY2sgaGVsZCwgbm8gZXh0cmEgbG9jayBuZWVkZWQgZm9yICdwc3JfY29z X2lkcycgKi8KK3N0YXRpYyBpbnQgZ2F0aGVyX3ZhbF9hcnJheSh1aW50MzJfdCB2YWxbXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9jb3MpCit7Cisg ICAgcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgaW5zZXJ0X3ZhbF9pbnRvX2FycmF5 KHVpbnQzMl90IHZhbFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW51bSBjYm1fdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgbmV3X3ZhbCkKK3sKKyAgICByZXR1cm4gLUVJTlZBTDsKK30K Kworc3RhdGljIGludCBmaW5kX2Nvcyhjb25zdCB1aW50MzJfdCB2YWxbXSwgdW5zaWduZWQgaW50 IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRf dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAq aW5mbykKK3sKKyAgICByZXR1cm4gLUVOT0VOVDsKK30KKworc3RhdGljIGludCBwaWNrX2F2YWls X2Nvcyhjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCB1aW50MzJfdCB2YWxbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9jb3MsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUpCit7CisgICAg cmV0dXJuIC1FTk9FTlQ7Cit9CisKK3N0YXRpYyBpbnQgd3JpdGVfcHNyX21zcnModW5zaWduZWQg aW50IHNvY2tldCwgdW5zaWduZWQgaW50IGNvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdWludDMyX3QgdmFsW10sIHVuc2lnbmVkIGludCBhcnJheV9sZW4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUpCit7CisgICAgcmV0 dXJuIC1FTk9FTlQ7Cit9CisKK2ludCBwc3Jfc2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBpbnQgc29ja2V0LAorICAgICAgICAgICAgICAgIHVpbnQ2NF90IG5ld192YWwsIGVudW0g Y2JtX3R5cGUgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywgYXJyYXlfbGVuOwor ICAgIGludCBjb3MsIHJldDsKKyAgICB1bnNpZ25lZCBpbnQgKnJlZjsKKyAgICB1aW50MzJfdCAq dmFsX2FycmF5LCB2YWw7CisgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9IGdldF9z b2NrZXRfaW5mbyhzb2NrZXQpOworICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGU7CisK KyAgICBpZiAoIElTX0VSUihpbmZvKSApCisgICAgICAgIHJldHVybiBQVFJfRVJSKGluZm8pOwor CisgICAgdmFsID0gbmV3X3ZhbDsKKyAgICBpZiAoIG5ld192YWwgIT0gdmFsICkKKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7CisKKyAgICBmZWF0X3R5cGUgPSBwc3JfY2JtX3R5cGVfdG9fZmVhdF90 eXBlKHR5cGUpOworICAgIGlmICggZmVhdF90eXBlID49IEFSUkFZX1NJWkUoaW5mby0+ZmVhdHVy ZXMpIHx8CisgICAgICAgICAhaW5mby0+ZmVhdHVyZXNbZmVhdF90eXBlXSApCisgICAgICAgIHJl dHVybiAtRU5PRU5UOworCisgICAgLyoKKyAgICAgKiBTdGVwIDA6CisgICAgICogb2xkX2NvcyBt ZWFucyB0aGUgQ09TIElEIGN1cnJlbnQgZG9tYWluIGlzIHVzaW5nLiBCeSBkZWZhdWx0LCBpdCBp cyAwLgorICAgICAqCisgICAgICogRm9yIGV2ZXJ5IENPUyBJRCwgdGhlcmUgaXMgYSByZWZlcmVu Y2UgY291bnQgdG8gcmVjb3JkIGhvdyBtYW55IGRvbWFpbnMKKyAgICAgKiBhcmUgdXNpbmcgdGhl IENPUyByZWdpc3RlciBjb3JyZXNwb25kaW5nIHRvIHRoaXMgQ09TIElELgorICAgICAqIC0gSWYg cmVmW29sZF9jb3NdIGlzIDAsIHRoYXQgbWVhbnMgdGhpcyBDT1MgaXMgbm90IHVzZWQgYnkgYW55 IGRvbWFpbi4KKyAgICAgKiAtIElmIHJlZltvbGRfY29zXSBpcyAxLCB0aGF0IG1lYW5zIHRoaXMg Q09TIGlzIG9ubHkgdXNlZCBieSBjdXJyZW50CisgICAgICogICBkb21haW4uCisgICAgICogLSBJ ZiByZWZbb2xkX2Nvc10gaXMgbW9yZSB0aGFuIDEsIHRoYXQgbWVhbiBtdWx0aXBsZSBkb21haW5z IGFyZSB1c2luZworICAgICAqICAgdGhpcyBDT1MuCisgICAgICovCisgICAgZG9tYWluX2xvY2so ZCk7CisgICAgaWYgKCAhdGVzdF9hbmRfc2V0X2JpdChkLT5kb21haW5faWQsIGluZm8tPmRvbV9z ZXQpICkKKyAgICAgICAgZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdID0gMDsKKworICAgIG9s ZF9jb3MgPSBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF07CisgICAgZG9tYWluX3VubG9jayhk KTsKKworICAgIEFTU0VSVChvbGRfY29zIDwgTUFYX0NPU19SRUdfQ05UKTsKKworICAgIHJlZiA9 IGluZm8tPmNvc19yZWY7CisKKyAgICAvKgorICAgICAqIFN0ZXAgMToKKyAgICAgKiBHYXRoZXIg YSB2YWx1ZSBhcnJheSB0byBzdG9yZSBhbGwgZmVhdHVyZXMgY29zX3JlZ192YWxbb2xkX2Nvc10u CisgICAgICogQW5kLCBzZXQgdGhlIGlucHV0IG5ldyB2YWwgaW50byBhcnJheSBhY2NvcmRpbmcg dG8gdGhlIGZlYXR1cmUncworICAgICAqIHBvc2l0aW9uIGluIGFycmF5LgorICAgICAqLworICAg IGFycmF5X2xlbiA9IGdldF9jb3NfbnVtKCk7CisgICAgdmFsX2FycmF5ID0geHphbGxvY19hcnJh eSh1aW50MzJfdCwgYXJyYXlfbGVuKTsKKyAgICBpZiAoICF2YWxfYXJyYXkgKQorICAgICAgICBy ZXR1cm4gLUVOT01FTTsKKworICAgIGlmICggKHJldCA9IGdhdGhlcl92YWxfYXJyYXkodmFsX2Fy cmF5LCBhcnJheV9sZW4sIGluZm8sIG9sZF9jb3MpKSAhPSAwICkKKyAgICAgICAgZ290byBmcmVl X2FycmF5OworCisgICAgaWYgKCAocmV0ID0gaW5zZXJ0X3ZhbF9pbnRvX2FycmF5KHZhbF9hcnJh eSwgYXJyYXlfbGVuLCBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmZWF0X3R5cGUsIHR5cGUsIHZhbCkpICE9IDAgKQorICAgICAgICBnb3RvIGZyZWVfYXJyYXk7 CisKKyAgICBzcGluX2xvY2soJmluZm8tPnJlZl9sb2NrKTsKKworICAgIC8qCisgICAgICogU3Rl cCAyOgorICAgICAqIFRyeSB0byBmaW5kIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBDT1MgSUQgb24g d2hpY2ggYWxsIGZlYXR1cmVzJyB2YWx1ZXMKKyAgICAgKiBhcmUgc2FtZSBhcyB0aGUgYXJyYXku IFRoZW4sIHdlIGNhbiByZXVzZSB0aGlzIENPUyBJRC4KKyAgICAgKi8KKyAgICBjb3MgPSBmaW5k X2Nvcyh2YWxfYXJyYXksIGFycmF5X2xlbiwgZmVhdF90eXBlLCBpbmZvKTsKKyAgICBpZiAoIGNv cyA9PSBvbGRfY29zICkKKyAgICB7CisgICAgICAgIHJldCA9IDA7CisgICAgICAgIGdvdG8gdW5s b2NrX2ZyZWVfYXJyYXk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBTdGVwIDM6CisgICAgICog SWYgZmFpbCB0byBmaW5kLCB3ZSBuZWVkIHBpY2sgYW4gYXZhaWxhYmxlIENPUyBJRC4KKyAgICAg KiBJbiBmYWN0LCBvbmx5IENPUyBJRCB3aGljaCByZWYgaXMgMSBvciAwIGNhbiBiZSBwaWNrZWQg Zm9yIGN1cnJlbnQKKyAgICAgKiBkb21haW4uIElmIG9sZF9jb3MgaXMgbm90IDAgYW5kIGl0cyBy ZWY9PTEsIHRoYXQgbWVhbnMgb25seSBjdXJyZW50CisgICAgICogZG9tYWluIGlzIHVzaW5nIHRo aXMgb2xkX2NvcyBJRC4gU28sIHRoaXMgb2xkX2NvcyBJRCBjZXJ0YWlubHkgY2FuCisgICAgICog YmUgcmV1c2VkIGJ5IGN1cnJlbnQgZG9tYWluLiBSZWY9PTAgbWVhbnMgdGhlcmUgaXMgbm8gYW55 IGRvbWFpbgorICAgICAqIHVzaW5nIHRoaXMgQ09TIElELiBTbyBpdCBjYW4gYmUgdXNlZCBmb3Ig Y3VycmVudCBkb21haW4gdG9vLgorICAgICAqLworICAgIGlmICggY29zIDwgMCApCisgICAgewor ICAgICAgICBjb3MgPSBwaWNrX2F2YWlsX2NvcyhpbmZvLCB2YWxfYXJyYXksIGFycmF5X2xlbiwg b2xkX2NvcywgZmVhdF90eXBlKTsKKyAgICAgICAgaWYgKCBjb3MgPCAwICkKKyAgICAgICAgewor ICAgICAgICAgICAgcmV0ID0gY29zOworICAgICAgICAgICAgZ290byB1bmxvY2tfZnJlZV9hcnJh eTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFN0ZXAgNDoKKyAgICAgICAg ICogV3JpdGUgdGhlIGZlYXR1cmUncyBNU1JzIGFjY29yZGluZyB0byB0aGUgQ09TIElELgorICAg ICAgICAgKi8KKyAgICAgICAgcmV0ID0gd3JpdGVfcHNyX21zcnMoc29ja2V0LCBjb3MsIHZhbF9h cnJheSwgYXJyYXlfbGVuLCBmZWF0X3R5cGUpOworICAgICAgICBpZiAoIHJldCApCisgICAgICAg ICAgICBnb3RvIHVubG9ja19mcmVlX2FycmF5OworICAgIH0KKworICAgIC8qCisgICAgICogU3Rl cCA1OgorICAgICAqIEZpbmQgdGhlIENPUyBJRCAoZmluZF9jb3MgcmVzdWx0IGlzICc+PSAwJyBv ciBhbiBhdmFpbGFibGUgQ09TIElEIGlzCisgICAgICogcGlja2VkLCB0aGVuIHVwZGF0ZSByZWYg YWNjb3JkaW5nIHRvIENPUyBJRC4KKyAgICAgKi8KKyAgICByZWZbY29zXSsrOworICAgIEFTU0VS VCghY29zIHx8IHJlZltjb3NdKTsKKyAgICBBU1NFUlQoIW9sZF9jb3MgfHwgcmVmW29sZF9jb3Nd KTsKKyAgICByZWZbb2xkX2Nvc10tLTsKKyAgICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2sp OworCisgICAgLyoKKyAgICAgKiBTdGVwIDY6CisgICAgICogU2F2ZSB0aGUgQ09TIElEIGludG8g Y3VycmVudCBkb21haW4ncyBwc3JfY29zX2lkc1tdIHNvIHRoYXQgd2UgY2FuIGtub3cKKyAgICAg KiB3aGljaCBDT1MgdGhlIGRvbWFpbiBpcyB1c2luZyBvbiB0aGUgc29ja2V0LiBPbmUgZG9tYWlu IGNhbiBvbmx5IHVzZQorICAgICAqIG9uZSBDT1MgSUQgYXQgc2FtZSB0aW1lIG9uIGVhY2ggc29j a2V0LgorICAgICAqLworICAgIGRvbWFpbl9sb2NrKGQpOworICAgIGQtPmFyY2gucHNyX2Nvc19p ZHNbc29ja2V0XSA9IGNvczsKKyAgICBkb21haW5fdW5sb2NrKGQpOworCisgICAgZ290byBmcmVl X2FycmF5OworCisgdW5sb2NrX2ZyZWVfYXJyYXk6CisgICAgc3Bpbl91bmxvY2soJmluZm8tPnJl Zl9sb2NrKTsKKworIGZyZWVfYXJyYXk6CisgICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICByZXR1 cm4gcmV0OworfQorCiBzdGF0aWMgdm9pZCBwc3JfZnJlZV9jb3Moc3RydWN0IGRvbWFpbiAqZCkK IHsKKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0LCBjb3M7CisKKyAgICBpZiAoICFkLT5hcmNoLnBz cl9jb3NfaWRzIHx8ICFwc3JfYWxsb2NfZmVhdF9lbmFibGVkKCkgKQorICAgICAgICByZXR1cm47 CisKKyAgICAvKiBEb21haW4gaXMgZGVzdHJveWVkIHNvIGl0cyBjb3NfcmVmIHNob3VsZCBiZSBk ZWNyZWFzZWQuICovCisgICAgZm9yICggc29ja2V0ID0gMDsgc29ja2V0IDwgbnJfc29ja2V0czsg c29ja2V0KysgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9 IHNvY2tldF9pbmZvICsgc29ja2V0OworCisgICAgICAgIGNsZWFyX2JpdChkLT5kb21haW5faWQs IGluZm8tPmRvbV9zZXQpOworCisgICAgICAgIC8qIGNvcyAwIGlzIGRlZmF1bHQgb25lIHdoaWNo IGRvZXMgbm90IG5lZWQgYmUgaGFuZGxlZC4gKi8KKyAgICAgICAgY29zID0gZC0+YXJjaC5wc3Jf Y29zX2lkc1tzb2NrZXRdOworICAgICAgICBpZiAoIGNvcyA9PSAwICkKKyAgICAgICAgICAgIGNv bnRpbnVlOworCisgICAgICAgIHNwaW5fbG9jaygmaW5mby0+cmVmX2xvY2spOworICAgICAgICBB U1NFUlQoaW5mby0+Y29zX3JlZltjb3NdKTsKKyAgICAgICAgaW5mby0+Y29zX3JlZltjb3NdLS07 CisgICAgICAgIHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7CisgICAgfQorCiAgICAgeGZy ZWUoZC0+YXJjaC5wc3JfY29zX2lkcyk7CiAgICAgZC0+YXJjaC5wc3JfY29zX2lkcyA9IE5VTEw7 CiB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9wc3IuaAppbmRleCAwZTk2MGJmLi41MGI4NzU3IDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L3Bzci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKQEAgLTc0 LDggKzc0LDggQEAgaW50IHBzcl9nZXRfaW5mbyh1bnNpZ25lZCBpbnQgc29ja2V0LCBlbnVtIGNi bV90eXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFbXSwgdW5zaWduZWQg aW50IGFycmF5X2xlbik7CiBpbnQgcHNyX2dldF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWdu ZWQgaW50IHNvY2tldCwKICAgICAgICAgICAgICAgICB1aW50MzJfdCAqdmFsLCBlbnVtIGNibV90 eXBlIHR5cGUpOwotaW50IHBzcl9zZXRfbDNfY2JtKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGludCBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgdWludDY0X3QgY2JtLCBlbnVtIGNibV90 eXBlIHR5cGUpOworaW50IHBzcl9zZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGlu dCBzb2NrZXQsCisgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsLCBlbnVtIGNibV90eXBlIHR5 cGUpOwogCiB2b2lkIHBzcl9kb21haW5faW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKIHZvaWQgcHNy X2RvbWFpbl9mcmVlKHN0cnVjdCBkb21haW4gKmQpOwotLSAKMS45LjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK