From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v5 08/24] x86: refactor psr: set value: implement framework. Date: Wed, 18 Jan 2017 10:02:31 +0800 Message-ID: <1484704967-5609-9-git-send-email-yi.y.sun@linux.intel.com> References: <1484704967-5609-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 1cTfbm-0005ad-Gu for xen-devel@lists.xenproject.org; Wed, 18 Jan 2017 02:04:18 +0000 In-Reply-To: <1484704967-5609-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: wei.liu2@citrix.com, konrad.wilk@oracle.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 L3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwppbmRleCAxMWQy MTI3Li5kYjU2NTAwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMKKysrIGIveGVu L2FyY2gveDg2L2RvbWN0bC5jCkBAIC0xMzY1LDIxICsxMzY1LDIxIEBAIGxvbmcgYXJjaF9kb19k 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 ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggM2NiYjYwYy4uMDUwYjBkZiAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtNTM5LDE4ICs1Mzks MjE0IEBAIGludCBwc3JfZ2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29j a2V0LAogICAgIHJldHVybiAtRU5PRU5UOwogfQogCi1pbnQgcHNyX3NldF9sM19jYm0oc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICB1aW50 NjRfdCBjYm0sIGVudW0gY2JtX3R5cGUgdHlwZSkKKy8qIFNldCB2YWx1ZSBmdW5jdGlvbnMgKi8K K3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X2Nvc19udW0oY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRf aW5mbyAqaW5mbykKIHsKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBhc3NlbWJsZV92 YWxfYXJyYXkodWludDY0X3QgKnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgb2xkX2NvcykKK3sKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworc3Rh dGljIGludCBzZXRfbmV3X3ZhbF90b19hcnJheSh1aW50NjRfdCAqdmFsLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhcnJheV9sZW4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbSkKK3sKKyAgICByZXR1cm4g LUVJTlZBTDsKK30KKworc3RhdGljIGludCBmaW5kX2Nvcyhjb25zdCB1aW50NjRfdCAqdmFsLCB1 aW50MzJfdCBhcnJheV9sZW4sCisgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlw ZSBmZWF0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0 X2luZm8gKmluZm8pCit7CisgICAgcmV0dXJuIC1FTk9FTlQ7Cit9CisKK3N0YXRpYyBpbnQgcGlj a19hdmFpbF9jb3MoY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDY0X3QgKnZhbCwgdWludDMyX3QgYXJyYXlfbGVu LAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZSkKK3sKKyAg ICByZXR1cm4gLUVOT0VOVDsKK30KKworc3RhdGljIGludCB3cml0ZV9wc3JfbXNyKHVuc2lnbmVk IGludCBzb2NrZXQsIHVuc2lnbmVkIGludCBjb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdWludDY0X3QgKnZhbCkKK3sKKyAgICByZXR1cm4gLUVOT0VOVDsKK30KKworaW50IHBz cl9zZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCisgICAgICAg ICAgICAgICAgdWludDY0X3QgdmFsLCBlbnVtIGNibV90eXBlIHR5cGUpCit7CisgICAgdW5zaWdu ZWQgaW50IG9sZF9jb3M7CisgICAgaW50IGNvcywgcmV0OworICAgIHVuc2lnbmVkIGludCAqcmVm OworICAgIHVpbnQ2NF90ICp2YWxfYXJyYXk7CisgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAq aW5mbyA9IGdldF9zb2NrZXRfaW5mbyhzb2NrZXQpOworICAgIHVpbnQzMl90IGFycmF5X2xlbjsK KyAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlOworCisgICAgaWYgKCBJU19FUlIoaW5m bykgKQorICAgICAgICByZXR1cm4gUFRSX0VSUihpbmZvKTsKKworICAgIGZlYXRfdHlwZSA9IHBz cl9jYm1fdHlwZV90b19mZWF0X3R5cGUodHlwZSk7CisgICAgaWYgKCAhdGVzdF9iaXQoZmVhdF90 eXBlLCAmaW5mby0+ZmVhdF9tYXNrKSApCisgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAg LyoKKyAgICAgKiBTdGVwIDA6CisgICAgICogb2xkX2NvcyBtZWFucyB0aGUgQ09TIElEIGN1cnJl bnQgZG9tYWluIGlzIHVzaW5nLiBCeSBkZWZhdWx0LCBpdCBpcyAwLgorICAgICAqCisgICAgICog Rm9yIGV2ZXJ5IENPUyBJRCwgdGhlcmUgaXMgYSByZWZlcmVuY2UgY291bnQgdG8gcmVjb3JkIGhv dyBtYW55IGRvbWFpbnMKKyAgICAgKiBhcmUgdXNpbmcgdGhlIENPUyByZWdpc3RlciBjb3JyZXNw b25kaW5nIHRvIHRoaXMgQ09TIElELgorICAgICAqIC0gSWYgcmVmW29sZF9jb3NdIGlzIDAsIHRo YXQgbWVhbnMgdGhpcyBDT1MgaXMgbm90IHVzZWQgYnkgYW55IGRvbWFpbi4KKyAgICAgKiAtIElm IHJlZltvbGRfY29zXSBpcyAxLCB0aGF0IG1lYW5zIHRoaXMgQ09TIGlzIG9ubHkgdXNlZCBieSBj dXJyZW50CisgICAgICogICBkb21haW4uCisgICAgICogLSBJZiByZWZbb2xkX2Nvc10gaXMgbW9y ZSB0aGFuIDEsIHRoYXQgbWVhbiBtdWx0aXBsZSBkb21haW5zIGFyZSB1c2luZworICAgICAqICAg dGhpcyBDT1MuCisgICAgICovCisgICAgb2xkX2NvcyA9IGQtPmFyY2gucHNyX2Nvc19pZHNbc29j a2V0XTsKKyAgICBpZiAoIG9sZF9jb3MgPiBNQVhfQ09TX1JFR19DTlQgKQorICAgICAgICByZXR1 cm4gLUVPVkVSRkxPVzsKKworICAgIHJlZiA9IGluZm8tPmNvc19yZWY7CisKKyAgICAvKgorICAg ICAqIFN0ZXAgMToKKyAgICAgKiBBc3NlbWxlIGEgdmFsdWUgYXJyYXkgdG8gc3RvcmUgYWxsIGZl YXR1ZXMgY29zX3JlZ192YWxbb2xkX2Nvc10uCisgICAgICogQW5kLCBzZXQgdGhlIGlucHV0IHZh bCBpbnRvIGFycmF5IGFjY29yZGluZyB0byB0aGUgZmVhdHVyZSdzCisgICAgICogcG9zaXRpb24g aW4gYXJyYXkuCisgICAgICovCisgICAgYXJyYXlfbGVuID0gZ2V0X2Nvc19udW0oaW5mbyk7Cisg ICAgdmFsX2FycmF5ID0geHphbGxvY19hcnJheSh1aW50NjRfdCwgYXJyYXlfbGVuKTsKKyAgICBp ZiAoICF2YWxfYXJyYXkgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIGlmICggKHJl dCA9IGFzc2VtYmxlX3ZhbF9hcnJheSh2YWxfYXJyYXksIGFycmF5X2xlbiwgaW5mbywgb2xkX2Nv cykpICE9IDAgKQorICAgIHsKKyAgICAgICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICAgICAgcmV0 dXJuIHJldDsKKyAgICB9CisKKyAgICBpZiAoIChyZXQgPSBzZXRfbmV3X3ZhbF90b19hcnJheSh2 YWxfYXJyYXksIGFycmF5X2xlbiwgaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmZWF0X3R5cGUsIHR5cGUsIHZhbCkpICE9IDAgKQorICAgIHsKKyAgICAgICAgeGZy ZWUodmFsX2FycmF5KTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICAvKgorICAg ICAqIExvY2sgaGVyZSB0byBtYWtlIHN1cmUgdGhlIHJlZiBpcyBub3QgY2hhbmdlZCBkdXJpbmcg ZmluZCBhbmQKKyAgICAgKiB3cml0ZSBwcm9jZXNzLgorICAgICAqLworICAgIHNwaW5fbG9jaygm aW5mby0+cmVmX2xvY2spOworCisgICAgLyoKKyAgICAgKiBTdGVwIDI6CisgICAgICogVHJ5IHRv IGZpbmQgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIENPUyBJRCBvbiB3aGljaCBhbGwgZmVhdHVyZXMn IHZhbHVlcworICAgICAqIGFyZSBzYW1lIGFzIHRoZSBhcnJheS4gVGhlbiwgd2UgY2FuIHJldXNl IHRoaXMgQ09TIElELgorICAgICAqLworICAgIGNvcyA9IGZpbmRfY29zKHZhbF9hcnJheSwgYXJy YXlfbGVuLCBmZWF0X3R5cGUsIGluZm8pOworICAgIGlmICggY29zID49IDAgKQorICAgIHsKKyAg ICAgICAgaWYgKCBjb3MgPT0gb2xkX2NvcyApCisgICAgICAgIHsKKyAgICAgICAgICAgIHNwaW5f dW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7CisgICAgICAgICAgICB4ZnJlZSh2YWxfYXJyYXkpOwor ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK KyAgICAgICAgLyoKKyAgICAgICAgICogU3RlcCAzOgorICAgICAgICAgKiBJZiBmYWlsIHRvIGZp bmQsIHdlIG5lZWQgYWxsb2NhdGUgYSBuZXcgQ09TIElELgorICAgICAgICAgKiBJZiBtdWx0aXBs ZSBkb21haW5zIGFyZSB1c2luZyBzYW1lIENPUyBJRCwgaXRzIHJlZiBpcyBtb3JlCisgICAgICAg ICAqIHRoYW4gMS4gVGhhdCBtZWFucyB3ZSBjYW5ub3QgZnJlZSB0aGlzIENPUyB0byBtYWtlIGN1 cnJlbnQgZG9tYWluCisgICAgICAgICAqIHVzZSBpdC4gQmVjYXVzZSBvdGhlciBkb21haW5zIGFy ZSB1c2luZyB0aGUgdmFsdWUgc2F2ZWQgaW4gdGhlIENPUy4KKyAgICAgICAgICogVW5sZXNzIHRo ZSByZWYgaXMgY2hhbmdlZCB0byAxIChtZWFuIG9ubHkgY3VycmVudCBkb21haW4gaXMgdXNpbmcK KyAgICAgICAgICogaXQpLCB3ZSBjYW5ub3QgYWxsb2NhdGUgdGhlIENPUyBJRCB0byBjdXJyZW50 IGRvbWFpbi4KKyAgICAgICAgICogU28sIG9ubHkgdGhlIENPUyBJRCB3aGljaCByZWYgaXMgMSBv ciAwIGNhbiBiZSBhbGxvY2F0ZWQuCisgICAgICAgICAqLworICAgICAgICBjb3MgPSBwaWNrX2F2 YWlsX2NvcyhpbmZvLCB2YWxfYXJyYXksIGFycmF5X2xlbiwgb2xkX2NvcywgZmVhdF90eXBlKTsK KyAgICAgICAgaWYgKCBjb3MgPCAwICkKKyAgICAgICAgeworICAgICAgICAgICAgc3Bpbl91bmxv Y2soJmluZm8tPnJlZl9sb2NrKTsKKyAgICAgICAgICAgIHhmcmVlKHZhbF9hcnJheSk7CisgICAg ICAgICAgICByZXR1cm4gY29zOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICog U3RlcCA0OgorICAgICAgICAgKiBXcml0ZSBhbGwgZmVhdHVyZXMgTVNScyBhY2NvcmRpbmcgdG8g dGhlIENPUyBJRC4KKyAgICAgICAgICovCisgICAgICAgIHJldCA9IHdyaXRlX3Bzcl9tc3Ioc29j a2V0LCBjb3MsIHZhbF9hcnJheSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgeworICAg ICAgICAgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9sb2NrKTsKKyAgICAgICAgICAgIHhmcmVl KHZhbF9hcnJheSk7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQor CisgICAgLyoKKyAgICAgKiBTdGVwIDU6CisgICAgICogVXBkYXRlIHJlZiBhY2NvcmRpbmcgdG8g Q09TIElELgorICAgICAqLworICAgIHJlZltjb3NdKys7CisgICAgQVNTRVJUKHJlZltjb3NdIHx8 IGNvcyA9PSAwKTsKKyAgICByZWZbb2xkX2Nvc10tLTsKKyAgICBzcGluX3VubG9jaygmaW5mby0+ cmVmX2xvY2spOworCisgICAgLyoKKyAgICAgKiBTdGVwIDY6CisgICAgICogU2F2ZSB0aGUgQ09T IElEIGludG8gY3VycmVudCBkb21haW4ncyBwc3JfY29zX2lkc1tdIHNvIHRoYXQgd2UgY2FuIGtu b3cKKyAgICAgKiB3aGljaCBDT1MgdGhlIGRvbWFpbiBpcyB1c2luZyBvbiB0aGUgc29ja2V0LiBP bmUgZG9tYWluIGNhbiBvbmx5IHVzZQorICAgICAqIG9uZSBDT1MgSUQgYXQgc2FtZSB0aW1lIG9u IGVhY2ggc29ja2V0LgorICAgICAqLworICAgIGQtPmFyY2gucHNyX2Nvc19pZHNbc29ja2V0XSA9 IGNvczsKKyAgICB4ZnJlZSh2YWxfYXJyYXkpOworCisgICAgcmV0dXJuIDA7Cit9CisKIC8qIENh bGxlZCB3aXRoIGRvbWFpbiBsb2NrIGhlbGQsIG5vIGV4dHJhIGxvY2sgbmVlZGVkIGZvciAncHNy X2Nvc19pZHMnICovCiBzdGF0aWMgdm9pZCBwc3JfZnJlZV9jb3Moc3RydWN0IGRvbWFpbiAqZCkK IHsKLSAgICBpZiggIWQtPmFyY2gucHNyX2Nvc19pZHMgKQorICAgIHVuc2lnbmVkIGludCBzb2Nr ZXQsIGNvczsKKworICAgIGlmICggIWQtPmFyY2gucHNyX2Nvc19pZHMgKQogICAgICAgICByZXR1 cm47CiAKKyAgICAvKiBEb21haW4gaXMgZnJlZSBzbyBpdHMgY29zX3JlZiBzaG91bGQgYmUgZGVj cmVhc2VkLiAqLworICAgIGZvciAoIHNvY2tldCA9IDA7IHNvY2tldCA8IG5yX3NvY2tldHM7IHNv Y2tldCsrICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm87CisK KyAgICAgICAgLyogY29zIDAgaXMgZGVmYXVsdCBvbmUgd2hpY2ggZG9lcyBub3QgbmVlZCBiZSBo YW5kbGVkLiAqLworICAgICAgICBpZiAoIChjb3MgPSBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tl dF0pID09IDAgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLyoKKyAgICAgICAg ICogSWYgZG9tYWluIHVzZXMgb3RoZXIgY29zIGlkcywgYWxsIGNvcnJlc3BvbmRpbmcgcmVmcyBt dXN0IGhhdmUgYmVlbgorICAgICAgICAgKiBpbmNyZWFzZWQgMSBmb3IgdGhpcyBkb21haW4uIFNv LCB3ZSBuZWVkIGRlY3JlYXNlIHRoZW0uCisgICAgICAgICAqLworICAgICAgICBpbmZvID0gc29j a2V0X2luZm8gKyBzb2NrZXQ7CisgICAgICAgIEFTU0VSVChpbmZvLT5jb3NfcmVmW2Nvc10gfHwg Y29zID09IDApOworICAgICAgICBzcGluX2xvY2soJmluZm8tPnJlZl9sb2NrKTsKKyAgICAgICAg aW5mby0+Y29zX3JlZltjb3NdLS07CisgICAgICAgIHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9j ayk7CisgICAgfQorCiAgICAgeGZyZWUoZC0+YXJjaC5wc3JfY29zX2lkcyk7CiAgICAgZC0+YXJj aC5wc3JfY29zX2lkcyA9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L3Bzci5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAppbmRleCBkNTBlMzU5Li45NzIxNGZl IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvcHNyLmgKQEAgLTcyLDggKzcyLDggQEAgaW50IHBzcl9nZXRfaW5mbyh1bnNpZ25l ZCBpbnQgc29ja2V0LCBlbnVtIGNibV90eXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IGRhdGFbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbik7CiBpbnQgcHNyX2dldF92YWwoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKICAgICAgICAgICAgICAgICB1aW50 NjRfdCAqdmFsLCBlbnVtIGNibV90eXBlIHR5cGUpOwotaW50IHBzcl9zZXRfbDNfY2JtKHN0cnVj dCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgdWlu dDY0X3QgY2JtLCBlbnVtIGNibV90eXBlIHR5cGUpOworaW50IHBzcl9zZXRfdmFsKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCisgICAgICAgICAgICAgICAgdWludDY0X3Qg dmFsLCBlbnVtIGNibV90eXBlIHR5cGUpOwogCiBpbnQgcHNyX2RvbWFpbl9pbml0KHN0cnVjdCBk b21haW4gKmQpOwogdm9pZCBwc3JfZG9tYWluX2ZyZWUoc3RydWN0IGRvbWFpbiAqZCk7Ci0tIAox LjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=