From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v10 09/25] x86: refactor psr: L3 CAT: set value: implement framework. Date: Sat, 1 Apr 2017 21:53:40 +0800 Message-ID: <1491054836-30488-10-git-send-email-yi.y.sun@linux.intel.com> References: <1491054836-30488-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cuJTd-0005gD-TO for xen-devel@lists.xenproject.org; Sat, 01 Apr 2017 13:54:02 +0000 In-Reply-To: <1491054836-30488-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org QXMgc2V0IHZhbHVlIGZsb3cgaXMgdGhlIG1vc3QgY29tcGxpY2F0ZWQgb25lIGluIHBzciwgaXQg d2lsbCBiZQpkaXZpZGVkIHRvIHNvbWUgcGF0Y2hlcyB0byBtYWtlIHRoaW5ncyBjbGVhcmVyLiBU aGlzIHBhdGNoCmltcGxlbWVudHMgdGhlIHNldCB2YWx1ZSBmcmFtZXdvcmsgdG8gc2hvdyBhIHdo b2xlIHBpY3R1cmUgZmlyc3RseS4KCkl0IGFsc28gY2hhbmdlcyBkb21jdGwgaW50ZXJmYWNlIHRv IG1ha2UgaXQgbW9yZSBnZW5lcmFsLgoKVG8gbWFrZSB0aGUgc2V0IHZhbHVlIGZsb3cgYmUgZ2Vu ZXJhbCBhbmQgY2FuIHN1cHBvcnQgbXVsdGlwbGUgZmVhdHVyZXMKYXQgc2FtZSB0aW1lLCBpdCBp bmNsdWRlcyBiZWxvdyBzdGVwczoKMS4gR2V0IENPUyBJRCB0aGF0IGN1cnJlbnQgZG9tYWluIGlz IHVzaW5nLgoyLiBHYXRoZXIgYSB2YWx1ZSBhcnJheSB0byBzdG9yZSBhbGwgZmVhdHVyZXMgY3Vy cmVudCB2YWx1ZQogICBpbnRvIGl0IGFuZCByZXBsYWNlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRo ZSBmZWF0dXJlIHdoaWNoIGlzCiAgIGJlaW5nIHNldCB0byB0aGUgbmV3IGlucHV0IHZhbHVlLgoz LiBGaW5kIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBDT1MgSUQgb24gd2hpY2ggYWxsIGZlYXR1cmVz JwogICB2YWx1ZXMgYXJlIHNhbWUgYXMgdGhlIGFycmF5LiBUaGVuLCB3ZSBjYW4gcmV1c2UgdGhp cyBDT1MKICAgSUQuCjQuIElmIGZhaWwgdG8gZmluZCwgd2UgbmVlZCBwaWNrIGFuIGF2YWlsYWJs ZSBDT1MgSUQuIE9ubHkgQ09TIElEIHdoaWNoIHJlZgogICBpcyAwIG9yIDEgY2FuIGJlIHBpY2tl ZC4KNS4gV3JpdGUgdGhlIGZlYXR1cmUncyBNU1IgYWNjb3JkaW5nIHRvIHRoZSBDT1MgSUQgYW5k IGNibV90eXBlLgo2LiBVcGRhdGUgcmVmIGFjY29yZGluZyB0byBDT1MgSUQuCjcuIFNhdmUgdGhl IENPUyBJRCBpbnRvIGN1cnJlbnQgZG9tYWluJ3MgcHNyX2Nvc19pZHNbc29ja2V0XSBzbyB0aGF0 IHdlCiAgIGNhbiBrbm93IHdoaWNoIENPUyB0aGUgZG9tYWluIGlzIHVzaW5nIG9uIHRoZSBzb2Nr ZXQuCgpTbywgc29tZSBmdW5jdGlvbnMgYXJlIGFic3RyYWN0ZWQgYW5kIHRoZSBjYWxsYmFjayBm dW5jdGlvbnMgd2lsbCBiZQppbXBsZW1lbnRlZCBpbiBuZXh0IHBhdGNoZXMuCgpIZXJlIGlzIGFu IGV4YW1wbGUgdG8gdW5kZXJzdGFuZCB0aGUgcHJvY2Vzcy4gVGhlIENQVSBzdXBwb3J0cwp0d28g ZmVhdHVlcnMsIGUuZy4gTDMgQ0FUIGFuZCBMMiBDQVQuIFVzZXIgd2FudHMgdG8gc2V0IEwzIENB VApvZiBEb20xIHRvIDB4MWZmLgoxLiBBdCB0aGUgaW5pdGlhbCB0aW1lLCB0aGUgb2xkX2NvcyBv ZiBEb20xIGlzIDAuIFRoZSBDT1MgcmVnaXN0ZXJzIHZhbHVlcwphcmUgYmVsb3cgYXQgdGhpcyB0 aW1lLgogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICB8IENP UyAwIHwgQ09TIDEgfCBDT1MgMiB8IC4uLiB8CiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpMMyBDQVQgIHwgMHg3ZmYgfCAweDdmZiB8IDB4N2ZmIHwgLi4uIHwKICAgICAg ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkwyIENBVCAgfCAweGZmICB8IDB4ZmYg IHwgMHhmZiAgfCAuLi4gfAogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K CjIuIEdhdGhlciB0aGUgdmFsdWUgYXJyYXkgYW5kIGluc2VydCBuZXcgdmFsdWUgaW50byBpdDoK dmFsWzBdOiAweDFmZgp2YWxbMV06IDB4ZmYKCjMuIEl0IGNhbm5vdCBmaW5kIGEgbWF0Y2hpbmcg Q09TLgoKNC4gUGljayBDT1MgMSB0byBzdG9yZSB0aGUgdmFsdWUgc2V0LgoKNS4gV3JpdGUgdGhl IEwzIENBVCBDT1MgMSByZWdpc3RlcnMuIFRoZSBDT1MgcmVnaXN0ZXJzIHZhbHVlcyBhcmUKY2hh bmdlZCB0byBiZWxvdyBub3cuCiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICAgICAgIHwgQ09TIDAgfCBDT1MgMSB8IENPUyAyIHwgLi4uIHwKICAgICAgICAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkwzIENBVCAgfCAweDdmZiB8IDB4MWZmIHwgLi4uICAg fCAuLi4gfAogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTDIgQ0FUICB8 IDB4ZmYgIHwgMHhmZiAgfCAuLi4gICB8IC4uLiB8CiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoKNi4gVGhlIHJlZlsxXSBpcyBpbmNyZWFzZWQgdG8gMSBiZWNhdXNlIERv bTEgaXMgdXNpbmcgaXQgbm93LgoKNy4gU2F2ZSAxIHRvIERvbTEncyBwc3JfY29zX2lkc1tzb2Nr ZXRdLgoKVGhlbiwgdXNlciB3YW50cyB0byBzZXQgTDMgQ0FUIG9mIERvbTIgdG8gMHgxZmYgdG9v LiBUaGUgb2xkX2NvcwpvZiBEb20yIGlzIDAgdG9vLiBSZXBlYXQgYWJvdmUgZmxvdy4KClRoZSB2 YWwgYXJyYXkgYXNzZW1ibGVkIGlzOgp2YWxbMF06IDB4MWZmCnZhbFsxXTogMHhmZgoKU28sIGl0 IGNhbiBmaW5kIGEgbWF0Y2hpbmcgQ09TLCBDT1MgMS4gVGhlbiwgaXQgY2FuIHJldXNlIENPUyAx CmZvciBEb20yLgoKVGhlIHJlZlsxXSBpcyBpbmNyZWFzZWQgdG8gMiBub3cgYmVjYXVzZSBib3Ro IERvbTEgYW5kIERvbTIgYXJlCnVzaW5nIHRoaXMgQ09TIElELiBTZXQgMSB0byBEb20yJ3MgcHNy X2Nvc19pZHNbc29ja2V0XS4KCkFub3RoZXIgdGhpbmcgbmVlZCB0byBlbXBoYXNpemUgaXMgdGhl IGNvbnRleHQgc3dpdGNoLiBXaGVuIGNvbnRleHQKc3dpdGNoIGhhcHBlbnMsICdwc3JfY3R4dF9z d2l0Y2hfdG8nIGlzIGNhbGxlZCBieSBzeXN0ZW0gdG8gZ2V0CmRvbWFpbidzIENPUyBJRCBmcm9t ICdwc3JfY29zX2lkc1tzb2NrZXRdJy4gQnV0ICdwc3JfY29zX2lkc1tzb2NrZXRdJwppcyBzZXQg YXQgc3RlcCA3IGFib3ZlLiBTbywgdGhlcmUgYXJlIHRocmVlIHNjZW5hcmlvcywgZS5nLjoKMS4g VXNlciBjYWxscyBkb21jdGwgaW50ZXJmYWNlIG9uIERvbTAgdG8gc2V0IGEgQ09TIElEIDEgZm9y IERvbTEgaW50byBpdHMKICAgcHNyX2Nvc19pZHNbXS4gVGhlbiwgRG9tMSBpcyBzY2hlZHVsZWQg c28gdGhhdCAncHNyX2N0eHRfc3dpdGNoX3RvKCknIGlzCiAgIGNhbGxlZCB3aGljaCBtYWtlcyBD T1MgSUQgMSB3b3JrLiBGb3IgdGhpcyBjYXNlLCBubyBhY3Rpb24gaXMgbmVlZGVkLgoKMi4gRG9t MSBydW5zIG9uIENQVSAxIGFuZCBDT1MgSUQgMSBpcyB3b3JraW5nLiBBdCBzYW1lIHRpbWUsIHVz ZXIgY2FsbHMgZG9tY3RsCiAgIGludGVyZmFjZSBvbiBEb20wIHRvIHNldCBhIG5ldyBDT1MgSUQg MiBmb3IgRG9tMSBpbnRvIHBzcl9jb3NfaWRzW10uIEFmdGVyCiAgIHRpbWUgc2xpY2UgZW5kcywg dGhlIERvbTEgaXMgc2NoZWR1bGVkIGFnYWluLCB0aGUgbmV3IENPUyBJRCAyIHdpbGwgd29yay4K CjMuIFdoZW4gYSBuZXcgQ09TIElEIGlzIGJlaW5nIHNldCB0byBwc3JfY29zX2lkc1tdLCAncHNy X2N0eHRfc3dpdGNoX3RvKCknCiAgIGlzIGNhbGxlZCB0byBhY2Nlc3MgdGhlIHNhbWUgcHNyX2Nv c19pZHNbXSBtZW1iZXIgdGhyb3VnaCAncHNyX2Fzc29jX2NvcycuCiAgIFRoZSBDT1MgSUQgaXMg Y29uc3RyYWluZWQgYnkgY29zX21hc2sgc28gdGhhdCBpdCBjYW5ub3QgZXhjZWVkcyB0aGUgY29z X21heC4KICAgU28gZXZlbiB0aGUgQ09TIElEIGdvdCBoZXJlIGlzIHdyb25nLCBpdCBpcyBzdGls bCBhIHdvcmthYmxlIElEICh3aXRoaW4KICAgY29zX21heCkuIFRoZSBmdW5jdGlvbmFsaXR5IGlz IHN0aWxsIHdvcmthYmxlLCB0aGUgYWN0dWFsIHZhbGlkIENCTSB3aWxsIGJlCiAgIGVmZmVjdGl2 ZSBmb3IgYSBzaG9ydCB0aW1lLiBJbiBuZXh0IHNjaGVkdWxlLCB0aGUgY29ycmVjdCBDQk0gd2ls bCB0YWtlCiAgIGVmZmVjdC4KCkFsbCB0aGVzZSBjYXNlcyB3aWxsIG5vdCBjYXVzZSByYWNlIGNv bmRpdGlvbiBhbmQgbm8gaGFybSB0byBzeXN0ZW0uIFRoZSBQU1IKZmVhdHVyZXMgYXJlIHRvIHNl dCBjYWNoZSBjYXBhY2l0eSBmb3IgYSBkb21haW4uIFRoZSBzZXR0aW5nIHRvIGNhY2hlIGlzCnBy b2dyZXNzaXZlbHkgZWZmZWN0aXZlLiBXaGVuIHRoZSBjYWNoZSBzZXR0aW5nIGJlY29tZXMgcmVh bGx5IGVmZmVjdGl2ZSwgdGhlCnRpbWUgc2xpY2UgdG8gc2NoZWR1bGUgYSBkb21haW4gbWF5IGhh dmUgcGFzc2VkLiBTbywgZXZlbiBpZiBhIHdyb25nIENPUyBJRCBpcwp1c2VkIHRvIHNldCBBU1NP Qywgb25seSBhbm90aGVyIHZhbGlkIENCTSBiZSBlZmZlY3RpdmUgZm9yIGEgc2hvcnQgdGltZSBk dXJpbmcKY2FjaGUgcHJlcGFyYXRpb24gdGltZS4gVGhlIGNvcnJlY3QgQ09TIElEIHdpbGwgdGFr ZSBlZmZlY3QgaW4gYSBzaG9ydCB0aW1lLgpUaGlzIGRvZXMgbm90IGFmZmVjdCBjYWNoZSBjYXBh Y2l0eSBzZXR0aW5nIG11Y2guCgpTaWduZWQtb2ZmLWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4 LmludGVsLmNvbT4KLS0tCnYxMDoKICAgIC0gcmVzdG9yZSBkb21haW4gY29zIGlkIHRvIDAgd2hl biBzb2NrZXQgaXMgb2ZmbGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gY2hlY2sgJ3Bzcl9jYXRfb3AuZGF0YScgdG8gbWFrZSBzdXJlIG9ubHkgbG93ZXIgMzIgYml0 cyBhcmUgdmFsaWQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92 ZSB1bm5lY2Vzc2FyeSBmaXhlZCB3aWR0aCB0eXBlIG9mIHBhcmFtZXRlcnMgYW5kIHZhcmlhYmxl cy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdpbnNlcnRf bmV3X3ZhbF90b19hcnJheScgdG8gJ2luc2VydF92YWxfdG9fYXJyYXknLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBpbnB1dCAncmVmX2xvY2snIHBvaW50ZXIgaW50byBm dW5jdGlvbnMgdG8gY2hlY2sgaWYgaXQgaGFzIGJlZW4gbG9ja2VkLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGQgY29tbWVudCB0byBkZWNsYXJlIHRoZSBzZXQgcHJv Y2VzcyBpcyBwcm90ZWN0ZWQgYnkgJ2RvbWN0bF9sb2NrJy4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gY2hlY2sgJ2ZlYXRfdHlwZScuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnZmVhdF9tYXNrJy4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGNyaXRlcmlhIG9mIEFTU0VS VC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGZsb3cgb2Yg J3Bzcl9zZXRfdmFsJyB0byBhdm9pZCAnZ290bycgZm9yIHN1Y2Nlc3NmdWwgY2FzZXMuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHVzZSBBU1NFUlQgdG8gY2hlY2sgJ3Nv Y2tldF9pbmZvJyBpbiAncHNyX2ZyZWVfY29zJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGNvbW1lbnQgaW4gJ3Bzcl9mcmVlX2Nvcycu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY5OgogICAgLSB1c2UgZ290byBzdHls ZSBlcnJvciBoYW5kbGluZyBpbiAncHNyX3NldF92YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdl aSBMaXUpCiAgICAtIHVzZSBBU1NFUlQgZm9yIGNoZWNraW5nIG9sZF9jb3MuCiAgICAgIChzdWdn ZXN0ZWQgYnkgV2VpIExpdSBhbmQgSmFuIEJldWxpY2gpCiAgICAtIGZpeCBjb2Rpbmcgc3R5bGUg aXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gcmVuYW1lICdhc3NlbWJs ZV92YWxfYXJyYXknIHRvICdjb21iaW5lX3ZhbF9hcnJheScgaW4gcGVydmlvdXMgcGF0Y2guCiAg ICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gdXNlICdzcGluX2lzX2xvY2tlZCcgdG8g Y2hlY2sgcmVmX2xvY2suCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAgLSBhZGQg YW4gaW5wdXQgcGFyYW1ldGVyICdhcnJheV9sZW4nIGZvciAnd3JpdGVfcHNyX21zcicuCiAgICAt IGNoZWNrICdzb2NrZXRfaW5mbycgYW5kICdwc3JfY29zX2lkcycgaW4gdGhpcyBwYXRjaC4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5IHBhdGNoIHRpdGxlIHRv IGluZGljYXRlICdMMyBDQVQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAg LSBmaXggY29tbWl0IG1lc3NhZ2Ugd29yZHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIGNoYW5nZSAnYXNzZW1ibGVfdmFsX2FycmF5JyB0byAnZ2F0aGVyX3ZhbF9hcnJh eScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAnc2V0X25l d192YWxfdG9fYXJyYXknIHRvICdpbnNlcnRfbmV3X3ZhbF90b19hcnJheScuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSBwYXJhbWV0ZXIgJ20nIG9mICdpbnNl cnRfbmV3X3ZhbF90b19hcnJheScgdG8gJ25ld192YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQogICAgLSBjaGFuZ2UgJ3dyaXRlX3Bzcl9tc3InIHRvICd3cml0ZV9wc3JfbXNy cycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNvcnJlY3QgY29tbWVu dHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vz c2FyeSBjb21tZW50cy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRq dXN0IGNvbmRpdGlvbnMgYWZ0ZXIgJ2ZpbmRfY29zJyB0byBzYXZlIGEgbGV2ZWwgb2YgaW5kZW50 YXRpb24uCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCAnQVNTRVJU KCFvbGRfY29zIHx8IHJlZltvbGRfY29zXSknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSBtb3ZlIEFTU0VSVCgpIGNoZWNrIGludG8gbG9ja2VkIHJlZ2lvbi4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVwbGFjZSBwYXJhbWV0ZXIgJyp2YWwn IHRvICd2YWxbXScgaW4gc29tZSBmdW5jdGlvbnMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIGNoYW5nZSAnd3JpdGVfcHNyX21zcicgcGFyYW1ldGVycyB0byBwcmVwYXJl IHRvIG9ubHkgc2V0IG9uZSBuZXcgdmFsdWUKICAgICAgZm9yIG9uZSBmZWF0dXJlLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2VzIGFib3V0ICd1aW50NjRfdCcg dG8gJ3VpbnQzMl90Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRk IGV4cGxhbmF0aW9uIGFib3V0IGNvbnRleHQgc3dpdGNoLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQp2NToKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZXR1cm4gYW4gZXJyb3IgZm9yIGFsbCBoZWxwZXIg ZnVuY3Rpb25zIGluIHNldCBmbG93LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSByZW1vdmUgdW5uZWNlc3NhcnkgY2FzdC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gZGl2aWRlICdnZXRfb2xkX3NldF9uZXcnIHRvIHR3byBmdW5jdGlvbnMsICdh c3NlbWJsZV92YWxfYXJyYXknIGFuZAogICAgICAnc2V0X25ld192YWxfdG9fYXJyYXknLgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgY29tbWVudHMuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkanVzdCBjb2RlIGZvcm1hdC4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlICdhbGxvY19uZXdfY29z JyB0byAncGlja19hdmFpbF9jb3MnIHRvIG1ha2UgbmFtZSBhY2N1cmF0ZS4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hlY2sgZmVhdHVyZSB0eXBlIHdoZW4gZW50ZXJp bmcgJ3Bzcl9zZXRfdmFsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g dXNlIEFTU0VSVCB0byBjaGVjayByZWYuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp CiAgICAtIHJlbmFtZSAnZGF0W10nIHRvICdkYXRhW10nLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQp2NDoKICAgIC0gY3JlYXRlIHRoaXMgcGF0Y2ggdG8gbWFrZSBjb2RlcyBlYXNp ZXIgdG8gdW5kZXJzdGFuZC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKLS0tCiB4 ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgIHwgIDMwICsrKysrLS0KIHhlbi9hcmNoL3g4Ni9wc3Iu YyAgICAgICAgfCAyMTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCB8ICAgNCArLQogMyBmaWxlcyBjaGFuZ2Vk LCAyMzYgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2RvbWN0bC5jIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCmluZGV4IGRjMjEzYTcuLjZl ZDcxZTIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYworKysgYi94ZW4vYXJjaC94 ODYvZG9tY3RsLmMKQEAgLTE0MzcsMjEgKzE0MzcsMzMgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgK ICAgICAgICAgc3dpdGNoICggZG9tY3RsLT51LnBzcl9jYXRfb3AuY21kICkKICAgICAgICAgewog ICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfQ0JNOgotICAgICAgICAg ICAgcmV0ID0gcHNyX3NldF9sM19jYm0oZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0 YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MMyk7Cisg ICAgICAgICAgICBpZiAoIGRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEgIT0KKyAgICAgICAgICAg ICAgICAgKHVpbnQzMl90KWRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEgKQorICAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgICAgICByZXQgPSBwc3Jfc2V0X3ZhbChkLCBk b21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUFNSX0NCTV9UWVBFX0wzKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug WEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DT0RFOgotICAgICAgICAgICAgcmV0ID0gcHNy X3NldF9sM19jYm0oZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0YSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MM19DT0RFKTsKKyAgICAgICAg ICAgIGlmICggZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0YSAhPQorICAgICAgICAgICAgICAgICAo dWludDMyX3QpZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0YSApCisgICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7CisKKyAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+ dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0 bC0+dS5wc3JfY2F0X29wLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1Jf Q0JNX1RZUEVfTDNfQ09ERSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFhF Tl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfREFUQToKLSAgICAgICAgICAgIHJldCA9IHBzcl9z ZXRfbDNfY2JtKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVfTDNfREFUQSk7CisgICAgICAgICAg ICBpZiAoIGRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEgIT0KKyAgICAgICAgICAgICAgICAgKHVp bnQzMl90KWRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEgKQorICAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOworCisgICAgICAgICAgICByZXQgPSBwc3Jfc2V0X3ZhbChkLCBkb21jdGwtPnUu cHNyX2NhdF9vcC50YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwt PnUucHNyX2NhdF9vcC5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX0NC TV9UWVBFX0wzX0RBVEEpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBYRU5f RE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0NCTToKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9w c3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCAyNWZjZDIxLi45ZDgwNWQ2IDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC0xNTcs MTAgKzE1NywyNiBAQCBzdGF0aWMgdm9pZCBmcmVlX3NvY2tldF9yZXNvdXJjZXModW5zaWduZWQg aW50IHNvY2tldCkKIHsKICAgICB1bnNpZ25lZCBpbnQgaTsKICAgICBzdHJ1Y3QgcHNyX3NvY2tl dF9pbmZvICppbmZvID0gc29ja2V0X2luZm8gKyBzb2NrZXQ7CisgICAgc3RydWN0IGRvbWFpbiAq ZDsKIAogICAgIGlmICggIWluZm8gKQogICAgICAgICByZXR1cm47CiAKKyAgICAvKiBSZXN0b3Jl IGRvbWFpbiBjb3MgaWQgdG8gMCB3aGVuIHNvY2tldCBpcyBvZmZsaW5lLiAqLworICAgIGZvcl9l YWNoX2RvbWFpbiAoIGQgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvcyA9IGQtPmFy Y2gucHNyX2Nvc19pZHNbc29ja2V0XTsKKyAgICAgICAgaWYgKCBjb3MgPT0gMCApCisgICAgICAg ICAgICBjb250aW51ZTsKKworICAgICAgICBzcGluX2xvY2soJmluZm8tPnJlZl9sb2NrKTsKKyAg ICAgICAgQVNTRVJUKCFjb3MgfHwgaW5mby0+Y29zX3JlZltjb3NdKTsKKyAgICAgICAgaW5mby0+ Y29zX3JlZltjb3NdLS07CisgICAgICAgIHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7CisK KyAgICAgICAgZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdID0gMDsKKyAgICB9CisKICAgICAv KgogICAgICAqIEZyZWUgcmVzb3VyY2VzIG9mIGZlYXR1cmVzLiBUaGUgZ2xvYmFsIGZlYXR1cmUg b2JqZWN0LCBlLmcuIGZlYXRfbDNfY2F0LAogICAgICAqIG1heSBub3QgYmUgZnJlZWQgaGVyZSBp ZiBpdCBpcyBub3QgYWRkZWQgaW50byBhcnJheS4gSXQgaXMgc2ltcGx5IGJlaW5nCkBAIC01NzQs MTUgKzU5MCwyMTAgQEAgaW50IHBzcl9nZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGludCBzb2NrZXQsCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBwc3Jfc2V0X2wzX2NibShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0LAotICAgICAgICAgICAgICAgICAgIHVp bnQ2NF90IGNibSwgZW51bSBjYm1fdHlwZSB0eXBlKQorLyogU2V0IHZhbHVlIGZ1bmN0aW9ucyAq Lworc3RhdGljIHVuc2lnbmVkIGludCBnZXRfY29zX251bShjb25zdCBzdHJ1Y3QgcHNyX3NvY2tl dF9pbmZvICppbmZvKQogewogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGdhdGhlcl92 YWxfYXJyYXkodWludDMyX3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBvbGRfY29zKQoreworICAgIHJldHVybiAtRUlOVkFMOworfQorCitzdGF0 aWMgaW50IGluc2VydF92YWxfdG9fYXJyYXkodWludDMyX3QgdmFsW10sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBjYm1fdHlwZSB0eXBlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5ld192YWwpCit7CisgICAgcmV0 dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgZmluZF9jb3MoY29uc3QgdWludDMyX3QgdmFs W10sIHVuc2lnbmVkIGludCBhcnJheV9sZW4sCisgICAgICAgICAgICAgICAgICAgIGVudW0gcHNy X2ZlYXRfdHlwZSBmZWF0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBw c3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgIHNwaW5sb2NrX3QgKnJl Zl9sb2NrKQoreworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZChyZWZfbG9jaykpOworCisgICAg cmV0dXJuIC1FTk9FTlQ7Cit9CisKK3N0YXRpYyBpbnQgcGlja19hdmFpbF9jb3MoY29uc3Qgc3Ry dWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bp bmxvY2tfdCAqcmVmX2xvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQz Ml90IHZhbFtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW51 bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZSkKK3sKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQo cmVmX2xvY2spKTsKKworICAgIHJldHVybiAtRU5PRU5UOworfQorCitzdGF0aWMgaW50IHdyaXRl X3Bzcl9tc3IodW5zaWduZWQgaW50IHNvY2tldCwgdW5zaWduZWQgaW50IGNvcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWwsIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5 cGUpCit7CisgICAgcmV0dXJuIC1FTk9FTlQ7Cit9CisKKy8qIFRoZSB3aG9sZSBzZXQgcHJvY2Vz cyBpcyBwcm90ZWN0ZWQgYnkgZG9tY3RsX2xvY2suICovCitpbnQgcHNyX3NldF92YWwoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKKyAgICAgICAgICAgICAgICB1aW50MzJf dCB2YWwsIGVudW0gY2JtX3R5cGUgdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgb2xkX2NvczsK KyAgICBpbnQgY29zLCByZXQ7CisgICAgdW5zaWduZWQgaW50ICpyZWY7CisgICAgdWludDMyX3Qg KnZhbF9hcnJheTsKKyAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvID0gZ2V0X3NvY2tl dF9pbmZvKHNvY2tldCk7CisgICAgdW5zaWduZWQgaW50IGFycmF5X2xlbjsKKyAgICBlbnVtIHBz cl9mZWF0X3R5cGUgZmVhdF90eXBlOworCisgICAgaWYgKCBJU19FUlIoaW5mbykgKQorICAgICAg ICByZXR1cm4gUFRSX0VSUihpbmZvKTsKKworICAgIGZlYXRfdHlwZSA9IHBzcl9jYm1fdHlwZV90 b19mZWF0X3R5cGUodHlwZSk7CisgICAgaWYgKCBmZWF0X3R5cGUgPiBBUlJBWV9TSVpFKGluZm8t PmZlYXR1cmVzKSB8fAorICAgICAgICAgIWluZm8tPmZlYXR1cmVzW2ZlYXRfdHlwZV0gKQorICAg ICAgICByZXR1cm4gLUVOT0VOVDsKKworICAgIC8qCisgICAgICogU3RlcCAwOgorICAgICAqIG9s ZF9jb3MgbWVhbnMgdGhlIENPUyBJRCBjdXJyZW50IGRvbWFpbiBpcyB1c2luZy4gQnkgZGVmYXVs dCwgaXQgaXMgMC4KKyAgICAgKgorICAgICAqIEZvciBldmVyeSBDT1MgSUQsIHRoZXJlIGlzIGEg cmVmZXJlbmNlIGNvdW50IHRvIHJlY29yZCBob3cgbWFueSBkb21haW5zCisgICAgICogYXJlIHVz aW5nIHRoZSBDT1MgcmVnaXN0ZXIgY29ycmVzcG9uZGluZyB0byB0aGlzIENPUyBJRC4KKyAgICAg KiAtIElmIHJlZltvbGRfY29zXSBpcyAwLCB0aGF0IG1lYW5zIHRoaXMgQ09TIGlzIG5vdCB1c2Vk IGJ5IGFueSBkb21haW4uCisgICAgICogLSBJZiByZWZbb2xkX2Nvc10gaXMgMSwgdGhhdCBtZWFu cyB0aGlzIENPUyBpcyBvbmx5IHVzZWQgYnkgY3VycmVudAorICAgICAqICAgZG9tYWluLgorICAg ICAqIC0gSWYgcmVmW29sZF9jb3NdIGlzIG1vcmUgdGhhbiAxLCB0aGF0IG1lYW4gbXVsdGlwbGUg ZG9tYWlucyBhcmUgdXNpbmcKKyAgICAgKiAgIHRoaXMgQ09TLgorICAgICAqLworICAgIG9sZF9j b3MgPSBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF07CisgICAgQVNTRVJUKG9sZF9jb3MgPCBN QVhfQ09TX1JFR19DTlQpOworCisgICAgcmVmID0gaW5mby0+Y29zX3JlZjsKKworICAgIC8qCisg ICAgICogU3RlcCAxOgorICAgICAqIEdhdGhlciBhIHZhbHVlIGFycmF5IHRvIHN0b3JlIGFsbCBm ZWF0dXJlcyBjb3NfcmVnX3ZhbFtvbGRfY29zXS4KKyAgICAgKiBBbmQsIHNldCB0aGUgaW5wdXQg bmV3IHZhbCBpbnRvIGFycmF5IGFjY29yZGluZyB0byB0aGUgZmVhdHVyZSdzCisgICAgICogcG9z aXRpb24gaW4gYXJyYXkuCisgICAgICovCisgICAgYXJyYXlfbGVuID0gZ2V0X2Nvc19udW0oaW5m byk7CisgICAgdmFsX2FycmF5ID0geHphbGxvY19hcnJheSh1aW50MzJfdCwgYXJyYXlfbGVuKTsK KyAgICBpZiAoICF2YWxfYXJyYXkgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIGlm ICggKHJldCA9IGdhdGhlcl92YWxfYXJyYXkodmFsX2FycmF5LCBhcnJheV9sZW4sIGluZm8sIG9s ZF9jb3MpKSAhPSAwICkKKyAgICAgICAgZ290byBmcmVlX2FycmF5OworCisgICAgaWYgKCAocmV0 ID0gaW5zZXJ0X3ZhbF90b19hcnJheSh2YWxfYXJyYXksIGFycmF5X2xlbiwgaW5mbywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXRfdHlwZSwgdHlwZSwgdmFsKSkgIT0g MCApCisgICAgICAgIGdvdG8gZnJlZV9hcnJheTsKKworICAgIHNwaW5fbG9jaygmaW5mby0+cmVm X2xvY2spOworCisgICAgLyoKKyAgICAgKiBTdGVwIDI6CisgICAgICogVHJ5IHRvIGZpbmQgaWYg dGhlcmUgaXMgYWxyZWFkeSBhIENPUyBJRCBvbiB3aGljaCBhbGwgZmVhdHVyZXMnIHZhbHVlcwor ICAgICAqIGFyZSBzYW1lIGFzIHRoZSBhcnJheS4gVGhlbiwgd2UgY2FuIHJldXNlIHRoaXMgQ09T IElELgorICAgICAqLworICAgIGNvcyA9IGZpbmRfY29zKHZhbF9hcnJheSwgYXJyYXlfbGVuLCBm ZWF0X3R5cGUsIGluZm8sICZpbmZvLT5yZWZfbG9jayk7CisgICAgaWYgKCBjb3MgPT0gb2xkX2Nv cyApCisgICAgeworICAgICAgICByZXQgPSAwOworICAgICAgICBnb3RvIHVubG9ja19mcmVlX2Fy cmF5OworICAgIH0KKworICAgIC8qCisgICAgICogU3RlcCAzOgorICAgICAqIElmIGZhaWwgdG8g ZmluZCwgd2UgbmVlZCBwaWNrIGFuIGF2YWlsYWJsZSBDT1MgSUQuCisgICAgICogSW4gZmFjdCwg b25seSBDT1MgSUQgd2hpY2ggcmVmIGlzIDEgb3IgMCBjYW4gYmUgcGlja2VkIGZvciBjdXJyZW50 CisgICAgICogZG9tYWluLiBJZiBvbGRfY29zIGlzIG5vdCAwIGFuZCBpdHMgcmVmPT0xLCB0aGF0 IG1lYW5zIG9ubHkgY3VycmVudAorICAgICAqIGRvbWFpbiBpcyB1c2luZyB0aGlzIG9sZF9jb3Mg SUQuIFNvLCB0aGlzIG9sZF9jb3MgSUQgY2VydGFpbmx5IGNhbgorICAgICAqIGJlIHJldXNlZCBi eSBjdXJyZW50IGRvbWFpbi4gUmVmPT0wIG1lYW5zIHRoZXJlIGlzIG5vIGFueSBkb21haW4KKyAg ICAgKiB1c2luZyB0aGlzIENPUyBJRC4gU28gaXQgY2FuIGJlIHVzZWQgZm9yIGN1cnJlbnQgZG9t YWluIHRvby4KKyAgICAgKi8KKyAgICBpZiAoIGNvcyA8IDAgKQorICAgIHsKKyAgICAgICAgY29z ID0gcGlja19hdmFpbF9jb3MoaW5mbywgJmluZm8tPnJlZl9sb2NrLCB2YWxfYXJyYXksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2xlbiwgb2xkX2NvcywgZmVhdF90eXBlKTsK KyAgICAgICAgaWYgKCBjb3MgPCAwICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0ID0gY29z OworICAgICAgICAgICAgZ290byB1bmxvY2tfZnJlZV9hcnJheTsKKyAgICAgICAgfQorCisgICAg ICAgIC8qCisgICAgICAgICAqIFN0ZXAgNDoKKyAgICAgICAgICogV3JpdGUgYWxsIGZlYXR1cmVz IE1TUnMgYWNjb3JkaW5nIHRvIHRoZSBDT1MgSUQuCisgICAgICAgICAqLworICAgICAgICByZXQg PSB3cml0ZV9wc3JfbXNyKHNvY2tldCwgY29zLCB2YWwsIGZlYXRfdHlwZSk7CisgICAgICAgIGlm ICggcmV0ICkKKyAgICAgICAgICAgIGdvdG8gdW5sb2NrX2ZyZWVfYXJyYXk7CisgICAgfQorCisg ICAgLyoKKyAgICAgKiBTdGVwIDU6CisgICAgICogRmluZCB0aGUgQ09TIElEIChmaW5kX2NvcyBy ZXN1bHQgaXMgJz49IDAnIG9yIGFuIGF2YWlsYWJsZSBDT1MgSUQgaXMKKyAgICAgKiBwaWNrZWQs IHRoZW4gdXBkYXRlIHJlZiBhY2NvcmRpbmcgdG8gQ09TIElELgorICAgICAqLworICAgIHJlZltj b3NdKys7CisgICAgQVNTRVJUKCFjb3MgfHwgcmVmW2Nvc10pOworICAgIEFTU0VSVCghb2xkX2Nv cyB8fCByZWZbb2xkX2Nvc10pOworICAgIHJlZltvbGRfY29zXS0tOworICAgIHNwaW5fdW5sb2Nr KCZpbmZvLT5yZWZfbG9jayk7CisKKyAgICAvKgorICAgICAqIFN0ZXAgNjoKKyAgICAgKiBTYXZl IHRoZSBDT1MgSUQgaW50byBjdXJyZW50IGRvbWFpbidzIHBzcl9jb3NfaWRzW10gc28gdGhhdCB3 ZSBjYW4ga25vdworICAgICAqIHdoaWNoIENPUyB0aGUgZG9tYWluIGlzIHVzaW5nIG9uIHRoZSBz b2NrZXQuIE9uZSBkb21haW4gY2FuIG9ubHkgdXNlCisgICAgICogb25lIENPUyBJRCBhdCBzYW1l IHRpbWUgb24gZWFjaCBzb2NrZXQuCisgICAgICovCisgICAgZC0+YXJjaC5wc3JfY29zX2lkc1tz b2NrZXRdID0gY29zOworCisgICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICByZXR1cm4gcmV0Owor CisgdW5sb2NrX2ZyZWVfYXJyYXk6CisgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9sb2NrKTsK KyBmcmVlX2FycmF5OgorICAgIHhmcmVlKHZhbF9hcnJheSk7CisgICAgcmV0dXJuIHJldDsKK30K KwogLyogQ2FsbGVkIHdpdGggZG9tYWluIGxvY2sgaGVsZCwgbm8gZXh0cmEgbG9jayBuZWVkZWQg Zm9yICdwc3JfY29zX2lkcycgKi8KIHN0YXRpYyB2b2lkIHBzcl9mcmVlX2NvcyhzdHJ1Y3QgZG9t YWluICpkKQogeworICAgIHVuc2lnbmVkIGludCBzb2NrZXQsIGNvczsKKworICAgIEFTU0VSVChz b2NrZXRfaW5mbyk7CisKKyAgICBpZiAoICFkLT5hcmNoLnBzcl9jb3NfaWRzICkKKyAgICAgICAg cmV0dXJuOworCisgICAgLyogRG9tYWluIGlzIGRlc3Ryb2llZCBzbyBpdHMgY29zX3JlZiBzaG91 bGQgYmUgZGVjcmVhc2VkLiAqLworICAgIGZvciAoIHNvY2tldCA9IDA7IHNvY2tldCA8IG5yX3Nv Y2tldHM7IHNvY2tldCsrICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8g KmluZm87CisKKyAgICAgICAgLyogY29zIDAgaXMgZGVmYXVsdCBvbmUgd2hpY2ggZG9lcyBub3Qg bmVlZCBiZSBoYW5kbGVkLiAqLworICAgICAgICBjb3MgPSBkLT5hcmNoLnBzcl9jb3NfaWRzW3Nv Y2tldF07CisgICAgICAgIGlmICggY29zID09IDAgKQorICAgICAgICAgICAgY29udGludWU7CisK KyAgICAgICAgaW5mbyA9IHNvY2tldF9pbmZvICsgc29ja2V0OworICAgICAgICBzcGluX2xvY2so JmluZm8tPnJlZl9sb2NrKTsKKyAgICAgICAgQVNTRVJUKCFjb3MgfHwgaW5mby0+Y29zX3JlZltj b3NdKTsKKyAgICAgICAgaW5mby0+Y29zX3JlZltjb3NdLS07CisgICAgICAgIHNwaW5fdW5sb2Nr KCZpbmZvLT5yZWZfbG9jayk7CisgICAgfQorCiAgICAgeGZyZWUoZC0+YXJjaC5wc3JfY29zX2lk cyk7CiAgICAgZC0+YXJjaC5wc3JfY29zX2lkcyA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20teDg2L3Bzci5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAppbmRleCA3 YzZkMzhhLi42NmQ1MjE4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCisr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKQEAgLTczLDggKzczLDggQEAgaW50IHBzcl9n ZXRfaW5mbyh1bnNpZ25lZCBpbnQgc29ja2V0LCBlbnVtIGNibV90eXBlIHR5cGUsCiAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGRhdGFbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbik7CiBpbnQg cHNyX2dldF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKICAgICAg ICAgICAgICAgICB1aW50MzJfdCAqdmFsLCBlbnVtIGNibV90eXBlIHR5cGUpOwotaW50IHBzcl9z ZXRfbDNfY2JtKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCi0gICAgICAg ICAgICAgICAgICAgdWludDY0X3QgY2JtLCBlbnVtIGNibV90eXBlIHR5cGUpOworaW50IHBzcl9z ZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCisgICAgICAgICAg ICAgICAgdWludDMyX3QgdmFsLCBlbnVtIGNibV90eXBlIHR5cGUpOwogCiBpbnQgcHNyX2RvbWFp bl9pbml0KHN0cnVjdCBkb21haW4gKmQpOwogdm9pZCBwc3JfZG9tYWluX2ZyZWUoc3RydWN0IGRv bWFpbiAqZCk7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=