From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v12 08/23] x86: refactor psr: L3 CAT: set value: implement framework. Date: Wed, 14 Jun 2017 09:12:41 +0800 Message-ID: <1497402776-22348-9-git-send-email-yi.y.sun@linux.intel.com> References: <1497402776-22348-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 1dKx3y-0007Q3-82 for xen-devel@lists.xenproject.org; Wed, 14 Jun 2017 01:25:38 +0000 In-Reply-To: <1497402776-22348-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 LWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KLS0tCnYxMjoKICAgIC0gcmVt b3ZlIHRoZSBtZW1lYmVycyBwb3NpdGlvbiBjaGFuZ2VzIGluICdwc3Jfc29ja2V0X2luZm8nLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW5hbWUgJ2RvbV9pZHMnIHRv ICdkb21fc2V0Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2FsbCAn Yml0bWFwX3plcm8nIHRvIGNsZWFyIGJpdG1hcC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gY29tYmluZSB0d28gaWYoKS1zIGluICdwc3JfY3R4dF9zd2l0Y2hfdG8nIGFu ZCBhZGQgY29tbWVudC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVt b3ZlIHJlZHVuZGFudCBjaGVjayBpbiAncHNyX2dldF92YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQogICAgLSB1c2UgJ2RvbWFpbl9sb2NrKCknIHRvIHByb3RlY3QgJ3Bzcl9j b3NfaWRzJyBzbyB0aGF0IHRoZSBjb2RlcyBkbyBub3QKICAgICAgZGVwZW5kIG9uICdkb21jdGxf bG9jaycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkanVzdCBjb2Rl cyB0byBhdm9pZCBjYXN0IGluICdwc3Jfc2V0X3ZhbCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIGFkanVzdCBjb2RlcyB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiBlcnJv ciBwYXRocyBpbiAncHNyX3NldF92YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQogICAgLSBjbGVhciB0aGUgZG9tYWluIGJpdCBhbnl3YXkgaW4gJ3Bzcl9mcmVlX2NvcycuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHVzZSB0aGUgZGVmYXVsdCBjb3Mg aWQgd2hlbiBnZXR0aW5nIG9sZF9jb3MgaW4gJ3Bzcl9zZXRfdmFsJy4KdjExOgogICAgLSBkZWZp bmUgJ2RvbV9pZHNbXScgYW5kIGltcGxlbWVudCByZWxhdGVkIGZsb3dzLgogICAgLSByZXN0b3Jl IGRvbWFpbiBjb3MgaWQgdG8gMCBpbiAncHNyX2dldF92YWwnLgogICAgLSByZW5hbWUgJ3dyaXRl X3Bzcl9tc3InIHRvICd3cml0ZV9wc3JfbXNycycgYW5kIGNoYW5nZSBpdHMgcGFyYW1ldGVycyB0 bwogICAgICBoYW5kbGUgdmFsdWUgYXJyYXkgdGhlIGZlYXR1cmUncyBhbGwgTVNScy4KICAgIC0g Zml4IGNvZGluZyBzdHlsZSBpc3N1ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gZG8gbm90IG5lZWQgY2hlY2sgJ2NvcycgaW4gQVNTRVJULgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW5hbWUgJ2luc2VydF92YWxfdG9fYXJyYXknIHRvICdp bnNlcnRfdmFsX2ludG9fYXJyYXknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSByZW1vdmUgJ3JlZl9sb2NrJyBmcm9tIHBhcmFtZXRlciBsaXN0IGluICdmaW5kX2Nvcycg YW5kICdwaWNrX2F2YWlsX2NvcycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIHJlbW92ZSBBU1NFUlQgY2hlY2sgdG8gJ3JlZl9sb2NrJyBpbiAnZmluZF9jb3MnIGFuZCAn cGlja19hdmFpbF9jb3MnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBm aXggYSBidWcgZm9yIGNoZWNraW5nICdmZWF0X3R5cGUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQogICAgLSBtb3ZlICdmcmVlX2FycmF5JyBsYWJlbC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5IGNvbW1lbnRzIGFuZCBjb21taXQgbWVzc2Fn ZS4KdjEwOgogICAgLSByZXN0b3JlIGRvbWFpbiBjb3MgaWQgdG8gMCB3aGVuIHNvY2tldCBpcyBv ZmZsaW5lLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGVjayAncHNy X2NhdF9vcC5kYXRhJyB0byBtYWtlIHN1cmUgb25seSBsb3dlciAzMiBiaXRzIGFyZSB2YWxpZC4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5 IGZpeGVkIHdpZHRoIHR5cGUgb2YgcGFyYW1ldGVycyBhbmQgdmFyaWFibGVzLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW5hbWUgJ2luc2VydF9uZXdfdmFsX3RvX2Fy cmF5JyB0byAnaW5zZXJ0X3ZhbF90b19hcnJheScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIGlucHV0ICdyZWZfbG9jaycgcG9pbnRlciBpbnRvIGZ1bmN0aW9ucyB0byBj aGVjayBpZiBpdCBoYXMgYmVlbiBsb2NrZWQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIGFkZCBjb21tZW50IHRvIGRlY2xhcmUgdGhlIHNldCBwcm9jZXNzIGlzIHByb3Rl Y3RlZCBieSAnZG9tY3RsX2xvY2snLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSBjaGVjayAnZmVhdF90eXBlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gcmVtb3ZlICdmZWF0X21hc2snLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQogICAgLSByZW1vdmUgdW5uZWNlc3NhcnkgY3JpdGVyaWEgb2YgQVNTRVJULgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGp1c3QgZmxvdyBvZiAncHNyX3NldF92YWwn IHRvIGF2b2lkICdnb3RvJyBmb3Igc3VjY2Vzc2Z1bCBjYXNlcy4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gdXNlIEFTU0VSVCB0byBjaGVjayAnc29ja2V0X2luZm8nIGlu ICdwc3JfZnJlZV9jb3MnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBy ZW1vdmUgdW5uZWNlc3NhcnkgY29tbWVudCBpbiAncHNyX2ZyZWVfY29zJy4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKdjk6CiAgICAtIHVzZSBnb3RvIHN0eWxlIGVycm9yIGhhbmRs aW5nIGluICdwc3Jfc2V0X3ZhbCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExpdSkKICAgIC0g dXNlIEFTU0VSVCBmb3IgY2hlY2tpbmcgb2xkX2Nvcy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkg TGl1IGFuZCBKYW4gQmV1bGljaCkKICAgIC0gZml4IGNvZGluZyBzdHlsZSBpc3N1ZS4KICAgICAg KHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSByZW5hbWUgJ2Fzc2VtYmxlX3ZhbF9hcnJheScg dG8gJ2NvbWJpbmVfdmFsX2FycmF5JyBpbiBwZXJ2aW91cyBwYXRjaC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBXZWkgTGl1KQogICAgLSB1c2UgJ3NwaW5faXNfbG9ja2VkJyB0byBjaGVjayByZWZfbG9j ay4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIGFkZCBhbiBpbnB1dCBwYXJh bWV0ZXIgJ2FycmF5X2xlbicgZm9yICd3cml0ZV9wc3JfbXNyJy4KICAgIC0gY2hlY2sgJ3NvY2tl dF9pbmZvJyBhbmQgJ3Bzcl9jb3NfaWRzJyBpbiB0aGlzIHBhdGNoLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgcGF0Y2ggdGl0bGUgdG8gaW5kaWNhdGUgJ0wz IENBVCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGZpeCBjb21taXQg bWVzc2FnZSB3b3Jkcy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hh bmdlICdhc3NlbWJsZV92YWxfYXJyYXknIHRvICdnYXRoZXJfdmFsX2FycmF5Jy4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlICdzZXRfbmV3X3ZhbF90b19hcnJh eScgdG8gJ2luc2VydF9uZXdfdmFsX3RvX2FycmF5Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gY2hhbmdlIHBhcmFtZXRlciAnbScgb2YgJ2luc2VydF9uZXdfdmFsX3Rv X2FycmF5JyB0byAnbmV3X3ZhbCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIGNoYW5nZSAnd3JpdGVfcHNyX21zcicgdG8gJ3dyaXRlX3Bzcl9tc3JzJy4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY29ycmVjdCBjb21tZW50cy4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGNvbW1lbnRz LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGp1c3QgY29uZGl0aW9u cyBhZnRlciAnZmluZF9jb3MnIHRvIHNhdmUgYSBsZXZlbCBvZiBpbmRlbnRhdGlvbi4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRkICdBU1NFUlQoIW9sZF9jb3MgfHwg cmVmW29sZF9jb3NdKScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1v dmUgQVNTRVJUKCkgY2hlY2sgaW50byBsb2NrZWQgcmVnaW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQogICAgLSByZXBsYWNlIHBhcmFtZXRlciAnKnZhbCcgdG8gJ3ZhbFtdJyBp biBzb21lIGZ1bmN0aW9ucy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g Y2hhbmdlICd3cml0ZV9wc3JfbXNyJyBwYXJhbWV0ZXJzIHRvIHByZXBhcmUgdG8gb25seSBzZXQg b25lIG5ldyB2YWx1ZQogICAgICBmb3Igb25lIGZlYXR1cmUuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZXMgYWJvdXQgJ3VpbnQ2NF90JyB0byAndWludDMyX3Qn LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGQgZXhwbGFuYXRpb24g YWJvdXQgY29udGV4dCBzd2l0Y2guCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY1 OgogICAgLSBtb2RpZnkgY29tbWl0IG1lc3NhZ2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIHJldHVybiBhbiBlcnJvciBmb3IgYWxsIGhlbHBlciBmdW5jdGlvbnMgaW4g c2V0IGZsb3cuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1 bm5lY2Vzc2FyeSBjYXN0LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBk aXZpZGUgJ2dldF9vbGRfc2V0X25ldycgdG8gdHdvIGZ1bmN0aW9ucywgJ2Fzc2VtYmxlX3ZhbF9h cnJheScgYW5kCiAgICAgICdzZXRfbmV3X3ZhbF90b19hcnJheScuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSBjb21tZW50cy4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gYWRqdXN0IGNvZGUgZm9ybWF0LgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2UgJ2FsbG9jX25ld19jb3MnIHRvICdwaWNrX2F2 YWlsX2NvcycgdG8gbWFrZSBuYW1lIGFjY3VyYXRlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSBjaGVjayBmZWF0dXJlIHR5cGUgd2hlbiBlbnRlcmluZyAncHNyX3NldF92 YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSB1c2UgQVNTRVJUIHRv IGNoZWNrIHJlZi4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1l ICdkYXRbXScgdG8gJ2RhdGFbXScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY0 OgogICAgLSBjcmVhdGUgdGhpcyBwYXRjaCB0byBtYWtlIGNvZGVzIGVhc2llciB0byB1bmRlcnN0 YW5kLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQotLS0KLS0tCiB4ZW4vYXJjaC94 ODYvZG9tY3RsLmMgICAgIHwgIDE4ICsrLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyAgICAgICAgfCAy NTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogeGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wc3IuaCB8ICAgNCArLQogMyBmaWxlcyBjaGFuZ2VkLCAyNTcgaW5zZXJ0 aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0 bC5jIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCmluZGV4IDViNjJjNWMuLjEyNGExYzYgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYworKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMK QEAgLTE0MTEsMjEgKzE0MTEsMjEgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKICAgICAgICAgICAg IHVpbnQzMl90IHZhbDMyOwogCiAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NF VF9MM19DQk06Ci0gICAgICAgICAgICByZXQgPSBwc3Jfc2V0X2wzX2NibShkLCBkb21jdGwtPnUu cHNyX2NhdF9vcC50YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21j dGwtPnUucHNyX2NhdF9vcC5kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UFNSX0NCTV9UWVBFX0wzKTsKKyAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0 bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv bWN0bC0+dS5wc3JfY2F0X29wLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ U1JfQ0JNX1RZUEVfTDMpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBYRU5f RE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NPREU6Ci0gICAgICAgICAgICByZXQgPSBwc3Jfc2V0 X2wzX2NibShkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUFNSX0NCTV9UWVBFX0wzX0NPREUpOworICAgICAgICAgICAg cmV0ID0gcHNyX3NldF92YWwoZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0YSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MM19DT0RFKTsKICAgICAgICAg ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19E QVRBOgotICAgICAgICAgICAgcmV0ID0gcHNyX3NldF9sM19jYm0oZCwgZG9tY3RsLT51LnBzcl9j YXRfb3AudGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51 LnBzcl9jYXRfb3AuZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9D Qk1fVFlQRV9MM19EQVRBKTsKKyAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0 bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv bWN0bC0+dS5wc3JfY2F0X29wLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ U1JfQ0JNX1RZUEVfTDNfREFUQSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl IFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ0JNOgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IDc1ODNmNGQuLmZiODQyMjMgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94ODYvcHNyLmMKQEAg LTExNyw2ICsxMTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgewogICogcmVm X2xvY2sgIC0gQSBsb2NrIHRvIHByb3RlY3QgY29zX3JlZi4KICAqIGNvc19yZWYgICAtIEEgcmVm ZXJlbmNlIGNvdW50IGFycmF5IHRvIHJlY29yZCBob3cgbWFueSBkb21haW5zIGFyZSB1c2luZyB0 aGUKICAqICAgICAgICAgICAgIENPUyBJRC4gRXZlcnkgZW50cnkgb2YgY29zX3JlZiBjb3JyZXNw b25kcyB0byBvbmUgQ09TIElELgorICogZG9tX3NldCAgIC0gQSBiaXRtYXAgdG8gaW5kaWNhdGUg d2hpY2ggZG9tYWluJ3MgY29zIGlkIGhhcyBiZWVuIHNldC4KICAqLwogc3RydWN0IHBzcl9zb2Nr ZXRfaW5mbyB7CiAgICAgYm9vbCBmZWF0X2luaXQ7CkBAIC0xMjQsNiArMTI1LDggQEAgc3RydWN0 IHBzcl9zb2NrZXRfaW5mbyB7CiAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdHVyZXNbUFNSX1NP Q0tFVF9GRUFUX05VTV07CiAgICAgc3BpbmxvY2tfdCByZWZfbG9jazsKICAgICB1bnNpZ25lZCBp bnQgY29zX3JlZltNQVhfQ09TX1JFR19DTlRdOworICAgIC8qIEV2ZXJ5IGJpdCBjb3JyZXNwb25k cyB0byBhIGRvbWFpbi4gSW5kZXggaXMgZG9tYWluX2lkLiAqLworICAgIERFQ0xBUkVfQklUTUFQ KGRvbV9zZXQsIERPTUlEX0lETEUgKyAxKTsKIH07CiAKIHN0cnVjdCBwc3JfYXNzb2MgewpAQCAt MTc5LDYgKzE4MiwxMCBAQCBzdGF0aWMgdm9pZCBmcmVlX3NvY2tldF9yZXNvdXJjZXModW5zaWdu ZWQgaW50IHNvY2tldCkKICAgICB9CiAKICAgICBpbmZvLT5mZWF0X2luaXQgPSBmYWxzZTsKKwor ICAgIG1lbXNldChpbmZvLT5jb3NfcmVmLCAwLCBNQVhfQ09TX1JFR19DTlQgKiBzaXplb2YodW5z aWduZWQgaW50KSk7CisKKyAgICBiaXRtYXBfemVybyhpbmZvLT5kb21fc2V0LCBET01JRF9JRExF ICsgMSk7CiB9CiAKIHN0YXRpYyBlbnVtIHBzcl9mZWF0X3R5cGUgcHNyX2NibV90eXBlX3RvX2Zl YXRfdHlwZShlbnVtIGNibV90eXBlIHR5cGUpCkBAIC00NDksMTMgKzQ1NiwyNSBAQCB2b2lkIHBz cl9jdHh0X3N3aXRjaF90byhzdHJ1Y3QgZG9tYWluICpkKQogICAgIGlmICggcHNyX2NtdF9lbmFi bGVkKCkgKQogICAgICAgICBwc3JfYXNzb2Nfcm1pZCgmcmVnLCBkLT5hcmNoLnBzcl9ybWlkKTsK IAotICAgIC8qIElmIGRvbWFpbidzICdwc3JfY29zX2lkcycgaXMgTlVMTCwgd2Ugc2V0IGRlZmF1 bHQgdmFsdWUgZm9yIGl0LiAqLworICAgIC8qCisgICAgICogSWYgdGhlIGRvbWFpbiBpcyBub3Qg c2V0IGluICdkb21fc2V0JyBiaXRtYXAsIHRoYXQgbWVhbnMgdGhlIGRvbWFpbidzCisgICAgICog Y29zIGlkIGlzIG5vdCB2YWxpZC4gU28sIHdlIGhhdmUgdG8gdXNlIGRlZmF1bHQgdmFsdWUgKDAp IHRvIHNldCBBU1NPQworICAgICAqIHJlZ2lzdGVyLiBGdXJ0aGVybW9yZSwgaWYgZG9tYWluJ3Mg J3Bzcl9jb3NfaWRzJyBpcyBOVUxMLCB3ZSBuZWVkCisgICAgICogZGVmYXVsdCB2YWx1ZSBmb3Ig aXQgdG9vIChmb3IgY2FzZSB0aGF0IHRoZSBkb21haW4ncyBwc3JfY29zX2lkcyBpcyBub3QKKyAg ICAgKiBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkKS4KKyAgICAgKi8KICAgICBpZiAoIHBzcmEtPmNv c19tYXNrICkKLSAgICAgICAgcmVnID0gcHNyX2Fzc29jX2NvcyhyZWcsCi0gICAgICAgICAgICAg ICAgICAgIChkLT5hcmNoLnBzcl9jb3NfaWRzID8KLSAgICAgICAgICAgICAgICAgICAgIGQtPmFy Y2gucHNyX2Nvc19pZHNbY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpXSA6Ci0gICAg ICAgICAgICAgICAgICAgICAwKSwKLSAgICAgICAgICAgICAgICAgICAgcHNyYS0+Y29zX21hc2sp OworICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvY2tldCA9IGNwdV90b19zb2NrZXQoc21w X3Byb2Nlc3Nvcl9pZCgpKTsKKyAgICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9 IHNvY2tldF9pbmZvICsgc29ja2V0OworICAgICAgICB1bnNpZ25lZCBpbnQgY29zID0gMDsKKwor ICAgICAgICBpZiAoIGxpa2VseSh0ZXN0X2JpdChkLT5kb21haW5faWQsIGluZm8tPmRvbV9zZXQp KSAmJgorICAgICAgICAgICAgIGQtPmFyY2gucHNyX2Nvc19pZHMgKQorICAgICAgICAgICAgY29z ID0gZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdOworCisgICAgICAgIHJlZyA9IHBzcl9hc3Nv Y19jb3MocmVnLCBjb3MsIHBzcmEtPmNvc19tYXNrKTsKKyAgICB9CiAKICAgICBpZiAoIHJlZyAh PSBwc3JhLT52YWwgKQogICAgIHsKQEAgLTUzNyw3ICs1NTYsMTYgQEAgaW50IHBzcl9nZXRfdmFs KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCiAgICAgICAgIHJldHVybiAt RU5PRU5UOwogICAgIH0KIAorICAgIGRvbWFpbl9sb2NrKGQpOworICAgIGlmICggIXRlc3RfYml0 KGQtPmRvbWFpbl9pZCwgc29ja2V0X2luZm9bc29ja2V0XS5kb21fc2V0KSApCisgICAgeworICAg ICAgICBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF0gPSAwOworICAgICAgICBzZXRfYml0KGQt PmRvbWFpbl9pZCwgc29ja2V0X2luZm9bc29ja2V0XS5kb21fc2V0KTsKKyAgICB9CisKICAgICBj b3MgPSBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF07CisgICAgZG9tYWluX3VubG9jayhkKTsK KwogICAgIC8qCiAgICAgICogSWYgaW5wdXQgY29zIGV4Y2VlZHMgY3VycmVudCBmZWF0dXJlJ3Mg Y29zX21heCwgd2Ugc2hvdWxkIHJldHVybiBpdHMKICAgICAgKiBkZWZhdWx0IHZhbHVlIHdoaWNo IGlzIHN0b3JlZCBpbiBjb3MgMC4gVGhpcyBjYXNlIG9ubHkgaGFwcGVucwpAQCAtNTYxLDE1ICs1 ODksMjI0IEBAIGludCBwc3JfZ2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQg c29ja2V0LAogICAgIHJldHVybiAtRUlOVkFMOwogfQogCi1pbnQgcHNyX3NldF9sM19jYm0oc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICB1 aW50NjRfdCBjYm0sIGVudW0gY2JtX3R5cGUgdHlwZSkKKy8qIFNldCB2YWx1ZSBmdW5jdGlvbnMg Ki8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X2Nvc19udW0oY29uc3Qgc3RydWN0IHBzcl9zb2Nr ZXRfaW5mbyAqaW5mbykKIHsKICAgICByZXR1cm4gMDsKIH0KIAotLyogQ2FsbGVkIHdpdGggZG9t YWluIGxvY2sgaGVsZCwgbm8gZXh0cmEgbG9jayBuZWVkZWQgZm9yICdwc3JfY29zX2lkcycgKi8K K3N0YXRpYyBpbnQgZ2F0aGVyX3ZhbF9hcnJheSh1aW50MzJfdCB2YWxbXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9jb3MpCit7CisgICAgcmV0dXJu IC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgaW5zZXJ0X3ZhbF9pbnRvX2FycmF5KHVpbnQzMl90 IHZhbFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFy cmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBw c3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW51bSBjYm1fdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgbmV3X3ZhbCkKK3sKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGlj IGludCBmaW5kX2Nvcyhjb25zdCB1aW50MzJfdCB2YWxbXSwgdW5zaWduZWQgaW50IGFycmF5X2xl biwKKyAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbykKK3sK KyAgICByZXR1cm4gLUVOT0VOVDsKK30KKworc3RhdGljIGludCBwaWNrX2F2YWlsX2Nvcyhjb25z dCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1aW50MzJfdCB2YWxbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9jb3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUpCit7CisgICAgcmV0dXJuIC1F Tk9FTlQ7Cit9CisKK3N0YXRpYyBpbnQgd3JpdGVfcHNyX21zcnModW5zaWduZWQgaW50IHNvY2tl dCwgdW5zaWduZWQgaW50IGNvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg dmFsW10sIHVuc2lnbmVkIGludCBhcnJheV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg IGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUpCit7CisgICAgcmV0dXJuIC1FTk9FTlQ7Cit9 CisKK2ludCBwc3Jfc2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0 LAorICAgICAgICAgICAgICAgIHVpbnQ2NF90IG5ld192YWwsIGVudW0gY2JtX3R5cGUgdHlwZSkK K3sKKyAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywgYXJyYXlfbGVuOworICAgIGludCBjb3MsIHJl dDsKKyAgICB1bnNpZ25lZCBpbnQgKnJlZjsKKyAgICB1aW50MzJfdCAqdmFsX2FycmF5LCB2YWw7 CisgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9IGdldF9zb2NrZXRfaW5mbyhzb2Nr ZXQpOworICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGU7CisKKyAgICBpZiAoIElTX0VS UihpbmZvKSApCisgICAgICAgIHJldHVybiBQVFJfRVJSKGluZm8pOworCisgICAgdmFsID0gbmV3 X3ZhbDsKKyAgICBpZiAoIG5ld192YWwgIT0gdmFsICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CisKKyAgICBmZWF0X3R5cGUgPSBwc3JfY2JtX3R5cGVfdG9fZmVhdF90eXBlKHR5cGUpOworICAg IGlmICggZmVhdF90eXBlID49IEFSUkFZX1NJWkUoaW5mby0+ZmVhdHVyZXMpIHx8CisgICAgICAg ICAhaW5mby0+ZmVhdHVyZXNbZmVhdF90eXBlXSApCisgICAgICAgIHJldHVybiAtRU5PRU5UOwor CisgICAgLyoKKyAgICAgKiBTdGVwIDA6CisgICAgICogb2xkX2NvcyBtZWFucyB0aGUgQ09TIElE IGN1cnJlbnQgZG9tYWluIGlzIHVzaW5nLiBCeSBkZWZhdWx0LCBpdCBpcyAwLgorICAgICAqCisg ICAgICogRm9yIGV2ZXJ5IENPUyBJRCwgdGhlcmUgaXMgYSByZWZlcmVuY2UgY291bnQgdG8gcmVj b3JkIGhvdyBtYW55IGRvbWFpbnMKKyAgICAgKiBhcmUgdXNpbmcgdGhlIENPUyByZWdpc3RlciBj b3JyZXNwb25kaW5nIHRvIHRoaXMgQ09TIElELgorICAgICAqIC0gSWYgcmVmW29sZF9jb3NdIGlz IDAsIHRoYXQgbWVhbnMgdGhpcyBDT1MgaXMgbm90IHVzZWQgYnkgYW55IGRvbWFpbi4KKyAgICAg KiAtIElmIHJlZltvbGRfY29zXSBpcyAxLCB0aGF0IG1lYW5zIHRoaXMgQ09TIGlzIG9ubHkgdXNl ZCBieSBjdXJyZW50CisgICAgICogICBkb21haW4uCisgICAgICogLSBJZiByZWZbb2xkX2Nvc10g aXMgbW9yZSB0aGFuIDEsIHRoYXQgbWVhbiBtdWx0aXBsZSBkb21haW5zIGFyZSB1c2luZworICAg ICAqICAgdGhpcyBDT1MuCisgICAgICovCisgICAgZG9tYWluX2xvY2soZCk7CisgICAgaWYgKCAh dGVzdF9iaXQoZC0+ZG9tYWluX2lkLCBpbmZvLT5kb21fc2V0KSApCisgICAgeworICAgICAgICBk LT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF0gPSAwOworICAgICAgICBzZXRfYml0KGQtPmRvbWFp bl9pZCwgaW5mby0+ZG9tX3NldCk7CisgICAgfQorCisgICAgb2xkX2NvcyA9IGQtPmFyY2gucHNy X2Nvc19pZHNbc29ja2V0XTsKKyAgICBkb21haW5fdW5sb2NrKGQpOworCisgICAgQVNTRVJUKG9s ZF9jb3MgPCBNQVhfQ09TX1JFR19DTlQpOworCisgICAgcmVmID0gaW5mby0+Y29zX3JlZjsKKwor ICAgIC8qCisgICAgICogU3RlcCAxOgorICAgICAqIEdhdGhlciBhIHZhbHVlIGFycmF5IHRvIHN0 b3JlIGFsbCBmZWF0dXJlcyBjb3NfcmVnX3ZhbFtvbGRfY29zXS4KKyAgICAgKiBBbmQsIHNldCB0 aGUgaW5wdXQgbmV3IHZhbCBpbnRvIGFycmF5IGFjY29yZGluZyB0byB0aGUgZmVhdHVyZSdzCisg ICAgICogcG9zaXRpb24gaW4gYXJyYXkuCisgICAgICovCisgICAgYXJyYXlfbGVuID0gZ2V0X2Nv c19udW0oaW5mbyk7CisgICAgdmFsX2FycmF5ID0geHphbGxvY19hcnJheSh1aW50MzJfdCwgYXJy YXlfbGVuKTsKKyAgICBpZiAoICF2YWxfYXJyYXkgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsK KworICAgIGlmICggKHJldCA9IGdhdGhlcl92YWxfYXJyYXkodmFsX2FycmF5LCBhcnJheV9sZW4s IGluZm8sIG9sZF9jb3MpKSAhPSAwICkKKyAgICAgICAgZ290byBmcmVlX2FycmF5OworCisgICAg aWYgKCAocmV0ID0gaW5zZXJ0X3ZhbF9pbnRvX2FycmF5KHZhbF9hcnJheSwgYXJyYXlfbGVuLCBp bmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0X3R5cGUsIHR5 cGUsIHZhbCkpICE9IDAgKQorICAgICAgICBnb3RvIGZyZWVfYXJyYXk7CisKKyAgICBzcGluX2xv Y2soJmluZm8tPnJlZl9sb2NrKTsKKworICAgIC8qCisgICAgICogU3RlcCAyOgorICAgICAqIFRy eSB0byBmaW5kIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBDT1MgSUQgb24gd2hpY2ggYWxsIGZlYXR1 cmVzJyB2YWx1ZXMKKyAgICAgKiBhcmUgc2FtZSBhcyB0aGUgYXJyYXkuIFRoZW4sIHdlIGNhbiBy ZXVzZSB0aGlzIENPUyBJRC4KKyAgICAgKi8KKyAgICBjb3MgPSBmaW5kX2Nvcyh2YWxfYXJyYXks IGFycmF5X2xlbiwgZmVhdF90eXBlLCBpbmZvKTsKKyAgICBpZiAoIGNvcyA9PSBvbGRfY29zICkK KyAgICB7CisgICAgICAgIHJldCA9IDA7CisgICAgICAgIGdvdG8gdW5sb2NrX2ZyZWVfYXJyYXk7 CisgICAgfQorCisgICAgLyoKKyAgICAgKiBTdGVwIDM6CisgICAgICogSWYgZmFpbCB0byBmaW5k LCB3ZSBuZWVkIHBpY2sgYW4gYXZhaWxhYmxlIENPUyBJRC4KKyAgICAgKiBJbiBmYWN0LCBvbmx5 IENPUyBJRCB3aGljaCByZWYgaXMgMSBvciAwIGNhbiBiZSBwaWNrZWQgZm9yIGN1cnJlbnQKKyAg ICAgKiBkb21haW4uIElmIG9sZF9jb3MgaXMgbm90IDAgYW5kIGl0cyByZWY9PTEsIHRoYXQgbWVh bnMgb25seSBjdXJyZW50CisgICAgICogZG9tYWluIGlzIHVzaW5nIHRoaXMgb2xkX2NvcyBJRC4g U28sIHRoaXMgb2xkX2NvcyBJRCBjZXJ0YWlubHkgY2FuCisgICAgICogYmUgcmV1c2VkIGJ5IGN1 cnJlbnQgZG9tYWluLiBSZWY9PTAgbWVhbnMgdGhlcmUgaXMgbm8gYW55IGRvbWFpbgorICAgICAq IHVzaW5nIHRoaXMgQ09TIElELiBTbyBpdCBjYW4gYmUgdXNlZCBmb3IgY3VycmVudCBkb21haW4g dG9vLgorICAgICAqLworICAgIGlmICggY29zIDwgMCApCisgICAgeworICAgICAgICBjb3MgPSBw aWNrX2F2YWlsX2NvcyhpbmZvLCB2YWxfYXJyYXksIGFycmF5X2xlbiwgb2xkX2NvcywgZmVhdF90 eXBlKTsKKyAgICAgICAgaWYgKCBjb3MgPCAwICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0 ID0gY29zOworICAgICAgICAgICAgZ290byB1bmxvY2tfZnJlZV9hcnJheTsKKyAgICAgICAgfQor CisgICAgICAgIC8qCisgICAgICAgICAqIFN0ZXAgNDoKKyAgICAgICAgICogV3JpdGUgdGhlIGZl YXR1cmUncyBNU1JzIGFjY29yZGluZyB0byB0aGUgQ09TIElELgorICAgICAgICAgKi8KKyAgICAg ICAgcmV0ID0gd3JpdGVfcHNyX21zcnMoc29ja2V0LCBjb3MsIHZhbF9hcnJheSwgYXJyYXlfbGVu LCBmZWF0X3R5cGUpOworICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICBnb3RvIHVubG9j a19mcmVlX2FycmF5OworICAgIH0KKworICAgIC8qCisgICAgICogU3RlcCA1OgorICAgICAqIEZp bmQgdGhlIENPUyBJRCAoZmluZF9jb3MgcmVzdWx0IGlzICc+PSAwJyBvciBhbiBhdmFpbGFibGUg Q09TIElEIGlzCisgICAgICogcGlja2VkLCB0aGVuIHVwZGF0ZSByZWYgYWNjb3JkaW5nIHRvIENP UyBJRC4KKyAgICAgKi8KKyAgICByZWZbY29zXSsrOworICAgIEFTU0VSVCghY29zIHx8IHJlZltj b3NdKTsKKyAgICBBU1NFUlQoIW9sZF9jb3MgfHwgcmVmW29sZF9jb3NdKTsKKyAgICByZWZbb2xk X2Nvc10tLTsKKyAgICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2spOworCisgICAgLyoKKyAg ICAgKiBTdGVwIDY6CisgICAgICogU2F2ZSB0aGUgQ09TIElEIGludG8gY3VycmVudCBkb21haW4n cyBwc3JfY29zX2lkc1tdIHNvIHRoYXQgd2UgY2FuIGtub3cKKyAgICAgKiB3aGljaCBDT1MgdGhl IGRvbWFpbiBpcyB1c2luZyBvbiB0aGUgc29ja2V0LiBPbmUgZG9tYWluIGNhbiBvbmx5IHVzZQor ICAgICAqIG9uZSBDT1MgSUQgYXQgc2FtZSB0aW1lIG9uIGVhY2ggc29ja2V0LgorICAgICAqLwor ICAgIGRvbWFpbl9sb2NrKGQpOworICAgIGQtPmFyY2gucHNyX2Nvc19pZHNbc29ja2V0XSA9IGNv czsKKyAgICBkb21haW5fdW5sb2NrKGQpOworCisgICAgLyoKKyAgICAgKiBTdGVwIDc6CisgICAg ICogVGhlbiwgc2V0IHRoZSBkb21fc2V0IGJpdCB3aGljaCBjb3JyZXNwb25kcyB0byBkb21haW5f aWQgdG8gbWFyayB0aGlzCisgICAgICogZG9tYWluIGhhcyBiZWVuIHNldCBhbmQgdGhlIENPUyBJ RCBvZiB0aGUgZG9tYWluIGlzIHZhbGlkLgorICAgICAqLworICAgIHNldF9iaXQoZC0+ZG9tYWlu X2lkLCBpbmZvLT5kb21fc2V0KTsKKworICAgIGdvdG8gZnJlZV9hcnJheTsKKworIHVubG9ja19m cmVlX2FycmF5OgorICAgIHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7CisKKyBmcmVlX2Fy cmF5OgorICAgIHhmcmVlKHZhbF9hcnJheSk7CisgICAgcmV0dXJuIHJldDsKK30KKwogc3RhdGlj IHZvaWQgcHNyX2ZyZWVfY29zKHN0cnVjdCBkb21haW4gKmQpCiB7CisgICAgdW5zaWduZWQgaW50 IHNvY2tldCwgY29zOworCisgICAgQVNTRVJUKHNvY2tldF9pbmZvKTsKKworICAgIGlmICggIWQt PmFyY2gucHNyX2Nvc19pZHMgKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBEb21haW4gaXMg ZGVzdHJveWVkIHNvIGl0cyBjb3NfcmVmIHNob3VsZCBiZSBkZWNyZWFzZWQuICovCisgICAgZm9y ICggc29ja2V0ID0gMDsgc29ja2V0IDwgbnJfc29ja2V0czsgc29ja2V0KysgKQorICAgIHsKKyAg ICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9IHNvY2tldF9pbmZvICsgc29ja2V0 OworCisgICAgICAgIGNsZWFyX2JpdChkLT5kb21haW5faWQsIGluZm8tPmRvbV9zZXQpOworCisg ICAgICAgIC8qIGNvcyAwIGlzIGRlZmF1bHQgb25lIHdoaWNoIGRvZXMgbm90IG5lZWQgYmUgaGFu ZGxlZC4gKi8KKyAgICAgICAgY29zID0gZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdOworICAg ICAgICBpZiAoIGNvcyA9PSAwICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNw aW5fbG9jaygmaW5mby0+cmVmX2xvY2spOworICAgICAgICBBU1NFUlQoaW5mby0+Y29zX3JlZltj b3NdKTsKKyAgICAgICAgaW5mby0+Y29zX3JlZltjb3NdLS07CisgICAgICAgIHNwaW5fdW5sb2Nr KCZpbmZvLT5yZWZfbG9jayk7CisgICAgfQorCiAgICAgeGZyZWUoZC0+YXJjaC5wc3JfY29zX2lk cyk7CiAgICAgZC0+YXJjaC5wc3JfY29zX2lkcyA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20teDg2L3Bzci5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAppbmRleCBh YzkxMThlLi4xNWI5YTI1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCisr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKQEAgLTczLDggKzczLDggQEAgaW50IHBzcl9n ZXRfaW5mbyh1bnNpZ25lZCBpbnQgc29ja2V0LCBlbnVtIGNibV90eXBlIHR5cGUsCiAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGRhdGFbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbik7CiBpbnQg cHNyX2dldF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKICAgICAg ICAgICAgICAgICB1aW50MzJfdCAqdmFsLCBlbnVtIGNibV90eXBlIHR5cGUpOwotaW50IHBzcl9z ZXRfbDNfY2JtKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCi0gICAgICAg ICAgICAgICAgICAgdWludDY0X3QgY2JtLCBlbnVtIGNibV90eXBlIHR5cGUpOworaW50IHBzcl9z ZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCisgICAgICAgICAg ICAgICAgdWludDY0X3QgdmFsLCBlbnVtIGNibV90eXBlIHR5cGUpOwogCiB2b2lkIHBzcl9kb21h aW5faW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKIHZvaWQgcHNyX2RvbWFpbl9mcmVlKHN0cnVjdCBk b21haW4gKmQpOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK