From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH RESEND v5 08/24] x86: refactor psr: set value: implement framework. Date: Thu, 19 Jan 2017 14:01:10 +0800 Message-ID: <1484805686-7249-9-git-send-email-yi.y.sun@linux.intel.com> References: <1484805686-7249-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 1cU5oN-0006sG-Ca for xen-devel@lists.xenproject.org; Thu, 19 Jan 2017 06:03:03 +0000 In-Reply-To: <1484805686-7249-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 bT4KLS0tCnY1OgogICAgLSBtb2RpZnkgY29tbWl0IG1lc3NhZ2UgYmVjYXVzZSBvZiBmdW5jdGlv biBuYW1lIGNoYW5nZS4KICAgIC0gY2hhbmdlICdhbGxvY19uZXdfY29zJyB0byAncGlja19hdmFp bF9jb3MnIHRvIG1ha2UgbmFtZSBhY2N1cmF0ZS4KICAgIC0gZGl2aWRlICdnZXRfb2xkX3NldF9u ZXcnIHRvIHR3byBmdW5jdGlvbnMsICdhc3NlbWJsZV92YWxfYXJyYXknIGFuZAogICAgICAnc2V0 X25ld192YWxfdG9fYXJyYXknLgogICAgLSBjaGVjayBmZWF0dXJlIHR5cGUgd2hlbiBlbnRlcmlu ZyAncHNyX3NldF92YWwnLgogICAgLSByZW1vdmUgY2FzdC4KICAgIC0gdXNlIEFTU0VSVCB0byBj aGVjayByZWYuCiAgICAtIHJlbmFtZSAnZGF0W10nIHRvICdkYXRhW10nCi0tLQogeGVuL2FyY2gv eDg2L2RvbWN0bC5jICAgICB8ICAxOCArKy0tLQogeGVuL2FyY2gveDg2L3Bzci5jICAgICAgICB8 IDIwMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4v aW5jbHVkZS9hc20teDg2L3Bzci5oIHwgICA0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDIxMCBpbnNl cnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9t Y3RsLmMgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKaW5kZXggMTFkMjEyNy4uZGI1NjUwMCAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWN0bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwu YwpAQCAtMTM2NSwyMSArMTM2NSwyMSBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKAogICAgICAgICBz d2l0Y2ggKCBkb21jdGwtPnUucHNyX2NhdF9vcC5jbWQgKQogICAgICAgICB7CiAgICAgICAgIGNh c2UgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DQk06Ci0gICAgICAgICAgICByZXQgPSBw c3Jfc2V0X2wzX2NibShkLCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX0NCTV9UWVBFX0wzKTsKKyAgICAgICAgICAg IHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVfTDMpOwogICAgICAgICAgICAg YnJlYWs7CiAKICAgICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NPREU6 Ci0gICAgICAgICAgICByZXQgPSBwc3Jfc2V0X2wzX2NibShkLCBkb21jdGwtPnUucHNyX2NhdF9v cC50YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwtPnUucHNy X2NhdF9vcC5kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX0NCTV9U WVBFX0wzX0NPREUpOworICAgICAgICAgICAgcmV0ID0gcHNyX3NldF92YWwoZCwgZG9tY3RsLT51 LnBzcl9jYXRfb3AudGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tY3Rs LT51LnBzcl9jYXRfb3AuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9D Qk1fVFlQRV9MM19DT0RFKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgWEVO X0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19EQVRBOgotICAgICAgICAgICAgcmV0ID0gcHNyX3Nl dF9sM19jYm0oZCwgZG9tY3RsLT51LnBzcl9jYXRfb3AudGFyZ2V0LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9jYXRfb3AuZGF0YSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBTUl9DQk1fVFlQRV9MM19EQVRBKTsKKyAgICAgICAgICAg IHJldCA9IHBzcl9zZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfY2F0X29wLmRhdGEsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQU1JfQ0JNX1RZUEVfTDNfREFUQSk7CiAgICAgICAg ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNf Q0JNOgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5j CmluZGV4IDNjYmI2MGMuLjA1MGIwZGYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYwor KysgYi94ZW4vYXJjaC94ODYvcHNyLmMKQEAgLTUzOSwxOCArNTM5LDIxNCBAQCBpbnQgcHNyX2dl dF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKICAgICByZXR1cm4g LUVOT0VOVDsKIH0KIAotaW50IHBzcl9zZXRfbDNfY2JtKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGludCBzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgdWludDY0X3QgY2JtLCBlbnVtIGNi bV90eXBlIHR5cGUpCisvKiBTZXQgdmFsdWUgZnVuY3Rpb25zICovCitzdGF0aWMgdW5zaWduZWQg aW50IGdldF9jb3NfbnVtKGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCiB7CiAg ICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgYXNzZW1ibGVfdmFsX2FycmF5KHVpbnQ2NF90 ICp2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhcnJheV9sZW4s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9p bmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9s ZF9jb3MpCit7CisgICAgcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgc2V0X25ld192 YWxfdG9fYXJyYXkodWludDY0X3QgKnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnVtIGNibV90eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ2NF90IG0pCit7CisgICAgcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0 YXRpYyBpbnQgZmluZF9jb3MoY29uc3QgdWludDY0X3QgKnZhbCwgdWludDMyX3QgYXJyYXlfbGVu LAorICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlLAorICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvKQorewor ICAgIHJldHVybiAtRU5PRU5UOworfQorCitzdGF0aWMgaW50IHBpY2tfYXZhaWxfY29zKGNvbnN0 IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVpbnQ2NF90ICp2YWwsIHVpbnQzMl90IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9jb3MsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUpCit7CisgICAgcmV0dXJuIC1FTk9FTlQ7 Cit9CisKK3N0YXRpYyBpbnQgd3JpdGVfcHNyX21zcih1bnNpZ25lZCBpbnQgc29ja2V0LCB1bnNp Z25lZCBpbnQgY29zLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90ICp2 YWwpCit7CisgICAgcmV0dXJuIC1FTk9FTlQ7Cit9CisKK2ludCBwc3Jfc2V0X3ZhbChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0LAorICAgICAgICAgICAgICAgIHVpbnQ2NF90 IHZhbCwgZW51bSBjYm1fdHlwZSB0eXBlKQoreworICAgIHVuc2lnbmVkIGludCBvbGRfY29zOwor ICAgIGludCBjb3MsIHJldDsKKyAgICB1bnNpZ25lZCBpbnQgKnJlZjsKKyAgICB1aW50NjRfdCAq dmFsX2FycmF5OworICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBnZXRfc29ja2V0 X2luZm8oc29ja2V0KTsKKyAgICB1aW50MzJfdCBhcnJheV9sZW47CisgICAgZW51bSBwc3JfZmVh dF90eXBlIGZlYXRfdHlwZTsKKworICAgIGlmICggSVNfRVJSKGluZm8pICkKKyAgICAgICAgcmV0 dXJuIFBUUl9FUlIoaW5mbyk7CisKKyAgICBmZWF0X3R5cGUgPSBwc3JfY2JtX3R5cGVfdG9fZmVh dF90eXBlKHR5cGUpOworICAgIGlmICggIXRlc3RfYml0KGZlYXRfdHlwZSwgJmluZm8tPmZlYXRf bWFzaykgKQorICAgICAgICByZXR1cm4gLUVOT0VOVDsKKworICAgIC8qCisgICAgICogU3RlcCAw OgorICAgICAqIG9sZF9jb3MgbWVhbnMgdGhlIENPUyBJRCBjdXJyZW50IGRvbWFpbiBpcyB1c2lu Zy4gQnkgZGVmYXVsdCwgaXQgaXMgMC4KKyAgICAgKgorICAgICAqIEZvciBldmVyeSBDT1MgSUQs IHRoZXJlIGlzIGEgcmVmZXJlbmNlIGNvdW50IHRvIHJlY29yZCBob3cgbWFueSBkb21haW5zCisg ICAgICogYXJlIHVzaW5nIHRoZSBDT1MgcmVnaXN0ZXIgY29ycmVzcG9uZGluZyB0byB0aGlzIENP UyBJRC4KKyAgICAgKiAtIElmIHJlZltvbGRfY29zXSBpcyAwLCB0aGF0IG1lYW5zIHRoaXMgQ09T IGlzIG5vdCB1c2VkIGJ5IGFueSBkb21haW4uCisgICAgICogLSBJZiByZWZbb2xkX2Nvc10gaXMg MSwgdGhhdCBtZWFucyB0aGlzIENPUyBpcyBvbmx5IHVzZWQgYnkgY3VycmVudAorICAgICAqICAg ZG9tYWluLgorICAgICAqIC0gSWYgcmVmW29sZF9jb3NdIGlzIG1vcmUgdGhhbiAxLCB0aGF0IG1l YW4gbXVsdGlwbGUgZG9tYWlucyBhcmUgdXNpbmcKKyAgICAgKiAgIHRoaXMgQ09TLgorICAgICAq LworICAgIG9sZF9jb3MgPSBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF07CisgICAgaWYgKCBv bGRfY29zID4gTUFYX0NPU19SRUdfQ05UICkKKyAgICAgICAgcmV0dXJuIC1FT1ZFUkZMT1c7CisK KyAgICByZWYgPSBpbmZvLT5jb3NfcmVmOworCisgICAgLyoKKyAgICAgKiBTdGVwIDE6CisgICAg ICogQXNzZW1sZSBhIHZhbHVlIGFycmF5IHRvIHN0b3JlIGFsbCBmZWF0dWVzIGNvc19yZWdfdmFs W29sZF9jb3NdLgorICAgICAqIEFuZCwgc2V0IHRoZSBpbnB1dCB2YWwgaW50byBhcnJheSBhY2Nv cmRpbmcgdG8gdGhlIGZlYXR1cmUncworICAgICAqIHBvc2l0aW9uIGluIGFycmF5LgorICAgICAq LworICAgIGFycmF5X2xlbiA9IGdldF9jb3NfbnVtKGluZm8pOworICAgIHZhbF9hcnJheSA9IHh6 YWxsb2NfYXJyYXkodWludDY0X3QsIGFycmF5X2xlbik7CisgICAgaWYgKCAhdmFsX2FycmF5ICkK KyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICBpZiAoIChyZXQgPSBhc3NlbWJsZV92YWxf YXJyYXkodmFsX2FycmF5LCBhcnJheV9sZW4sIGluZm8sIG9sZF9jb3MpKSAhPSAwICkKKyAgICB7 CisgICAgICAgIHhmcmVlKHZhbF9hcnJheSk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQor CisgICAgaWYgKCAocmV0ID0gc2V0X25ld192YWxfdG9fYXJyYXkodmFsX2FycmF5LCBhcnJheV9s ZW4sIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdF90eXBl LCB0eXBlLCB2YWwpKSAhPSAwICkKKyAgICB7CisgICAgICAgIHhmcmVlKHZhbF9hcnJheSk7Cisg ICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBMb2NrIGhlcmUgdG8g bWFrZSBzdXJlIHRoZSByZWYgaXMgbm90IGNoYW5nZWQgZHVyaW5nIGZpbmQgYW5kCisgICAgICog d3JpdGUgcHJvY2Vzcy4KKyAgICAgKi8KKyAgICBzcGluX2xvY2soJmluZm8tPnJlZl9sb2NrKTsK KworICAgIC8qCisgICAgICogU3RlcCAyOgorICAgICAqIFRyeSB0byBmaW5kIGlmIHRoZXJlIGlz IGFscmVhZHkgYSBDT1MgSUQgb24gd2hpY2ggYWxsIGZlYXR1cmVzJyB2YWx1ZXMKKyAgICAgKiBh cmUgc2FtZSBhcyB0aGUgYXJyYXkuIFRoZW4sIHdlIGNhbiByZXVzZSB0aGlzIENPUyBJRC4KKyAg ICAgKi8KKyAgICBjb3MgPSBmaW5kX2Nvcyh2YWxfYXJyYXksIGFycmF5X2xlbiwgZmVhdF90eXBl LCBpbmZvKTsKKyAgICBpZiAoIGNvcyA+PSAwICkKKyAgICB7CisgICAgICAgIGlmICggY29zID09 IG9sZF9jb3MgKQorICAgICAgICB7CisgICAgICAgICAgICBzcGluX3VubG9jaygmaW5mby0+cmVm X2xvY2spOworICAgICAgICAgICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICAgICAgICAgIHJldHVy biAwOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8qCisgICAg ICAgICAqIFN0ZXAgMzoKKyAgICAgICAgICogSWYgZmFpbCB0byBmaW5kLCB3ZSBuZWVkIGFsbG9j YXRlIGEgbmV3IENPUyBJRC4KKyAgICAgICAgICogSWYgbXVsdGlwbGUgZG9tYWlucyBhcmUgdXNp bmcgc2FtZSBDT1MgSUQsIGl0cyByZWYgaXMgbW9yZQorICAgICAgICAgKiB0aGFuIDEuIFRoYXQg bWVhbnMgd2UgY2Fubm90IGZyZWUgdGhpcyBDT1MgdG8gbWFrZSBjdXJyZW50IGRvbWFpbgorICAg ICAgICAgKiB1c2UgaXQuIEJlY2F1c2Ugb3RoZXIgZG9tYWlucyBhcmUgdXNpbmcgdGhlIHZhbHVl IHNhdmVkIGluIHRoZSBDT1MuCisgICAgICAgICAqIFVubGVzcyB0aGUgcmVmIGlzIGNoYW5nZWQg dG8gMSAobWVhbiBvbmx5IGN1cnJlbnQgZG9tYWluIGlzIHVzaW5nCisgICAgICAgICAqIGl0KSwg d2UgY2Fubm90IGFsbG9jYXRlIHRoZSBDT1MgSUQgdG8gY3VycmVudCBkb21haW4uCisgICAgICAg ICAqIFNvLCBvbmx5IHRoZSBDT1MgSUQgd2hpY2ggcmVmIGlzIDEgb3IgMCBjYW4gYmUgYWxsb2Nh dGVkLgorICAgICAgICAgKi8KKyAgICAgICAgY29zID0gcGlja19hdmFpbF9jb3MoaW5mbywgdmFs X2FycmF5LCBhcnJheV9sZW4sIG9sZF9jb3MsIGZlYXRfdHlwZSk7CisgICAgICAgIGlmICggY29z IDwgMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9j ayk7CisgICAgICAgICAgICB4ZnJlZSh2YWxfYXJyYXkpOworICAgICAgICAgICAgcmV0dXJuIGNv czsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFN0ZXAgNDoKKyAgICAgICAg ICogV3JpdGUgYWxsIGZlYXR1cmVzIE1TUnMgYWNjb3JkaW5nIHRvIHRoZSBDT1MgSUQuCisgICAg ICAgICAqLworICAgICAgICByZXQgPSB3cml0ZV9wc3JfbXNyKHNvY2tldCwgY29zLCB2YWxfYXJy YXkpOworICAgICAgICBpZiAoIHJldCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHNwaW5fdW5s b2NrKCZpbmZvLT5yZWZfbG9jayk7CisgICAgICAgICAgICB4ZnJlZSh2YWxfYXJyYXkpOworICAg ICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICog U3RlcCA1OgorICAgICAqIFVwZGF0ZSByZWYgYWNjb3JkaW5nIHRvIENPUyBJRC4KKyAgICAgKi8K KyAgICByZWZbY29zXSsrOworICAgIEFTU0VSVChyZWZbY29zXSB8fCBjb3MgPT0gMCk7CisgICAg cmVmW29sZF9jb3NdLS07CisgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9sb2NrKTsKKworICAg IC8qCisgICAgICogU3RlcCA2OgorICAgICAqIFNhdmUgdGhlIENPUyBJRCBpbnRvIGN1cnJlbnQg ZG9tYWluJ3MgcHNyX2Nvc19pZHNbXSBzbyB0aGF0IHdlIGNhbiBrbm93CisgICAgICogd2hpY2gg Q09TIHRoZSBkb21haW4gaXMgdXNpbmcgb24gdGhlIHNvY2tldC4gT25lIGRvbWFpbiBjYW4gb25s eSB1c2UKKyAgICAgKiBvbmUgQ09TIElEIGF0IHNhbWUgdGltZSBvbiBlYWNoIHNvY2tldC4KKyAg ICAgKi8KKyAgICBkLT5hcmNoLnBzcl9jb3NfaWRzW3NvY2tldF0gPSBjb3M7CisgICAgeGZyZWUo dmFsX2FycmF5KTsKKworICAgIHJldHVybiAwOworfQorCiAvKiBDYWxsZWQgd2l0aCBkb21haW4g bG9jayBoZWxkLCBubyBleHRyYSBsb2NrIG5lZWRlZCBmb3IgJ3Bzcl9jb3NfaWRzJyAqLwogc3Rh dGljIHZvaWQgcHNyX2ZyZWVfY29zKHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgaWYoICFkLT5h cmNoLnBzcl9jb3NfaWRzICkKKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0LCBjb3M7CisKKyAgICBp ZiAoICFkLT5hcmNoLnBzcl9jb3NfaWRzICkKICAgICAgICAgcmV0dXJuOwogCisgICAgLyogRG9t YWluIGlzIGZyZWUgc28gaXRzIGNvc19yZWYgc2hvdWxkIGJlIGRlY3JlYXNlZC4gKi8KKyAgICBm b3IgKCBzb2NrZXQgPSAwOyBzb2NrZXQgPCBucl9zb2NrZXRzOyBzb2NrZXQrKyApCisgICAgewor ICAgICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvOworCisgICAgICAgIC8qIGNvcyAw IGlzIGRlZmF1bHQgb25lIHdoaWNoIGRvZXMgbm90IG5lZWQgYmUgaGFuZGxlZC4gKi8KKyAgICAg ICAgaWYgKCAoY29zID0gZC0+YXJjaC5wc3JfY29zX2lkc1tzb2NrZXRdKSA9PSAwICkKKyAgICAg ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qCisgICAgICAgICAqIElmIGRvbWFpbiB1c2Vz IG90aGVyIGNvcyBpZHMsIGFsbCBjb3JyZXNwb25kaW5nIHJlZnMgbXVzdCBoYXZlIGJlZW4KKyAg ICAgICAgICogaW5jcmVhc2VkIDEgZm9yIHRoaXMgZG9tYWluLiBTbywgd2UgbmVlZCBkZWNyZWFz ZSB0aGVtLgorICAgICAgICAgKi8KKyAgICAgICAgaW5mbyA9IHNvY2tldF9pbmZvICsgc29ja2V0 OworICAgICAgICBBU1NFUlQoaW5mby0+Y29zX3JlZltjb3NdIHx8IGNvcyA9PSAwKTsKKyAgICAg ICAgc3Bpbl9sb2NrKCZpbmZvLT5yZWZfbG9jayk7CisgICAgICAgIGluZm8tPmNvc19yZWZbY29z XS0tOworICAgICAgICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2spOworICAgIH0KKwogICAg IHhmcmVlKGQtPmFyY2gucHNyX2Nvc19pZHMpOwogICAgIGQtPmFyY2gucHNyX2Nvc19pZHMgPSBO VUxMOwogfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNs dWRlL2FzbS14ODYvcHNyLmgKaW5kZXggZDUwZTM1OS4uOTcyMTRmZSAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCkBA IC03Miw4ICs3Miw4IEBAIGludCBwc3JfZ2V0X2luZm8odW5zaWduZWQgaW50IHNvY2tldCwgZW51 bSBjYm1fdHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRhW10sIHVuc2ln bmVkIGludCBhcnJheV9sZW4pOwogaW50IHBzcl9nZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGludCBzb2NrZXQsCiAgICAgICAgICAgICAgICAgdWludDY0X3QgKnZhbCwgZW51bSBj Ym1fdHlwZSB0eXBlKTsKLWludCBwc3Jfc2V0X2wzX2NibShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBpbnQgc29ja2V0LAotICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNibSwgZW51bSBj Ym1fdHlwZSB0eXBlKTsKK2ludCBwc3Jfc2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBpbnQgc29ja2V0LAorICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbCwgZW51bSBjYm1fdHlw ZSB0eXBlKTsKIAogaW50IHBzcl9kb21haW5faW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKIHZvaWQg cHNyX2RvbWFpbl9mcmVlKHN0cnVjdCBkb21haW4gKmQpOwotLSAKMS45LjEKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK