From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v11 08/23] x86: refactor psr: L3 CAT: set value: implement framework. Date: Wed, 3 May 2017 16:44:08 +0800 Message-ID: <1493801063-38513-9-git-send-email-yi.y.sun@linux.intel.com> References: <1493801063-38513-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d5q2v-0000dR-11 for xen-devel@lists.xenproject.org; Wed, 03 May 2017 08:54:05 +0000 In-Reply-To: <1493801063-38513-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 ZC4KNS4gV3JpdGUgdGhlIGZlYXR1cmUncyBNU1JzIGFjY29yZGluZyB0byB0aGUgQ09TIElELgo2 LiBVcGRhdGUgcmVmIGFjY29yZGluZyB0byBDT1MgSUQuCjcuIFNhdmUgdGhlIENPUyBJRCBpbnRv IGN1cnJlbnQgZG9tYWluJ3MgcHNyX2Nvc19pZHNbc29ja2V0XSBzbyB0aGF0IHdlCiAgIGNhbiBr bm93IHdoaWNoIENPUyB0aGUgZG9tYWluIGlzIHVzaW5nIG9uIHRoZSBzb2NrZXQuCjguIFNldCBk b21faWRzIGJpdCBjb3JyZXNwb25kaW5nIHRvIHRoZSBkb21haW4gc28gdGhhdCB3ZSBjYW4ga25v dyB0aGUgZG9tYWluCiAgIGhhcyBiZWVuIHNldCBhbmQgdGhlIENPUyBJRCBvZiB0aGUgZG9tYWlu IGlzIHZhbGlkLgoKU28sIHNvbWUgZnVuY3Rpb25zIGFyZSBhYnN0cmFjdGVkIGFuZCB0aGUgY2Fs bGJhY2sgZnVuY3Rpb25zIHdpbGwgYmUKaW1wbGVtZW50ZWQgaW4gbmV4dCBwYXRjaGVzLgoKSGVy ZSBpcyBhbiBleGFtcGxlIHRvIHVuZGVyc3RhbmQgdGhlIHByb2Nlc3MuIFRoZSBDUFUgc3VwcG9y dHMKdHdvIGZlYXR1ZXJzLCBlLmcuIEwzIENBVCBhbmQgTDIgQ0FULiBVc2VyIHdhbnRzIHRvIHNl dCBMMyBDQVQKb2YgRG9tMSB0byAweDFmZi4KMS4gQXQgdGhlIGluaXRpYWwgdGltZSwgdGhlIG9s ZF9jb3Mgb2YgRG9tMSBpcyAwLiBUaGUgQ09TIHJlZ2lzdGVycyB2YWx1ZXMKYXJlIGJlbG93IGF0 IHRoaXMgdGltZS4KICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAg ICAgfCBDT1MgMCB8IENPUyAxIHwgQ09TIDIgfCAuLi4gfAogICAgICAgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KTDMgQ0FUICB8IDB4N2ZmIHwgMHg3ZmYgfCAweDdmZiB8IC4uLiB8 CiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMMiBDQVQgIHwgMHhmZiAg fCAweGZmICB8IDB4ZmYgIHwgLi4uIHwKICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCgoyLiBHYXRoZXIgdGhlIHZhbHVlIGFycmF5IGFuZCBpbnNlcnQgbmV3IHZhbHVlIGlu dG8gaXQ6CnZhbFswXTogMHgxZmYKdmFsWzFdOiAweGZmCgozLiBJdCBjYW5ub3QgZmluZCBhIG1h dGNoaW5nIENPUy4KCjQuIFBpY2sgQ09TIDEgdG8gc3RvcmUgdGhlIHZhbHVlIHNldC4KCjUuIFdy aXRlIHRoZSBMMyBDQVQgQ09TIDEgcmVnaXN0ZXJzLiBUaGUgQ09TIHJlZ2lzdGVycyB2YWx1ZXMg YXJlCmNoYW5nZWQgdG8gYmVsb3cgbm93LgogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAgICAgICB8IENPUyAwIHwgQ09TIDEgfCBDT1MgMiB8IC4uLiB8CiAgICAgICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMMyBDQVQgIHwgMHg3ZmYgfCAweDFmZiB8 IC4uLiAgIHwgLi4uIHwKICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkwy IENBVCAgfCAweGZmICB8IDB4ZmYgIHwgLi4uICAgfCAuLi4gfAogICAgICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCjYuIFRoZSByZWZbMV0gaXMgaW5jcmVhc2VkIHRvIDEgYmVj YXVzZSBEb20xIGlzIHVzaW5nIGl0IG5vdy4KCjcuIFNhdmUgMSB0byBEb20xJ3MgcHNyX2Nvc19p ZHNbc29ja2V0XS4KCjguIFNldCB0aGUgYml0IGluICdkb21faWRzW10nLgoKVGhlbiwgdXNlciB3 YW50cyB0byBzZXQgTDMgQ0FUIG9mIERvbTIgdG8gMHgxZmYgdG9vLiBUaGUgb2xkX2NvcwpvZiBE b20yIGlzIDAgdG9vLiBSZXBlYXQgYWJvdmUgZmxvdy4KClRoZSB2YWwgYXJyYXkgYXNzZW1ibGVk IGlzOgp2YWxbMF06IDB4MWZmCnZhbFsxXTogMHhmZgoKU28sIGl0IGNhbiBmaW5kIGEgbWF0Y2hp bmcgQ09TLCBDT1MgMS4gVGhlbiwgaXQgY2FuIHJldXNlIENPUyAxCmZvciBEb20yLgoKVGhlIHJl ZlsxXSBpcyBpbmNyZWFzZWQgdG8gMiBub3cgYmVjYXVzZSBib3RoIERvbTEgYW5kIERvbTIgYXJl CnVzaW5nIHRoaXMgQ09TIElELiBTZXQgMSB0byBEb20yJ3MgcHNyX2Nvc19pZHNbc29ja2V0XS4K ClRoZXJlIGlzIG9uZSB0aGluZyBuZWVkIHRvIGVtcGhhc2l6ZSB0aGF0IHdlIG5lZWQgcmVzdG9y ZSBkb21haW4ncyBDT1MgSUQgdG8KMCB3aGVuIHNvY2tldCBpcyBvZmZsaW5lLiBPdGhlcndpc2Us IGEgd3JvbmcgQ09TIElEIHdpbGwgYmUgdXNlZCB3aGVuIHRoZQpzb2NrZXQgaXMgb25saW5lIGFn YWluLiBUaGF0IG1heSBjYXVzZSB1c2VyIHNlZSB0aGUgd3JvbmcgQ0JNIHNob3duLiBCdXQgaXQK dGFrZXMgbXVjaCB0aW1lIHRvIGl0ZXJhdGUgYWxsIGRvbWFpbnMgdG8gcmVzdG9yZSBDT1MgSUQg dG8gMC4gU28sIHdlIGRlZmluZQphICdkb21faWRzW10nIHRvIHJlcHJlc2VudHMgYWxsIGRvbWFp bnMsIG9uZSBiaXQgY29ycmVzcG9uZHMgdG8gb25lIGRvbWFpbi4KSWYgdGhlIGJpdCBpcyAwIHdo ZW4gZW50ZXJpbmcgJ3Bzcl9jdHh0X3N3aXRjaF90bycsIHRoYXQgbWVhbnMgdGhpcyBpcyB0aGUK Zmlyc3QgdGltZSB0aGUgZG9tYWluIGlzIHN3aXRjaGVkIHRvIHRoaXMgc29ja2V0IG9yIGRvbWFp bidzIENPUyBJRCBoYXMgbm90CmJlZW4gc2V0IHNpbmNlIHRoZSBzb2NrZXQgaXMgb25saW5lLiBT bywgdGhlIENPUyBJRCBzZXQgdG8gQVNTT0MgcmVnaXN0ZXIgb24KdGhpcyBzb2NrZXQgc2hvdWxk IGJlIGRlZmF1bHQgdmFsdWUsIDAuIElmIG5vdCwgdGhhdCBtZWFucyB0aGUgZG9tYWluJ3MgQ09T CklEIGhhcyBiZWVuIHNldCB3aGVuIHRoZSBzb2NrZXQgd2FzIG9ubGluZS4gU28sIHRoaXMgQ09T IElEIGlzIHZhbGlkIGFuZCB3ZQpjYW4gZGlyZWN0bHkgdXNlIGl0LiBXZSByZXN0b3JlIHRoZSBk b21haW4ncyBDT1MgSUQgdG8gMCBpZiB0aGUgYml0CmNvcnJlc3BvbmRpbmcgdG8gdGhlIGRvbWFp biBpcyAwIGJ1dCB0aGUgZG9tYWluJ3MgQ09TIElEIGlzIG5vdCAwIHdoZW4KJ3Bzcl9nZXRfdmFs JyBpcyBjYWxsZWQuIFRoaXMgY2FuIGF2b2lkIENQVSBzZXJpYWxpemF0aW9uIGlmIHJlc3Rvcmlu ZyBhY3Rpb24KaXMgZXhlY3R1ZWQgaW4gJ3Bzcl9jdHh0X3N3aXRjaF90bycuCgpTaWduZWQtb2Zm LWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KLS0tCnYxMToKICAgIC0gZGVm aW5lICdkb21faWRzW10nIGFuZCBpbXBsZW1lbnQgcmVsYXRlZCBmbG93cy4KICAgIC0gcmVzdG9y ZSBkb21haW4gY29zIGlkIHRvIDAgaW4gJ3Bzcl9nZXRfdmFsJy4KICAgIC0gcmVuYW1lICd3cml0 ZV9wc3JfbXNyJyB0byAnd3JpdGVfcHNyX21zcnMnIGFuZCBjaGFuZ2UgaXRzIHBhcmFtZXRlcnMg dG8KICAgICAgaGFuZGxlIHZhbHVlIGFycmF5IHRoZSBmZWF0dXJlJ3MgYWxsIE1TUnMuCiAgICAt IGZpeCBjb2Rpbmcgc3R5bGUgaXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp CiAgICAtIGRvIG5vdCBuZWVkIGNoZWNrICdjb3MnIGluIEFTU0VSVC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdpbnNlcnRfdmFsX3RvX2FycmF5JyB0byAn aW5zZXJ0X3ZhbF9pbnRvX2FycmF5Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gcmVtb3ZlICdyZWZfbG9jaycgZnJvbSBwYXJhbWV0ZXIgbGlzdCBpbiAnZmluZF9jb3Mn IGFuZCAncGlja19hdmFpbF9jb3MnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSByZW1vdmUgQVNTRVJUIGNoZWNrIHRvICdyZWZfbG9jaycgaW4gJ2ZpbmRfY29zJyBhbmQg J3BpY2tfYXZhaWxfY29zJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g Zml4IGEgYnVnIGZvciBjaGVja2luZyAnZmVhdF90eXBlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gbW92ZSAnZnJlZV9hcnJheScgbGFiZWwuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSBjb21tZW50cyBhbmQgY29tbWl0IG1lc3Nh Z2UuCnYxMDoKICAgIC0gcmVzdG9yZSBkb21haW4gY29zIGlkIHRvIDAgd2hlbiBzb2NrZXQgaXMg b2ZmbGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hlY2sgJ3Bz cl9jYXRfb3AuZGF0YScgdG8gbWFrZSBzdXJlIG9ubHkgbG93ZXIgMzIgYml0cyBhcmUgdmFsaWQu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2Fy eSBmaXhlZCB3aWR0aCB0eXBlIG9mIHBhcmFtZXRlcnMgYW5kIHZhcmlhYmxlcy4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdpbnNlcnRfbmV3X3ZhbF90b19h cnJheScgdG8gJ2luc2VydF92YWxfdG9fYXJyYXknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSBpbnB1dCAncmVmX2xvY2snIHBvaW50ZXIgaW50byBmdW5jdGlvbnMgdG8g Y2hlY2sgaWYgaXQgaGFzIGJlZW4gbG9ja2VkLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSBhZGQgY29tbWVudCB0byBkZWNsYXJlIHRoZSBzZXQgcHJvY2VzcyBpcyBwcm90 ZWN0ZWQgYnkgJ2RvbWN0bF9sb2NrJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gY2hlY2sgJ2ZlYXRfdHlwZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp CiAgICAtIHJlbW92ZSAnZmVhdF9tYXNrJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGNyaXRlcmlhIG9mIEFTU0VSVC4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGZsb3cgb2YgJ3Bzcl9zZXRfdmFs JyB0byBhdm9pZCAnZ290bycgZm9yIHN1Y2Nlc3NmdWwgY2FzZXMuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIHVzZSBBU1NFUlQgdG8gY2hlY2sgJ3NvY2tldF9pbmZvJyBp biAncHNyX2ZyZWVfY29zJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g cmVtb3ZlIHVubmVjZXNzYXJ5IGNvbW1lbnQgaW4gJ3Bzcl9mcmVlX2NvcycuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY5OgogICAgLSB1c2UgZ290byBzdHlsZSBlcnJvciBoYW5k bGluZyBpbiAncHNyX3NldF92YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAt IHVzZSBBU1NFUlQgZm9yIGNoZWNraW5nIG9sZF9jb3MuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2Vp IExpdSBhbmQgSmFuIEJldWxpY2gpCiAgICAtIGZpeCBjb2Rpbmcgc3R5bGUgaXNzdWUuCiAgICAg IChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0gcmVuYW1lICdhc3NlbWJsZV92YWxfYXJyYXkn IHRvICdjb21iaW5lX3ZhbF9hcnJheScgaW4gcGVydmlvdXMgcGF0Y2guCiAgICAgIChzdWdnZXN0 ZWQgYnkgV2VpIExpdSkKICAgIC0gdXNlICdzcGluX2lzX2xvY2tlZCcgdG8gY2hlY2sgcmVmX2xv Y2suCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAgLSBhZGQgYW4gaW5wdXQgcGFy YW1ldGVyICdhcnJheV9sZW4nIGZvciAnd3JpdGVfcHNyX21zcicuCiAgICAtIGNoZWNrICdzb2Nr ZXRfaW5mbycgYW5kICdwc3JfY29zX2lkcycgaW4gdGhpcyBwYXRjaC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5IHBhdGNoIHRpdGxlIHRvIGluZGljYXRlICdM MyBDQVQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBmaXggY29tbWl0 IG1lc3NhZ2Ugd29yZHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNo YW5nZSAnYXNzZW1ibGVfdmFsX2FycmF5JyB0byAnZ2F0aGVyX3ZhbF9hcnJheScuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSAnc2V0X25ld192YWxfdG9fYXJy YXknIHRvICdpbnNlcnRfbmV3X3ZhbF90b19hcnJheScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIGNoYW5nZSBwYXJhbWV0ZXIgJ20nIG9mICdpbnNlcnRfbmV3X3ZhbF90 b19hcnJheScgdG8gJ25ld192YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSBjaGFuZ2UgJ3dyaXRlX3Bzcl9tc3InIHRvICd3cml0ZV9wc3JfbXNycycuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNvcnJlY3QgY29tbWVudHMuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2FyeSBjb21tZW50 cy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGNvbmRpdGlv bnMgYWZ0ZXIgJ2ZpbmRfY29zJyB0byBzYXZlIGEgbGV2ZWwgb2YgaW5kZW50YXRpb24uCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCAnQVNTRVJUKCFvbGRfY29zIHx8 IHJlZltvbGRfY29zXSknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBt b3ZlIEFTU0VSVCgpIGNoZWNrIGludG8gbG9ja2VkIHJlZ2lvbi4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gcmVwbGFjZSBwYXJhbWV0ZXIgJyp2YWwnIHRvICd2YWxbXScg aW4gc29tZSBmdW5jdGlvbnMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IGNoYW5nZSAnd3JpdGVfcHNyX21zcicgcGFyYW1ldGVycyB0byBwcmVwYXJlIHRvIG9ubHkgc2V0 IG9uZSBuZXcgdmFsdWUKICAgICAgZm9yIG9uZSBmZWF0dXJlLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2VzIGFib3V0ICd1aW50NjRfdCcgdG8gJ3VpbnQzMl90 Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRkIGV4cGxhbmF0aW9u IGFib3V0IGNvbnRleHQgc3dpdGNoLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2 NToKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSByZXR1cm4gYW4gZXJyb3IgZm9yIGFsbCBoZWxwZXIgZnVuY3Rpb25zIGlu IHNldCBmbG93LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUg dW5uZWNlc3NhcnkgY2FzdC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g ZGl2aWRlICdnZXRfb2xkX3NldF9uZXcnIHRvIHR3byBmdW5jdGlvbnMsICdhc3NlbWJsZV92YWxf YXJyYXknIGFuZAogICAgICAnc2V0X25ld192YWxfdG9fYXJyYXknLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgY29tbWVudHMuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIGFkanVzdCBjb2RlIGZvcm1hdC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlICdhbGxvY19uZXdfY29zJyB0byAncGlja19h dmFpbF9jb3MnIHRvIG1ha2UgbmFtZSBhY2N1cmF0ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gY2hlY2sgZmVhdHVyZSB0eXBlIHdoZW4gZW50ZXJpbmcgJ3Bzcl9zZXRf dmFsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gdXNlIEFTU0VSVCB0 byBjaGVjayByZWYuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbmFt ZSAnZGF0W10nIHRvICdkYXRhW10nLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2 NDoKICAgIC0gY3JlYXRlIHRoaXMgcGF0Y2ggdG8gbWFrZSBjb2RlcyBlYXNpZXIgdG8gdW5kZXJz dGFuZC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKLS0tCiB4ZW4vYXJjaC94ODYv ZG9tY3RsLmMgICAgIHwgIDE4ICsrLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyAgICAgICAgfCAyMzkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogeGVuL2luY2x1 ZGUvYXNtLXg4Ni9wc3IuaCB8ICAgNCArLQogMyBmaWxlcyBjaGFuZ2VkLCAyNDEgaW5zZXJ0aW9u cygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5j IGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCmluZGV4IDViNjJjNWMuLjEyNGExYzYgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYworKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKQEAg LTE0MTEsMjEgKzE0MTEsMjEgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKICAgICAgICAgICAgIHVp bnQzMl90IHZhbDMyOwogCiAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9M M19DQk06Ci0gICAgICAgICAgICByZXQgPSBwc3Jfc2V0X2wzX2NibShkLCBkb21jdGwtPnUucHNy X2NhdF9vcC50YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwt PnUucHNyX2NhdF9vcC5kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNS X0NCTV9UWVBFX0wzKTsKKyAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+ dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0 bC0+dS5wc3JfY2F0X29wLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1Jf Q0JNX1RZUEVfTDMpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBYRU5fRE9N Q1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NPREU6Ci0gICAgICAgICAgICByZXQgPSBwc3Jfc2V0X2wz X2NibShkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUFNSX0NCTV9UWVBFX0wzX0NPREUpOworICAgICAgICAgICAgcmV0 ID0gcHNyX3NldF92YWwoZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MM19DT0RFKTsKICAgICAgICAgICAg IGJyZWFrOwogCiAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19EQVRB OgotICAgICAgICAgICAgcmV0ID0gcHNyX3NldF9sM19jYm0oZCwgZG9tY3RsLT51LnBzcl9jYXRf b3AudGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBz cl9jYXRfb3AuZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1f VFlQRV9MM19EQVRBKTsKKyAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+ dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0 bC0+dS5wc3JfY2F0X29wLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1Jf Q0JNX1RZUEVfTDNfREFUQSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFhF Tl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ0JNOgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IDFiNzgxZTEuLjc2NTg3ODYgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94ODYvcHNyLmMKQEAgLTEx OCwxMSArMTE4LDEzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyB7CiAgKiAgICAg ICAgICAgICBDT1MgSUQuIEV2ZXJ5IGVudHJ5IG9mIGNvc19yZWYgY29ycmVzcG9uZHMgdG8gb25l IENPUyBJRC4KICAqLwogc3RydWN0IHBzcl9zb2NrZXRfaW5mbyB7Ci0gICAgYm9vbCBmZWF0X2lu aXQ7Ci0gICAgc3BpbmxvY2tfdCByZWZfbG9jazsKICAgICAvKiBGZWF0dXJlIGFycmF5J3MgaW5k ZXggaXMgJ2VudW0gcHNyX2ZlYXRfdHlwZScgd2hpY2ggaXMgc2FtZSBhcyAncHJvcHMnICovCiAg ICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdHVyZXNbUFNSX1NPQ0tFVF9GRUFUX05VTV07CisgICAg Ym9vbCBmZWF0X2luaXQ7CiAgICAgdW5zaWduZWQgaW50IGNvc19yZWZbTUFYX0NPU19SRUdfQ05U XTsKKyAgICBzcGlubG9ja190IHJlZl9sb2NrOworICAgIC8qIEV2ZXJ5IGJpdCBjb3JyZXNwb25k cyB0byBhIGRvbWFpbi4gSW5kZXggaXMgZG9tYWluX2lkLiAqLworICAgIERFQ0xBUkVfQklUTUFQ KGRvbV9pZHMsIERPTUlEX0lETEUgKyAxKTsKIH07CiAKIHN0cnVjdCBwc3JfYXNzb2MgewpAQCAt MTc4LDYgKzE4MCwxMCBAQCBzdGF0aWMgdm9pZCBmcmVlX3NvY2tldF9yZXNvdXJjZXModW5zaWdu ZWQgaW50IHNvY2tldCkKICAgICB9CiAKICAgICBpbmZvLT5mZWF0X2luaXQgPSBmYWxzZTsKKwor ICAgIG1lbXNldChpbmZvLT5jb3NfcmVmLCAwLCBNQVhfQ09TX1JFR19DTlQgKiBzaXplb2YodW5z aWduZWQgaW50KSk7CisKKyAgICBtZW1zZXQoaW5mby0+ZG9tX2lkcywgMCwgKChET01JRF9JRExF ICsgMSkgKyA3KSAvIDgpOwogfQogCiBzdGF0aWMgZW51bSBwc3JfZmVhdF90eXBlIHBzcl9jYm1f dHlwZV90b19mZWF0X3R5cGUoZW51bSBjYm1fdHlwZSB0eXBlKQpAQCAtNDQ5LDExICs0NTUsMTkg QEAgdm9pZCBwc3JfY3R4dF9zd2l0Y2hfdG8oc3RydWN0IGRvbWFpbiAqZCkKIAogICAgIC8qIElE TEUgZG9tYWluJ3MgJ3Bzcl9jb3NfaWRzJyBpcyBOVUxMIHNvIHdlIHNldCBkZWZhdWx0IHZhbHVl IGZvciBpdC4gKi8KICAgICBpZiAoIHBzcmEtPmNvc19tYXNrICkKLSAgICAgICAgcHNyX2Fzc29j X2NvcygmcmVnLAotICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gucHNyX2Nvc19pZHMgPwot ICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gucHNyX2Nvc19pZHNbY3B1X3RvX3NvY2tldChz bXBfcHJvY2Vzc29yX2lkKCkpXSA6Ci0gICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAg ICAgICAgICAgICAgICBwc3JhLT5jb3NfbWFzayk7CisgICAgeworICAgICAgICB1bnNpZ25lZCBp bnQgc29ja2V0ID0gY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpOworICAgICAgICBz dHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvID0gc29ja2V0X2luZm8gKyBzb2NrZXQ7CisgICAg ICAgIHVuc2lnbmVkIGludCBjb3MgPSAwOworCisgICAgICAgIGlmICggZC0+YXJjaC5wc3JfY29z X2lkcyApCisgICAgICAgICAgICBjb3MgPSBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF07CisK KyAgICAgICAgaWYgKCB1bmxpa2VseSghdGVzdF9iaXQoZC0+ZG9tYWluX2lkLCBpbmZvLT5kb21f aWRzKSkgKQorICAgICAgICAgICAgY29zID0gMDsKKworICAgICAgICBwc3JfYXNzb2NfY29zKCZy ZWcsIGNvcywgcHNyYS0+Y29zX21hc2spOworICAgIH0KIAogICAgIGlmICggcmVnICE9IHBzcmEt PnZhbCApCiAgICAgewpAQCAtNTI5LDYgKzU0MywxMCBAQCBpbnQgcHNyX2dldF92YWwoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKICAgICBpZiAoICFmZWF0IHx8ICFmZWF0 X3Byb3BzW2ZlYXRfdHlwZV0gKQogICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAorICAgIGlmICgg IXRlc3RfYml0KGQtPmRvbWFpbl9pZCwgc29ja2V0X2luZm9bc29ja2V0XS5kb21faWRzKSAmJgor ICAgICAgICAgZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdICkKKyAgICAgICAgZC0+YXJjaC5w c3JfY29zX2lkc1tzb2NrZXRdID0gMDsKKwogICAgIGNvcyA9IGQtPmFyY2gucHNyX2Nvc19pZHNb c29ja2V0XTsKICAgICAvKgogICAgICAqIElmIGlucHV0IGNvcyBleGNlZWRzIGN1cnJlbnQgZmVh dHVyZSdzIGNvc19tYXgsIHdlIHNob3VsZCByZXR1cm4gaXRzCkBAIC01NDgsMTUgKzU2NiwyMTgg QEAgaW50IHBzcl9nZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQs CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBwc3Jfc2V0X2wzX2NibShzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBpbnQgc29ja2V0LAotICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNibSwg ZW51bSBjYm1fdHlwZSB0eXBlKQorLyogU2V0IHZhbHVlIGZ1bmN0aW9ucyAqLworc3RhdGljIHVu c2lnbmVkIGludCBnZXRfY29zX251bShjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZv KQogewogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGdhdGhlcl92YWxfYXJyYXkodWlu dDMyX3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFy cmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHNyX3Nv Y2tldF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBvbGRfY29zKQoreworICAgIHJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IGluc2Vy dF92YWxfaW50b19hcnJheSh1aW50MzJfdCB2YWxbXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5ld192YWwpCit7CisgICAgcmV0 dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgZmluZF9jb3MoY29uc3QgdWludDMyX3QgdmFs W10sIHVuc2lnbmVkIGludCBhcnJheV9sZW4sCisgICAgICAgICAgICAgICAgICAgIGVudW0gcHNy X2ZlYXRfdHlwZSBmZWF0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBw c3Jfc29ja2V0X2luZm8gKmluZm8pCit7CisgICAgcmV0dXJuIC1FTk9FTlQ7Cit9CisKK3N0YXRp YyBpbnQgcGlja19hdmFpbF9jb3MoY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgdmFsW10sIHVuc2lnbmVk IGludCBhcnJheV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBv bGRfY29zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVh dF90eXBlKQoreworICAgIHJldHVybiAtRU5PRU5UOworfQorCitzdGF0aWMgaW50IHdyaXRlX3Bz cl9tc3JzKHVuc2lnbmVkIGludCBzb2NrZXQsIHVuc2lnbmVkIGludCBjb3MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbFtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuLAor ICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlKQor eworICAgIHJldHVybiAtRU5PRU5UOworfQorCisvKiBUaGUgd2hvbGUgc2V0IHByb2Nlc3MgaXMg cHJvdGVjdGVkIGJ5IGRvbWN0bF9sb2NrLiAqLworaW50IHBzcl9zZXRfdmFsKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCisgICAgICAgICAgICAgICAgdWludDY0X3QgbmV3 X3ZhbCwgZW51bSBjYm1fdHlwZSB0eXBlKQoreworICAgIHVuc2lnbmVkIGludCBvbGRfY29zOwor ICAgIGludCBjb3MsIHJldDsKKyAgICB1bnNpZ25lZCBpbnQgKnJlZjsKKyAgICB1aW50MzJfdCAq dmFsX2FycmF5LCB2YWw7CisgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9IGdldF9z b2NrZXRfaW5mbyhzb2NrZXQpOworICAgIHVuc2lnbmVkIGludCBhcnJheV9sZW47CisgICAgZW51 bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZTsKKworICAgIGlmICggSVNfRVJSKGluZm8pICkKKyAg ICAgICAgcmV0dXJuIFBUUl9FUlIoaW5mbyk7CisKKyAgICBpZiAoIG5ld192YWwgIT0gKHVpbnQz Ml90KW5ld192YWwgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHZhbCA9IG5ld192 YWw7CisKKyAgICBmZWF0X3R5cGUgPSBwc3JfY2JtX3R5cGVfdG9fZmVhdF90eXBlKHR5cGUpOwor ICAgIGlmICggZmVhdF90eXBlID49IEFSUkFZX1NJWkUoaW5mby0+ZmVhdHVyZXMpIHx8CisgICAg ICAgICAhaW5mby0+ZmVhdHVyZXNbZmVhdF90eXBlXSApCisgICAgICAgIHJldHVybiAtRU5PRU5U OworCisgICAgLyoKKyAgICAgKiBTdGVwIDA6CisgICAgICogb2xkX2NvcyBtZWFucyB0aGUgQ09T IElEIGN1cnJlbnQgZG9tYWluIGlzIHVzaW5nLiBCeSBkZWZhdWx0LCBpdCBpcyAwLgorICAgICAq CisgICAgICogRm9yIGV2ZXJ5IENPUyBJRCwgdGhlcmUgaXMgYSByZWZlcmVuY2UgY291bnQgdG8g cmVjb3JkIGhvdyBtYW55IGRvbWFpbnMKKyAgICAgKiBhcmUgdXNpbmcgdGhlIENPUyByZWdpc3Rl ciBjb3JyZXNwb25kaW5nIHRvIHRoaXMgQ09TIElELgorICAgICAqIC0gSWYgcmVmW29sZF9jb3Nd IGlzIDAsIHRoYXQgbWVhbnMgdGhpcyBDT1MgaXMgbm90IHVzZWQgYnkgYW55IGRvbWFpbi4KKyAg ICAgKiAtIElmIHJlZltvbGRfY29zXSBpcyAxLCB0aGF0IG1lYW5zIHRoaXMgQ09TIGlzIG9ubHkg dXNlZCBieSBjdXJyZW50CisgICAgICogICBkb21haW4uCisgICAgICogLSBJZiByZWZbb2xkX2Nv c10gaXMgbW9yZSB0aGFuIDEsIHRoYXQgbWVhbiBtdWx0aXBsZSBkb21haW5zIGFyZSB1c2luZwor ICAgICAqICAgdGhpcyBDT1MuCisgICAgICovCisgICAgb2xkX2NvcyA9IGQtPmFyY2gucHNyX2Nv c19pZHNbc29ja2V0XTsKKyAgICBBU1NFUlQob2xkX2NvcyA8IE1BWF9DT1NfUkVHX0NOVCk7CisK KyAgICByZWYgPSBpbmZvLT5jb3NfcmVmOworCisgICAgLyoKKyAgICAgKiBTdGVwIDE6CisgICAg ICogR2F0aGVyIGEgdmFsdWUgYXJyYXkgdG8gc3RvcmUgYWxsIGZlYXR1cmVzIGNvc19yZWdfdmFs W29sZF9jb3NdLgorICAgICAqIEFuZCwgc2V0IHRoZSBpbnB1dCBuZXcgdmFsIGludG8gYXJyYXkg YWNjb3JkaW5nIHRvIHRoZSBmZWF0dXJlJ3MKKyAgICAgKiBwb3NpdGlvbiBpbiBhcnJheS4KKyAg ICAgKi8KKyAgICBhcnJheV9sZW4gPSBnZXRfY29zX251bShpbmZvKTsKKyAgICB2YWxfYXJyYXkg PSB4emFsbG9jX2FycmF5KHVpbnQzMl90LCBhcnJheV9sZW4pOworICAgIGlmICggIXZhbF9hcnJh eSApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgaWYgKCAocmV0ID0gZ2F0aGVyX3Zh bF9hcnJheSh2YWxfYXJyYXksIGFycmF5X2xlbiwgaW5mbywgb2xkX2NvcykpICE9IDAgKQorICAg ICAgICBnb3RvIGZyZWVfYXJyYXk7CisKKyAgICBpZiAoIChyZXQgPSBpbnNlcnRfdmFsX2ludG9f YXJyYXkodmFsX2FycmF5LCBhcnJheV9sZW4sIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZlYXRfdHlwZSwgdHlwZSwgdmFsKSkgIT0gMCApCisgICAgICAgIGdv dG8gZnJlZV9hcnJheTsKKworICAgIHNwaW5fbG9jaygmaW5mby0+cmVmX2xvY2spOworCisgICAg LyoKKyAgICAgKiBTdGVwIDI6CisgICAgICogVHJ5IHRvIGZpbmQgaWYgdGhlcmUgaXMgYWxyZWFk eSBhIENPUyBJRCBvbiB3aGljaCBhbGwgZmVhdHVyZXMnIHZhbHVlcworICAgICAqIGFyZSBzYW1l IGFzIHRoZSBhcnJheS4gVGhlbiwgd2UgY2FuIHJldXNlIHRoaXMgQ09TIElELgorICAgICAqLwor ICAgIGNvcyA9IGZpbmRfY29zKHZhbF9hcnJheSwgYXJyYXlfbGVuLCBmZWF0X3R5cGUsIGluZm8p OworICAgIGlmICggY29zID09IG9sZF9jb3MgKQorICAgIHsKKyAgICAgICAgcmV0ID0gMDsKKyAg ICAgICAgZ290byB1bmxvY2tfZnJlZV9hcnJheTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFN0 ZXAgMzoKKyAgICAgKiBJZiBmYWlsIHRvIGZpbmQsIHdlIG5lZWQgcGljayBhbiBhdmFpbGFibGUg Q09TIElELgorICAgICAqIEluIGZhY3QsIG9ubHkgQ09TIElEIHdoaWNoIHJlZiBpcyAxIG9yIDAg Y2FuIGJlIHBpY2tlZCBmb3IgY3VycmVudAorICAgICAqIGRvbWFpbi4gSWYgb2xkX2NvcyBpcyBu b3QgMCBhbmQgaXRzIHJlZj09MSwgdGhhdCBtZWFucyBvbmx5IGN1cnJlbnQKKyAgICAgKiBkb21h aW4gaXMgdXNpbmcgdGhpcyBvbGRfY29zIElELiBTbywgdGhpcyBvbGRfY29zIElEIGNlcnRhaW5s eSBjYW4KKyAgICAgKiBiZSByZXVzZWQgYnkgY3VycmVudCBkb21haW4uIFJlZj09MCBtZWFucyB0 aGVyZSBpcyBubyBhbnkgZG9tYWluCisgICAgICogdXNpbmcgdGhpcyBDT1MgSUQuIFNvIGl0IGNh biBiZSB1c2VkIGZvciBjdXJyZW50IGRvbWFpbiB0b28uCisgICAgICovCisgICAgaWYgKCBjb3Mg PCAwICkKKyAgICB7CisgICAgICAgIGNvcyA9IHBpY2tfYXZhaWxfY29zKGluZm8sIHZhbF9hcnJh eSwgYXJyYXlfbGVuLCBvbGRfY29zLCBmZWF0X3R5cGUpOworICAgICAgICBpZiAoIGNvcyA8IDAg KQorICAgICAgICB7CisgICAgICAgICAgICByZXQgPSBjb3M7CisgICAgICAgICAgICBnb3RvIHVu bG9ja19mcmVlX2FycmF5OworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogU3Rl cCA0OgorICAgICAgICAgKiBXcml0ZSB0aGUgZmVhdHVyZSdzIE1TUnMgYWNjb3JkaW5nIHRvIHRo ZSBDT1MgSUQuCisgICAgICAgICAqLworICAgICAgICByZXQgPSB3cml0ZV9wc3JfbXNycyhzb2Nr ZXQsIGNvcywgdmFsX2FycmF5LCBhcnJheV9sZW4sIGZlYXRfdHlwZSk7CisgICAgICAgIGlmICgg cmV0ICkKKyAgICAgICAgICAgIGdvdG8gdW5sb2NrX2ZyZWVfYXJyYXk7CisgICAgfQorCisgICAg LyoKKyAgICAgKiBTdGVwIDU6CisgICAgICogRmluZCB0aGUgQ09TIElEIChmaW5kX2NvcyByZXN1 bHQgaXMgJz49IDAnIG9yIGFuIGF2YWlsYWJsZSBDT1MgSUQgaXMKKyAgICAgKiBwaWNrZWQsIHRo ZW4gdXBkYXRlIHJlZiBhY2NvcmRpbmcgdG8gQ09TIElELgorICAgICAqLworICAgIHJlZltjb3Nd Kys7CisgICAgQVNTRVJUKCFjb3MgfHwgcmVmW2Nvc10pOworICAgIEFTU0VSVCghb2xkX2NvcyB8 fCByZWZbb2xkX2Nvc10pOworICAgIHJlZltvbGRfY29zXS0tOworICAgIHNwaW5fdW5sb2NrKCZp bmZvLT5yZWZfbG9jayk7CisKKyAgICAvKgorICAgICAqIFN0ZXAgNjoKKyAgICAgKiBTYXZlIHRo ZSBDT1MgSUQgaW50byBjdXJyZW50IGRvbWFpbidzIHBzcl9jb3NfaWRzW10gc28gdGhhdCB3ZSBj YW4ga25vdworICAgICAqIHdoaWNoIENPUyB0aGUgZG9tYWluIGlzIHVzaW5nIG9uIHRoZSBzb2Nr ZXQuIE9uZSBkb21haW4gY2FuIG9ubHkgdXNlCisgICAgICogb25lIENPUyBJRCBhdCBzYW1lIHRp bWUgb24gZWFjaCBzb2NrZXQuCisgICAgICovCisgICAgZC0+YXJjaC5wc3JfY29zX2lkc1tzb2Nr ZXRdID0gY29zOworCisgICAgLyoKKyAgICAgKiBTdGVwIDc6CisgICAgICogVGhlbiwgc2V0IHRo ZSBkb21faWRzIGJpdCB3aGljaCBjb3JyZXNwb25kcyB0byBkb21haW5faWQgdG8gbWFyayB0aGlz CisgICAgICogZG9tYWluIGhhcyBiZWVuIHNldCBhbmQgdGhlIENPUyBJRCBvZiB0aGUgZG9tYWlu IGlzIHZhbGlkLgorICAgICAqLworICAgIHNldF9iaXQoZC0+ZG9tYWluX2lkLCBpbmZvLT5kb21f aWRzKTsKKworIGZyZWVfYXJyYXk6CisgICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICByZXR1cm4g cmV0OworCisgdW5sb2NrX2ZyZWVfYXJyYXk6CisgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9s b2NrKTsKKyAgICB4ZnJlZSh2YWxfYXJyYXkpOworICAgIHJldHVybiByZXQ7Cit9CisKIC8qIENh bGxlZCB3aXRoIGRvbWFpbiBsb2NrIGhlbGQsIG5vIGV4dHJhIGxvY2sgbmVlZGVkIGZvciAncHNy X2Nvc19pZHMnICovCiBzdGF0aWMgdm9pZCBwc3JfZnJlZV9jb3Moc3RydWN0IGRvbWFpbiAqZCkK IHsKKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0LCBjb3M7CisKKyAgICBBU1NFUlQoc29ja2V0X2lu Zm8pOworCisgICAgaWYgKCAhZC0+YXJjaC5wc3JfY29zX2lkcyApCisgICAgICAgIHJldHVybjsK KworICAgIC8qIERvbWFpbiBpcyBkZXN0cm9pZWQgc28gaXRzIGNvc19yZWYgc2hvdWxkIGJlIGRl Y3JlYXNlZC4gKi8KKyAgICBmb3IgKCBzb2NrZXQgPSAwOyBzb2NrZXQgPCBucl9zb2NrZXRzOyBz b2NrZXQrKyApCisgICAgeworICAgICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvOwor CisgICAgICAgIC8qIGNvcyAwIGlzIGRlZmF1bHQgb25lIHdoaWNoIGRvZXMgbm90IG5lZWQgYmUg aGFuZGxlZC4gKi8KKyAgICAgICAgY29zID0gZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdOwor ICAgICAgICBpZiAoIGNvcyA9PSAwICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg IGluZm8gPSBzb2NrZXRfaW5mbyArIHNvY2tldDsKKyAgICAgICAgc3Bpbl9sb2NrKCZpbmZvLT5y ZWZfbG9jayk7CisgICAgICAgIEFTU0VSVChpbmZvLT5jb3NfcmVmW2Nvc10pOworICAgICAgICBp bmZvLT5jb3NfcmVmW2Nvc10tLTsKKyAgICAgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9sb2Nr KTsKKworICAgICAgICBjbGVhcl9iaXQoZC0+ZG9tYWluX2lkLCBpbmZvLT5kb21faWRzKTsKKyAg ICB9CisKICAgICB4ZnJlZShkLT5hcmNoLnBzcl9jb3NfaWRzKTsKICAgICBkLT5hcmNoLnBzcl9j b3NfaWRzID0gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgg Yi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCmluZGV4IDdjNmQzOGEuLmFlNTJkODUgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9wc3IuaApAQCAtNzMsOCArNzMsOCBAQCBpbnQgcHNyX2dldF9pbmZvKHVuc2lnbmVkIGludCBz b2NrZXQsIGVudW0gY2JtX3R5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGF0 YVtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuKTsKIGludCBwc3JfZ2V0X3ZhbChzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0LAogICAgICAgICAgICAgICAgIHVpbnQzMl90ICp2 YWwsIGVudW0gY2JtX3R5cGUgdHlwZSk7Ci1pbnQgcHNyX3NldF9sM19jYm0oc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBj Ym0sIGVudW0gY2JtX3R5cGUgdHlwZSk7CitpbnQgcHNyX3NldF92YWwoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgaW50IHNvY2tldCwKKyAgICAgICAgICAgICAgICB1aW50NjRfdCB2YWwsIGVu dW0gY2JtX3R5cGUgdHlwZSk7CiAKIGludCBwc3JfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAq ZCk7CiB2b2lkIHBzcl9kb21haW5fZnJlZShzdHJ1Y3QgZG9tYWluICpkKTsKLS0gCjEuOS4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==