From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v8 08/24] x86: refactor psr: set value: implement framework. Date: Wed, 15 Feb 2017 16:49:23 +0800 Message-ID: <1487148579-7243-9-git-send-email-yi.y.sun@linux.intel.com> References: <1487148579-7243-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cdvKv-0007MA-J6 for xen-devel@lists.xenproject.org; Wed, 15 Feb 2017 08:53:17 +0000 In-Reply-To: <1487148579-7243-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 ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggYzFhZmQzNi4uZDQxNGI1ZSAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtNTQ2LDE4ICs1NDYs MjE0IEBAIGludCBwc3JfZ2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29j a2V0LAogICAgIHJldHVybiBwc3JfZ2V0KHNvY2tldCwgdHlwZSwgTlVMTCwgMCwgZCwgdmFsKTsK IH0KIAotaW50IHBzcl9zZXRfbDNfY2JtKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBz b2NrZXQsCi0gICAgICAgICAgICAgICAgICAgdWludDY0X3QgY2JtLCBlbnVtIGNibV90eXBlIHR5 cGUpCisvKiBTZXQgdmFsdWUgZnVuY3Rpb25zICovCitzdGF0aWMgdW5zaWduZWQgaW50IGdldF9j b3NfbnVtKGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCiB7CiAgICAgcmV0dXJu IDA7CiB9CiAKK3N0YXRpYyBpbnQgYXNzZW1ibGVfdmFsX2FycmF5KHVpbnQ2NF90ICp2YWwsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhcnJheV9sZW4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZv LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9jb3MpCit7 CisgICAgcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgc2V0X25ld192YWxfdG9fYXJy YXkodWludDY0X3QgKnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIGNibV90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IG0pCit7CisgICAgcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQg ZmluZF9jb3MoY29uc3QgdWludDY0X3QgKnZhbCwgdWludDMyX3QgYXJyYXlfbGVuLAorICAgICAg ICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlLAorICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvKQoreworICAgIHJldHVy biAtRU5PRU5UOworfQorCitzdGF0aWMgaW50IHBpY2tfYXZhaWxfY29zKGNvbnN0IHN0cnVjdCBw c3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp bnQ2NF90ICp2YWwsIHVpbnQzMl90IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IG9sZF9jb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g cHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUpCit7CisgICAgcmV0dXJuIC1FTk9FTlQ7Cit9CisKK3N0 YXRpYyBpbnQgd3JpdGVfcHNyX21zcih1bnNpZ25lZCBpbnQgc29ja2V0LCB1bnNpZ25lZCBpbnQg Y29zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90ICp2YWwpCit7Cisg ICAgcmV0dXJuIC1FTk9FTlQ7Cit9CisKK2ludCBwc3Jfc2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBpbnQgc29ja2V0LAorICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbCwgZW51 bSBjYm1fdHlwZSB0eXBlKQoreworICAgIHVuc2lnbmVkIGludCBvbGRfY29zOworICAgIGludCBj b3MsIHJldDsKKyAgICB1bnNpZ25lZCBpbnQgKnJlZjsKKyAgICB1aW50NjRfdCAqdmFsX2FycmF5 OworICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBnZXRfc29ja2V0X2luZm8oc29j a2V0KTsKKyAgICB1aW50MzJfdCBhcnJheV9sZW47CisgICAgZW51bSBwc3JfZmVhdF90eXBlIGZl YXRfdHlwZTsKKworICAgIGlmICggSVNfRVJSKGluZm8pICkKKyAgICAgICAgcmV0dXJuIFBUUl9F UlIoaW5mbyk7CisKKyAgICBmZWF0X3R5cGUgPSBwc3JfY2JtX3R5cGVfdG9fZmVhdF90eXBlKHR5 cGUpOworICAgIGlmICggIXRlc3RfYml0KGZlYXRfdHlwZSwgJmluZm8tPmZlYXRfbWFzaykgKQor ICAgICAgICByZXR1cm4gLUVOT0VOVDsKKworICAgIC8qCisgICAgICogU3RlcCAwOgorICAgICAq IG9sZF9jb3MgbWVhbnMgdGhlIENPUyBJRCBjdXJyZW50IGRvbWFpbiBpcyB1c2luZy4gQnkgZGVm YXVsdCwgaXQgaXMgMC4KKyAgICAgKgorICAgICAqIEZvciBldmVyeSBDT1MgSUQsIHRoZXJlIGlz IGEgcmVmZXJlbmNlIGNvdW50IHRvIHJlY29yZCBob3cgbWFueSBkb21haW5zCisgICAgICogYXJl IHVzaW5nIHRoZSBDT1MgcmVnaXN0ZXIgY29ycmVzcG9uZGluZyB0byB0aGlzIENPUyBJRC4KKyAg ICAgKiAtIElmIHJlZltvbGRfY29zXSBpcyAwLCB0aGF0IG1lYW5zIHRoaXMgQ09TIGlzIG5vdCB1 c2VkIGJ5IGFueSBkb21haW4uCisgICAgICogLSBJZiByZWZbb2xkX2Nvc10gaXMgMSwgdGhhdCBt ZWFucyB0aGlzIENPUyBpcyBvbmx5IHVzZWQgYnkgY3VycmVudAorICAgICAqICAgZG9tYWluLgor ICAgICAqIC0gSWYgcmVmW29sZF9jb3NdIGlzIG1vcmUgdGhhbiAxLCB0aGF0IG1lYW4gbXVsdGlw bGUgZG9tYWlucyBhcmUgdXNpbmcKKyAgICAgKiAgIHRoaXMgQ09TLgorICAgICAqLworICAgIG9s ZF9jb3MgPSBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF07CisgICAgaWYgKCBvbGRfY29zID4g TUFYX0NPU19SRUdfQ05UICkKKyAgICAgICAgcmV0dXJuIC1FT1ZFUkZMT1c7CisKKyAgICByZWYg PSBpbmZvLT5jb3NfcmVmOworCisgICAgLyoKKyAgICAgKiBTdGVwIDE6CisgICAgICogQXNzZW1s ZSBhIHZhbHVlIGFycmF5IHRvIHN0b3JlIGFsbCBmZWF0dWVzIGNvc19yZWdfdmFsW29sZF9jb3Nd LgorICAgICAqIEFuZCwgc2V0IHRoZSBpbnB1dCB2YWwgaW50byBhcnJheSBhY2NvcmRpbmcgdG8g dGhlIGZlYXR1cmUncworICAgICAqIHBvc2l0aW9uIGluIGFycmF5LgorICAgICAqLworICAgIGFy cmF5X2xlbiA9IGdldF9jb3NfbnVtKGluZm8pOworICAgIHZhbF9hcnJheSA9IHh6YWxsb2NfYXJy YXkodWludDY0X3QsIGFycmF5X2xlbik7CisgICAgaWYgKCAhdmFsX2FycmF5ICkKKyAgICAgICAg cmV0dXJuIC1FTk9NRU07CisKKyAgICBpZiAoIChyZXQgPSBhc3NlbWJsZV92YWxfYXJyYXkodmFs X2FycmF5LCBhcnJheV9sZW4sIGluZm8sIG9sZF9jb3MpKSAhPSAwICkKKyAgICB7CisgICAgICAg IHhmcmVlKHZhbF9hcnJheSk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgaWYg KCAocmV0ID0gc2V0X25ld192YWxfdG9fYXJyYXkodmFsX2FycmF5LCBhcnJheV9sZW4sIGluZm8s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdF90eXBlLCB0eXBlLCB2 YWwpKSAhPSAwICkKKyAgICB7CisgICAgICAgIHhmcmVlKHZhbF9hcnJheSk7CisgICAgICAgIHJl dHVybiByZXQ7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBMb2NrIGhlcmUgdG8gbWFrZSBzdXJl IHRoZSByZWYgaXMgbm90IGNoYW5nZWQgZHVyaW5nIGZpbmQgYW5kCisgICAgICogd3JpdGUgcHJv Y2Vzcy4KKyAgICAgKi8KKyAgICBzcGluX2xvY2soJmluZm8tPnJlZl9sb2NrKTsKKworICAgIC8q CisgICAgICogU3RlcCAyOgorICAgICAqIFRyeSB0byBmaW5kIGlmIHRoZXJlIGlzIGFscmVhZHkg YSBDT1MgSUQgb24gd2hpY2ggYWxsIGZlYXR1cmVzJyB2YWx1ZXMKKyAgICAgKiBhcmUgc2FtZSBh cyB0aGUgYXJyYXkuIFRoZW4sIHdlIGNhbiByZXVzZSB0aGlzIENPUyBJRC4KKyAgICAgKi8KKyAg ICBjb3MgPSBmaW5kX2Nvcyh2YWxfYXJyYXksIGFycmF5X2xlbiwgZmVhdF90eXBlLCBpbmZvKTsK KyAgICBpZiAoIGNvcyA+PSAwICkKKyAgICB7CisgICAgICAgIGlmICggY29zID09IG9sZF9jb3Mg KQorICAgICAgICB7CisgICAgICAgICAgICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2spOwor ICAgICAgICAgICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAg ICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIFN0 ZXAgMzoKKyAgICAgICAgICogSWYgZmFpbCB0byBmaW5kLCB3ZSBuZWVkIGFsbG9jYXRlIGEgbmV3 IENPUyBJRC4KKyAgICAgICAgICogSWYgbXVsdGlwbGUgZG9tYWlucyBhcmUgdXNpbmcgc2FtZSBD T1MgSUQsIGl0cyByZWYgaXMgbW9yZQorICAgICAgICAgKiB0aGFuIDEuIFRoYXQgbWVhbnMgd2Ug Y2Fubm90IGZyZWUgdGhpcyBDT1MgdG8gbWFrZSBjdXJyZW50IGRvbWFpbgorICAgICAgICAgKiB1 c2UgaXQuIEJlY2F1c2Ugb3RoZXIgZG9tYWlucyBhcmUgdXNpbmcgdGhlIHZhbHVlIHNhdmVkIGlu IHRoZSBDT1MuCisgICAgICAgICAqIFVubGVzcyB0aGUgcmVmIGlzIGNoYW5nZWQgdG8gMSAobWVh biBvbmx5IGN1cnJlbnQgZG9tYWluIGlzIHVzaW5nCisgICAgICAgICAqIGl0KSwgd2UgY2Fubm90 IGFsbG9jYXRlIHRoZSBDT1MgSUQgdG8gY3VycmVudCBkb21haW4uCisgICAgICAgICAqIFNvLCBv bmx5IHRoZSBDT1MgSUQgd2hpY2ggcmVmIGlzIDEgb3IgMCBjYW4gYmUgYWxsb2NhdGVkLgorICAg ICAgICAgKi8KKyAgICAgICAgY29zID0gcGlja19hdmFpbF9jb3MoaW5mbywgdmFsX2FycmF5LCBh cnJheV9sZW4sIG9sZF9jb3MsIGZlYXRfdHlwZSk7CisgICAgICAgIGlmICggY29zIDwgMCApCisg ICAgICAgIHsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7CisgICAg ICAgICAgICB4ZnJlZSh2YWxfYXJyYXkpOworICAgICAgICAgICAgcmV0dXJuIGNvczsKKyAgICAg ICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFN0ZXAgNDoKKyAgICAgICAgICogV3JpdGUg YWxsIGZlYXR1cmVzIE1TUnMgYWNjb3JkaW5nIHRvIHRoZSBDT1MgSUQuCisgICAgICAgICAqLwor ICAgICAgICByZXQgPSB3cml0ZV9wc3JfbXNyKHNvY2tldCwgY29zLCB2YWxfYXJyYXkpOworICAg ICAgICBpZiAoIHJldCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZpbmZv LT5yZWZfbG9jayk7CisgICAgICAgICAgICB4ZnJlZSh2YWxfYXJyYXkpOworICAgICAgICAgICAg cmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogU3RlcCA1Ogor ICAgICAqIFVwZGF0ZSByZWYgYWNjb3JkaW5nIHRvIENPUyBJRC4KKyAgICAgKi8KKyAgICByZWZb Y29zXSsrOworICAgIEFTU0VSVChyZWZbY29zXSB8fCBjb3MgPT0gMCk7CisgICAgcmVmW29sZF9j b3NdLS07CisgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9sb2NrKTsKKworICAgIC8qCisgICAg ICogU3RlcCA2OgorICAgICAqIFNhdmUgdGhlIENPUyBJRCBpbnRvIGN1cnJlbnQgZG9tYWluJ3Mg cHNyX2Nvc19pZHNbXSBzbyB0aGF0IHdlIGNhbiBrbm93CisgICAgICogd2hpY2ggQ09TIHRoZSBk b21haW4gaXMgdXNpbmcgb24gdGhlIHNvY2tldC4gT25lIGRvbWFpbiBjYW4gb25seSB1c2UKKyAg ICAgKiBvbmUgQ09TIElEIGF0IHNhbWUgdGltZSBvbiBlYWNoIHNvY2tldC4KKyAgICAgKi8KKyAg ICBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF0gPSBjb3M7CisgICAgeGZyZWUodmFsX2FycmF5 KTsKKworICAgIHJldHVybiAwOworfQorCiAvKiBDYWxsZWQgd2l0aCBkb21haW4gbG9jayBoZWxk LCBubyBleHRyYSBsb2NrIG5lZWRlZCBmb3IgJ3Bzcl9jb3NfaWRzJyAqLwogc3RhdGljIHZvaWQg cHNyX2ZyZWVfY29zKHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgaWYoICFkLT5hcmNoLnBzcl9j b3NfaWRzICkKKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0LCBjb3M7CisKKyAgICBpZiAoICFkLT5h cmNoLnBzcl9jb3NfaWRzICkKICAgICAgICAgcmV0dXJuOwogCisgICAgLyogRG9tYWluIGlzIGZy ZWUgc28gaXRzIGNvc19yZWYgc2hvdWxkIGJlIGRlY3JlYXNlZC4gKi8KKyAgICBmb3IgKCBzb2Nr ZXQgPSAwOyBzb2NrZXQgPCBucl9zb2NrZXRzOyBzb2NrZXQrKyApCisgICAgeworICAgICAgICBz dHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvOworCisgICAgICAgIC8qIGNvcyAwIGlzIGRlZmF1 bHQgb25lIHdoaWNoIGRvZXMgbm90IG5lZWQgYmUgaGFuZGxlZC4gKi8KKyAgICAgICAgaWYgKCAo Y29zID0gZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdKSA9PSAwICkKKyAgICAgICAgICAgIGNv bnRpbnVlOworCisgICAgICAgIC8qCisgICAgICAgICAqIElmIGRvbWFpbiB1c2VzIG90aGVyIGNv cyBpZHMsIGFsbCBjb3JyZXNwb25kaW5nIHJlZnMgbXVzdCBoYXZlIGJlZW4KKyAgICAgICAgICog aW5jcmVhc2VkIDEgZm9yIHRoaXMgZG9tYWluLiBTbywgd2UgbmVlZCBkZWNyZWFzZSB0aGVtLgor ICAgICAgICAgKi8KKyAgICAgICAgaW5mbyA9IHNvY2tldF9pbmZvICsgc29ja2V0OworICAgICAg ICBBU1NFUlQoaW5mby0+Y29zX3JlZltjb3NdIHx8IGNvcyA9PSAwKTsKKyAgICAgICAgc3Bpbl9s b2NrKCZpbmZvLT5yZWZfbG9jayk7CisgICAgICAgIGluZm8tPmNvc19yZWZbY29zXS0tOworICAg ICAgICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2spOworICAgIH0KKwogICAgIHhmcmVlKGQt PmFyY2gucHNyX2Nvc19pZHMpOwogICAgIGQtPmFyY2gucHNyX2Nvc19pZHMgPSBOVUxMOwogfQpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvcHNyLmgKaW5kZXggNTY5ZTdkZi4uZmRlNzg4MiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9wc3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCkBAIC03Miw4ICs3 Miw4IEBAIGludCBwc3JfZ2V0X2luZm8odW5zaWduZWQgaW50IHNvY2tldCwgZW51bSBjYm1fdHlw ZSB0eXBlLAogICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRhW10sIHVuc2lnbmVkIGludCBh cnJheV9sZW4pOwogaW50IHBzcl9nZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGlu dCBzb2NrZXQsCiAgICAgICAgICAgICAgICAgdWludDY0X3QgKnZhbCwgZW51bSBjYm1fdHlwZSB0 eXBlKTsKLWludCBwc3Jfc2V0X2wzX2NibShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQg c29ja2V0LAotICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNibSwgZW51bSBjYm1fdHlwZSB0 eXBlKTsKK2ludCBwc3Jfc2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29j a2V0LAorICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbCwgZW51bSBjYm1fdHlwZSB0eXBlKTsK IAogaW50IHBzcl9kb21haW5faW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKIHZvaWQgcHNyX2RvbWFp bl9mcmVlKHN0cnVjdCBkb21haW4gKmQpOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK