From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v6 08/24] x86: refactor psr: set value: implement framework. Date: Wed, 8 Feb 2017 16:16:00 +0800 Message-ID: <1486541776-8406-9-git-send-email-yi.y.sun@linux.intel.com> References: <1486541776-8406-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 1cbNTL-0005rx-My for xen-devel@lists.xenproject.org; Wed, 08 Feb 2017 08:19:27 +0000 In-Reply-To: <1486541776-8406-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 List-Id: xen-devel@lists.xenproject.org QXMgc2V0IHZhbHVlIGZsb3cgaXMgdGhlIG1vc3QgY29tcGxpY2F0ZWQgb25lIGluIHBzciwgaXQg d2lsbCBiZQpkaXZpZGVkIHRvIHNvbWUgcGF0Y2hlcyB0byBtYWtlIHRoaW5ncyBjbGVhcmVyLiBU aGlzIHBhdGNoCmltcGxlbWVudHMgdGhlIHNldCB2YWx1ZSBmcmFtZXdvcmsgdG8gc2hvdyBhIHdo b2xlIHBpY3R1cmUgZmlyc3RseS4KCkl0IGFsc28gY2hhbmdlcyBkb21jdGwgaW50ZXJmYWNlIHRv IG1ha2UgaXQgbW9yZSBnZW5lcmFsLgoKVG8gbWFrZSB0aGUgc2V0IHZhbHVlIGZsb3cgYmUgZ2Vu ZXJhbCBhbmQgY2FuIHN1cHBvcnQgbXVsdGlwbGUgZmVhdHVyZXMKYXQgc2FtZSB0aW1lLCBpdCBp bmNsdWRlcyBiZWxvdyBzdGVwczoKMS4gR2V0IENPUyBJRCBvZiBjdXJyZW50IGRvbWFpbiB1c2lu Zy4KMi4gQXNzZW1ibGUgYSB2YWx1ZSBhcnJheSB0byBzdG9yZSBhbGwgZmVhdHVyZXMgY3VycmVu dCB2YWx1ZQogICBpbiBpdCBhbmQgcmVwbGFjZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZmVh dHVyZSB3aGljaCBpcwogICBiZWluZyBzZXQgdG8gdGhlIG5ldyBpbnB1dCB2YWx1ZS4KMy4gRmlu ZCBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgQ09TIElEIG9uIHdoaWNoIGFsbCBmZWF0dXJlcycKICAg dmFsdWVzIGFyZSBzYW1lIGFzIHRoZSBhcnJheS4gVGhlbiwgd2UgY2FuIHJldXNlIHRoaXMgQ09T CiAgIElELgo0LiBJZiBmYWlsIHRvIGZpbmQsIHdlIG5lZWQgcGljayBhbiBhdmFpbGFibGUgQ09T IElELiBPbmx5IENPUyBJRCB3aGljaCByZWYKICAgaXMgMCBvciAxIGNhbiBiZSBwaWNrZWQuCjUu IFdyaXRlIGFsbCBmZWF0dXJlcyBNU1JzIGFjY29yZGluZyB0byB0aGUgQ09TIElELgo2LiBVcGRh dGUgcmVmIGFjY29yZGluZyB0byBDT1MgSUQuCjcuIFNhdmUgdGhlIENPUyBJRCBpbnRvIGN1cnJl bnQgZG9tYWluJ3MgcHNyX2Nvc19pZHNbc29ja2V0XSBzbyB0aGF0IHdlCiAgIGNhbiBrbm93IHdo aWNoIENPUyB0aGUgZG9tYWluIGlzIHVzaW5nIG9uIHRoZSBzb2NrZXQuCgpTbywgc29tZSBmdW5j dGlvbnMgYXJlIGFic3RyYWN0ZWQgYW5kIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgd2lsbCBiZQpp bXBsZW1lbnRlZCBpbiBuZXh0IHBhdGNoZXMuCgpIZXJlIGlzIGFuIGV4YW1wbGUgdG8gdW5kZXJz dGFuZCB0aGUgcHJvY2Vzcy4gVGhlIENQVSBzdXBwb3J0cwp0d28gZmVhdHVlcnMsIGUuZy4gTDMg Q0FUIGFuZCBMMiBDQVQuIHVzZXIgd2FudHMgdG8gc2V0IEwzIENBVApvZiBEb20xIHRvIDB4MWZm LgoxLiBHZXQgdGhlIG9sZF9jb3Mgb2YgRG9tMSB3aGljaCBpcyAwLiBMMyBDQVQgaXMgdGhlIGZp cnN0CmVsZW1lbnQgb2YgZmVhdHVyZSBsaXN0LiBUaGUgQ09TIHJlZ2lzdGVycyB2YWx1ZXMgYXJl IGJlbG93IGF0CnRoaXMgdGltZS4KICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgICAgICAgfCBDT1MgMCB8IENPUyAxIHwgQ09TIDIgfCAuLi4gfAogICAgICAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTDMgQ0FUICB8IDB4N2ZmIHwgLi4uICAgfCAuLi4g ICB8IC4uLiB8CiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMMiBDQVQg IHwgMHhmZiAgfCAuLi4gICB8IC4uLiAgIHwgLi4uIHwKICAgICAgICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgoyLiBBc3NlbWJsZSBUaGUgdmFsdWUgYXJyYXkgdG8gYmU6CnZhbFsw XTogMHgxZmYKdmFsWzFdOiAweGZmCgozLiBJdCBjYW5ub3QgZmluZCBhIG1hdGNoaW5nIENPUy4K CjQuIEFsbG9jYXRlIENPUyAxIHRvIHN0b3JlIHRoZSB2YWx1ZSBzZXQuCgo1LiBXcml0ZSB0aGUg Q09TIDEgcmVnaXN0ZXJzLiBUaGUgQ09TIHJlZ2lzdGVycyB2YWx1ZXMgYXJlCmNoYW5nZWQgdG8g YmVsb3cgbm93LgogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAg ICB8IENPUyAwIHwgQ09TIDEgfCBDT1MgMiB8IC4uLiB8CiAgICAgICAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpMMyBDQVQgIHwgMHg3ZmYgfCAweDFmZiB8IC4uLiAgIHwgLi4uIHwK ICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkwyIENBVCAgfCAweGZmICB8 IDB4ZmYgIHwgLi4uICAgfCAuLi4gfAogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCjYuIFRoZSByZWZbMV0gaXMgaW5jcmVhc2VkIHRvIDEgYmVjYXVzZSBEb20xIGlzIHVz aW5nIGl0IG5vdy4KCjcuIFNhdmUgMSB0byBEb20xJ3MgcHNyX2Nvc19pZHNbc29ja2V0XS4KClRo ZW4sIHVzZXIgd2FudHMgdG8gc2V0IEwzIENBVCBvZiBEb20yIHRvIDB4MWZmIHRvby4gVGhlIG9s ZF9jb3MKb2YgRG9tMiBpcyAwIHRvby4gUmVwZWF0IGFib3ZlIGZsb3cuCgpUaGUgdmFsIGFycmF5 IGFzc2VtYmxlZCBpczoKdmFsWzBdOiAweDFmZgp2YWxbMV06IDB4ZmYKClNvLCBpdCBjYW4gZmlu ZCBhIG1hdGNoaW5nIENPUywgQ09TIDEuIFRoZW4sIGl0IGNhbiByZXVzZSBDT1MgMQpmb3IgRG9t Mi4KClRoZSByZWZbMV0gaXMgaW5jcmVhc2VkIHRvIDIgbm93IGJlY2F1c2UgYm90aCBEb20xIGFu ZCBEb20yIGFyZQp1c2luZyB0aGlzIENPUyBJRC4gU2V0IDEgdG8gRG9tMidzIHBzcl9jb3NfaWRz W3NvY2tldF0uCgpTaWduZWQtb2ZmLWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNv bT4KLS0tCiB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgIHwgIDE4ICsrLS0tCiB4ZW4vYXJjaC94 ODYvcHNyLmMgICAgICAgIHwgMjAyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmggfCAgIDQgKy0KIDMgZmlsZXMg Y2hhbmdlZCwgMjEwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwppbmRleCAwOThl Mzk5Li5mOGY1NTM5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMKKysrIGIveGVu L2FyY2gveDg2L2RvbWN0bC5jCkBAIC0xNDIyLDIxICsxNDIyLDIxIEBAIGxvbmcgYXJjaF9kb19k b21jdGwoCiAgICAgICAgIHN3aXRjaCAoIGRvbWN0bC0+dS5wc3JfY2F0X29wLmNtZCApCiAgICAg ICAgIHsKICAgICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NCTToKLSAg ICAgICAgICAgIHJldCA9IHBzcl9zZXRfbDNfY2JtKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29wLnRh cmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfY2F0 X29wLmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVf TDMpOworICAgICAgICAgICAgcmV0ID0gcHNyX3NldF92YWwoZCwgZG9tY3RsLT51LnBzcl9jYXRf b3AudGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9j YXRfb3AuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9M Myk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX0NB VF9PUF9TRVRfTDNfQ09ERToKLSAgICAgICAgICAgIHJldCA9IHBzcl9zZXRfbDNfY2JtKGQsIGRv bWN0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQU1JfQ0JNX1RZUEVfTDNfQ09ERSk7CisgICAgICAgICAgICByZXQgPSBwc3Jfc2V0 X3ZhbChkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUFNSX0NCTV9UWVBFX0wzX0NPREUpOwogICAgICAgICAgICAgYnJlYWs7CiAK ICAgICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0RBVEE6Ci0gICAgICAg ICAgICByZXQgPSBwc3Jfc2V0X2wzX2NibShkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5k YXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX0NCTV9UWVBFX0wzX0RB VEEpOworICAgICAgICAgICAgcmV0ID0gcHNyX3NldF92YWwoZCwgZG9tY3RsLT51LnBzcl9jYXRf b3AudGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9j YXRfb3AuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9M M19EQVRBKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9Q U1JfQ0FUX09QX0dFVF9MM19DQk06CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94 ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggMGNiOTk3MS4uMjQzMzQ0YiAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtNTQzLDE4ICs1NDMs MjE0IEBAIGludCBwc3JfZ2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29j a2V0LAogICAgIHJldHVybiBfX3Bzcl9nZXQoc29ja2V0LCB0eXBlLCBOVUxMLCAwLCBkLCB2YWwp OwogfQogCi1pbnQgcHNyX3NldF9sM19jYm0oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50 IHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBjYm0sIGVudW0gY2JtX3R5cGUg dHlwZSkKKy8qIFNldCB2YWx1ZSBmdW5jdGlvbnMgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0 X2Nvc19udW0oY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbykKIHsKICAgICByZXR1 cm4gMDsKIH0KIAorc3RhdGljIGludCBhc3NlbWJsZV92YWxfYXJyYXkodWludDY0X3QgKnZhbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFycmF5X2xlbiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmlu Zm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcykK K3sKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIGludCBzZXRfbmV3X3ZhbF90b19h cnJheSh1aW50NjRfdCAqdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBhcnJheV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDY0X3QgbSkKK3sKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIGlu dCBmaW5kX2Nvcyhjb25zdCB1aW50NjRfdCAqdmFsLCB1aW50MzJfdCBhcnJheV9sZW4sCisgICAg ICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUsCisgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCit7CisgICAgcmV0 dXJuIC1FTk9FTlQ7Cit9CisKK3N0YXRpYyBpbnQgcGlja19hdmFpbF9jb3MoY29uc3Qgc3RydWN0 IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dWludDY0X3QgKnZhbCwgdWludDMyX3QgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW51 bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZSkKK3sKKyAgICByZXR1cm4gLUVOT0VOVDsKK30KKwor c3RhdGljIGludCB3cml0ZV9wc3JfbXNyKHVuc2lnbmVkIGludCBzb2NrZXQsIHVuc2lnbmVkIGlu dCBjb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDY0X3QgKnZhbCkKK3sK KyAgICByZXR1cm4gLUVOT0VOVDsKK30KKworaW50IHBzcl9zZXRfdmFsKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCisgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsLCBl bnVtIGNibV90eXBlIHR5cGUpCit7CisgICAgdW5zaWduZWQgaW50IG9sZF9jb3M7CisgICAgaW50 IGNvcywgcmV0OworICAgIHVuc2lnbmVkIGludCAqcmVmOworICAgIHVpbnQ2NF90ICp2YWxfYXJy YXk7CisgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9IGdldF9zb2NrZXRfaW5mbyhz b2NrZXQpOworICAgIHVpbnQzMl90IGFycmF5X2xlbjsKKyAgICBlbnVtIHBzcl9mZWF0X3R5cGUg ZmVhdF90eXBlOworCisgICAgaWYgKCBJU19FUlIoaW5mbykgKQorICAgICAgICByZXR1cm4gUFRS X0VSUihpbmZvKTsKKworICAgIGZlYXRfdHlwZSA9IHBzcl9jYm1fdHlwZV90b19mZWF0X3R5cGUo dHlwZSk7CisgICAgaWYgKCAhdGVzdF9iaXQoZmVhdF90eXBlLCAmaW5mby0+ZmVhdF9tYXNrKSAp CisgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgLyoKKyAgICAgKiBTdGVwIDA6CisgICAg ICogb2xkX2NvcyBtZWFucyB0aGUgQ09TIElEIGN1cnJlbnQgZG9tYWluIGlzIHVzaW5nLiBCeSBk ZWZhdWx0LCBpdCBpcyAwLgorICAgICAqCisgICAgICogRm9yIGV2ZXJ5IENPUyBJRCwgdGhlcmUg aXMgYSByZWZlcmVuY2UgY291bnQgdG8gcmVjb3JkIGhvdyBtYW55IGRvbWFpbnMKKyAgICAgKiBh cmUgdXNpbmcgdGhlIENPUyByZWdpc3RlciBjb3JyZXNwb25kaW5nIHRvIHRoaXMgQ09TIElELgor ICAgICAqIC0gSWYgcmVmW29sZF9jb3NdIGlzIDAsIHRoYXQgbWVhbnMgdGhpcyBDT1MgaXMgbm90 IHVzZWQgYnkgYW55IGRvbWFpbi4KKyAgICAgKiAtIElmIHJlZltvbGRfY29zXSBpcyAxLCB0aGF0 IG1lYW5zIHRoaXMgQ09TIGlzIG9ubHkgdXNlZCBieSBjdXJyZW50CisgICAgICogICBkb21haW4u CisgICAgICogLSBJZiByZWZbb2xkX2Nvc10gaXMgbW9yZSB0aGFuIDEsIHRoYXQgbWVhbiBtdWx0 aXBsZSBkb21haW5zIGFyZSB1c2luZworICAgICAqICAgdGhpcyBDT1MuCisgICAgICovCisgICAg b2xkX2NvcyA9IGQtPmFyY2gucHNyX2Nvc19pZHNbc29ja2V0XTsKKyAgICBpZiAoIG9sZF9jb3Mg PiBNQVhfQ09TX1JFR19DTlQgKQorICAgICAgICByZXR1cm4gLUVPVkVSRkxPVzsKKworICAgIHJl ZiA9IGluZm8tPmNvc19yZWY7CisKKyAgICAvKgorICAgICAqIFN0ZXAgMToKKyAgICAgKiBBc3Nl bWxlIGEgdmFsdWUgYXJyYXkgdG8gc3RvcmUgYWxsIGZlYXR1ZXMgY29zX3JlZ192YWxbb2xkX2Nv c10uCisgICAgICogQW5kLCBzZXQgdGhlIGlucHV0IHZhbCBpbnRvIGFycmF5IGFjY29yZGluZyB0 byB0aGUgZmVhdHVyZSdzCisgICAgICogcG9zaXRpb24gaW4gYXJyYXkuCisgICAgICovCisgICAg YXJyYXlfbGVuID0gZ2V0X2Nvc19udW0oaW5mbyk7CisgICAgdmFsX2FycmF5ID0geHphbGxvY19h cnJheSh1aW50NjRfdCwgYXJyYXlfbGVuKTsKKyAgICBpZiAoICF2YWxfYXJyYXkgKQorICAgICAg ICByZXR1cm4gLUVOT01FTTsKKworICAgIGlmICggKHJldCA9IGFzc2VtYmxlX3ZhbF9hcnJheSh2 YWxfYXJyYXksIGFycmF5X2xlbiwgaW5mbywgb2xkX2NvcykpICE9IDAgKQorICAgIHsKKyAgICAg ICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICBp ZiAoIChyZXQgPSBzZXRfbmV3X3ZhbF90b19hcnJheSh2YWxfYXJyYXksIGFycmF5X2xlbiwgaW5m bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0X3R5cGUsIHR5cGUs IHZhbCkpICE9IDAgKQorICAgIHsKKyAgICAgICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICAgICAg cmV0dXJuIHJldDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIExvY2sgaGVyZSB0byBtYWtlIHN1 cmUgdGhlIHJlZiBpcyBub3QgY2hhbmdlZCBkdXJpbmcgZmluZCBhbmQKKyAgICAgKiB3cml0ZSBw cm9jZXNzLgorICAgICAqLworICAgIHNwaW5fbG9jaygmaW5mby0+cmVmX2xvY2spOworCisgICAg LyoKKyAgICAgKiBTdGVwIDI6CisgICAgICogVHJ5IHRvIGZpbmQgaWYgdGhlcmUgaXMgYWxyZWFk eSBhIENPUyBJRCBvbiB3aGljaCBhbGwgZmVhdHVyZXMnIHZhbHVlcworICAgICAqIGFyZSBzYW1l IGFzIHRoZSBhcnJheS4gVGhlbiwgd2UgY2FuIHJldXNlIHRoaXMgQ09TIElELgorICAgICAqLwor ICAgIGNvcyA9IGZpbmRfY29zKHZhbF9hcnJheSwgYXJyYXlfbGVuLCBmZWF0X3R5cGUsIGluZm8p OworICAgIGlmICggY29zID49IDAgKQorICAgIHsKKyAgICAgICAgaWYgKCBjb3MgPT0gb2xkX2Nv cyApCisgICAgICAgIHsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7 CisgICAgICAgICAgICB4ZnJlZSh2YWxfYXJyYXkpOworICAgICAgICAgICAgcmV0dXJuIDA7Cisg ICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICog U3RlcCAzOgorICAgICAgICAgKiBJZiBmYWlsIHRvIGZpbmQsIHdlIG5lZWQgYWxsb2NhdGUgYSBu ZXcgQ09TIElELgorICAgICAgICAgKiBJZiBtdWx0aXBsZSBkb21haW5zIGFyZSB1c2luZyBzYW1l IENPUyBJRCwgaXRzIHJlZiBpcyBtb3JlCisgICAgICAgICAqIHRoYW4gMS4gVGhhdCBtZWFucyB3 ZSBjYW5ub3QgZnJlZSB0aGlzIENPUyB0byBtYWtlIGN1cnJlbnQgZG9tYWluCisgICAgICAgICAq IHVzZSBpdC4gQmVjYXVzZSBvdGhlciBkb21haW5zIGFyZSB1c2luZyB0aGUgdmFsdWUgc2F2ZWQg aW4gdGhlIENPUy4KKyAgICAgICAgICogVW5sZXNzIHRoZSByZWYgaXMgY2hhbmdlZCB0byAxICht ZWFuIG9ubHkgY3VycmVudCBkb21haW4gaXMgdXNpbmcKKyAgICAgICAgICogaXQpLCB3ZSBjYW5u b3QgYWxsb2NhdGUgdGhlIENPUyBJRCB0byBjdXJyZW50IGRvbWFpbi4KKyAgICAgICAgICogU28s IG9ubHkgdGhlIENPUyBJRCB3aGljaCByZWYgaXMgMSBvciAwIGNhbiBiZSBhbGxvY2F0ZWQuCisg ICAgICAgICAqLworICAgICAgICBjb3MgPSBwaWNrX2F2YWlsX2NvcyhpbmZvLCB2YWxfYXJyYXks IGFycmF5X2xlbiwgb2xkX2NvcywgZmVhdF90eXBlKTsKKyAgICAgICAgaWYgKCBjb3MgPCAwICkK KyAgICAgICAgeworICAgICAgICAgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9sb2NrKTsKKyAg ICAgICAgICAgIHhmcmVlKHZhbF9hcnJheSk7CisgICAgICAgICAgICByZXR1cm4gY29zOworICAg ICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogU3RlcCA0OgorICAgICAgICAgKiBXcml0 ZSBhbGwgZmVhdHVyZXMgTVNScyBhY2NvcmRpbmcgdG8gdGhlIENPUyBJRC4KKyAgICAgICAgICov CisgICAgICAgIHJldCA9IHdyaXRlX3Bzcl9tc3Ioc29ja2V0LCBjb3MsIHZhbF9hcnJheSk7Cisg ICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgeworICAgICAgICAgICAgc3Bpbl91bmxvY2soJmlu Zm8tPnJlZl9sb2NrKTsKKyAgICAgICAgICAgIHhmcmVlKHZhbF9hcnJheSk7CisgICAgICAgICAg ICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBTdGVwIDU6 CisgICAgICogVXBkYXRlIHJlZiBhY2NvcmRpbmcgdG8gQ09TIElELgorICAgICAqLworICAgIHJl Zltjb3NdKys7CisgICAgQVNTRVJUKHJlZltjb3NdIHx8IGNvcyA9PSAwKTsKKyAgICByZWZbb2xk X2Nvc10tLTsKKyAgICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2spOworCisgICAgLyoKKyAg ICAgKiBTdGVwIDY6CisgICAgICogU2F2ZSB0aGUgQ09TIElEIGludG8gY3VycmVudCBkb21haW4n cyBwc3JfY29zX2lkc1tdIHNvIHRoYXQgd2UgY2FuIGtub3cKKyAgICAgKiB3aGljaCBDT1MgdGhl IGRvbWFpbiBpcyB1c2luZyBvbiB0aGUgc29ja2V0LiBPbmUgZG9tYWluIGNhbiBvbmx5IHVzZQor ICAgICAqIG9uZSBDT1MgSUQgYXQgc2FtZSB0aW1lIG9uIGVhY2ggc29ja2V0LgorICAgICAqLwor ICAgIGQtPmFyY2gucHNyX2Nvc19pZHNbc29ja2V0XSA9IGNvczsKKyAgICB4ZnJlZSh2YWxfYXJy YXkpOworCisgICAgcmV0dXJuIDA7Cit9CisKIC8qIENhbGxlZCB3aXRoIGRvbWFpbiBsb2NrIGhl bGQsIG5vIGV4dHJhIGxvY2sgbmVlZGVkIGZvciAncHNyX2Nvc19pZHMnICovCiBzdGF0aWMgdm9p ZCBwc3JfZnJlZV9jb3Moc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICBpZiggIWQtPmFyY2gucHNy X2Nvc19pZHMgKQorICAgIHVuc2lnbmVkIGludCBzb2NrZXQsIGNvczsKKworICAgIGlmICggIWQt PmFyY2gucHNyX2Nvc19pZHMgKQogICAgICAgICByZXR1cm47CiAKKyAgICAvKiBEb21haW4gaXMg ZnJlZSBzbyBpdHMgY29zX3JlZiBzaG91bGQgYmUgZGVjcmVhc2VkLiAqLworICAgIGZvciAoIHNv Y2tldCA9IDA7IHNvY2tldCA8IG5yX3NvY2tldHM7IHNvY2tldCsrICkKKyAgICB7CisgICAgICAg IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm87CisKKyAgICAgICAgLyogY29zIDAgaXMgZGVm YXVsdCBvbmUgd2hpY2ggZG9lcyBub3QgbmVlZCBiZSBoYW5kbGVkLiAqLworICAgICAgICBpZiAo IChjb3MgPSBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF0pID09IDAgKQorICAgICAgICAgICAg Y29udGludWU7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogSWYgZG9tYWluIHVzZXMgb3RoZXIg Y29zIGlkcywgYWxsIGNvcnJlc3BvbmRpbmcgcmVmcyBtdXN0IGhhdmUgYmVlbgorICAgICAgICAg KiBpbmNyZWFzZWQgMSBmb3IgdGhpcyBkb21haW4uIFNvLCB3ZSBuZWVkIGRlY3JlYXNlIHRoZW0u CisgICAgICAgICAqLworICAgICAgICBpbmZvID0gc29ja2V0X2luZm8gKyBzb2NrZXQ7CisgICAg ICAgIEFTU0VSVChpbmZvLT5jb3NfcmVmW2Nvc10gfHwgY29zID09IDApOworICAgICAgICBzcGlu X2xvY2soJmluZm8tPnJlZl9sb2NrKTsKKyAgICAgICAgaW5mby0+Y29zX3JlZltjb3NdLS07Cisg ICAgICAgIHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7CisgICAgfQorCiAgICAgeGZyZWUo ZC0+YXJjaC5wc3JfY29zX2lkcyk7CiAgICAgZC0+YXJjaC5wc3JfY29zX2lkcyA9IE5VTEw7CiB9 CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9wc3IuaAppbmRleCA1NjllN2RmLi5mZGU3ODgyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L3Bzci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKQEAgLTcyLDgg KzcyLDggQEAgaW50IHBzcl9nZXRfaW5mbyh1bnNpZ25lZCBpbnQgc29ja2V0LCBlbnVtIGNibV90 eXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFbXSwgdW5zaWduZWQgaW50 IGFycmF5X2xlbik7CiBpbnQgcHNyX2dldF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg aW50IHNvY2tldCwKICAgICAgICAgICAgICAgICB1aW50NjRfdCAqdmFsLCBlbnVtIGNibV90eXBl IHR5cGUpOwotaW50IHBzcl9zZXRfbDNfY2JtKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGlu dCBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgdWludDY0X3QgY2JtLCBlbnVtIGNibV90eXBl IHR5cGUpOworaW50IHBzcl9zZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBz b2NrZXQsCisgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsLCBlbnVtIGNibV90eXBlIHR5cGUp OwogCiBpbnQgcHNyX2RvbWFpbl9pbml0KHN0cnVjdCBkb21haW4gKmQpOwogdm9pZCBwc3JfZG9t YWluX2ZyZWUoc3RydWN0IGRvbWFpbiAqZCk7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=