From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v4 08/24] x86: refactor psr: set value: implement framework. Date: Wed, 14 Dec 2016 12:07:48 +0800 Message-ID: <1481688484-5093-9-git-send-email-yi.y.sun@linux.intel.com> References: <1481688484-5093-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 1cH7Re-00050T-OD for xen-devel@lists.xenproject.org; Wed, 14 Dec 2016 11:09:58 +0000 In-Reply-To: <1481688484-5093-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, 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 CiAgIElELgo0LiBJZiBmYWlsIHRvIGZpbmQsIHdlIG5lZWQgYWxsb2NhdGUgYSBuZXcgQ09TIElE LiBPbmx5IENPUyBJRCB3aGljaCByZWYKICAgaXMgMCBvciAxIGNhbiBiZSBhbGxvY2F0ZWQuCjUu 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 ODYvcHNyLmMgICAgICAgIHwgMTgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmggfCAgIDQgKy0KIDMgZmlsZXMg Y2hhbmdlZCwgMTkyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwppbmRleCAzZDdm YzM0Li44ZTU1MDJhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMKKysrIGIveGVu L2FyY2gveDg2L2RvbWN0bC5jCkBAIC0xMzg2LDIxICsxMzg2LDIxIEBAIGxvbmcgYXJjaF9kb19k 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 ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggMWVhNjk0ZS4uODM4ZjJkMSAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtNTEzLDE4ICs1MTMs MTk3IEBAIGludCBwc3JfZ2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29j a2V0LAogICAgIHJldHVybiAtRU5PRU5UOwogfQogCi1pbnQgcHNyX3NldF9sM19jYm0oc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKLSAgICAgICAgICAgICAgICAgICB1aW50 NjRfdCBjYm0sIGVudW0gY2JtX3R5cGUgdHlwZSkKKy8qIFNldCB2YWx1ZSBmdW5jdGlvbnMgKi8K K3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X2Nvc19udW0oY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRf aW5mbyAqaW5mbykKIHsKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBnZXRfb2xkX3Nl dF9uZXcodWludDY0X3QgKnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwc3Jf c29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgb2xkX2NvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlw ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG0pCit7CisgICAgcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgZmluZF9jb3MoY29uc3QgdWludDY0X3QgKnZhbCwgdWludDMy X3QgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICBlbnVtIGNibV90eXBlIHR5cGUsCisg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCit7 CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWxsb2NfbmV3X2Nvcyhjb25zdCBzdHJ1 Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVpbnQ2NF90ICp2YWwsIHVpbnQzMl90IGFycmF5X2xlbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbnVt IGNibV90eXBlIHR5cGUpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd3JpdGVf cHNyX21zcih1bnNpZ25lZCBpbnQgc29ja2V0LCB1bnNpZ25lZCBpbnQgY29zLAorICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90ICp2YWwpCit7CisgICAgcmV0dXJuIDA7Cit9 CisKK2ludCBwc3Jfc2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0 LAorICAgICAgICAgICAgICAgIHVpbnQ2NF90IHZhbCwgZW51bSBjYm1fdHlwZSB0eXBlKQorewor ICAgIHVuc2lnbmVkIGludCBvbGRfY29zOworICAgIGludCBjb3MsIHJldDsKKyAgICB1bnNpZ25l ZCBpbnQgKnJlZjsKKyAgICB1aW50NjRfdCAqdmFsX2FycmF5OworICAgIHN0cnVjdCBwc3Jfc29j a2V0X2luZm8gKmluZm8gPSBnZXRfc29ja2V0X2luZm8oc29ja2V0KTsKKyAgICB1aW50MzJfdCBh cnJheV9sZW47CisKKyAgICBpZiAoIElTX0VSUihpbmZvKSApCisgICAgICAgIHJldHVybiBQVFJf RVJSKGluZm8pOworCisgICAgLyoKKyAgICAgKiBTdGVwIDA6CisgICAgICogb2xkX2NvcyBtZWFu cyB0aGUgQ09TIElEIGN1cnJlbnQgZG9tYWluIGlzIHVzaW5nLiBCeSBkZWZhdWx0LCBpdCBpcyAw LgorICAgICAqCisgICAgICogRm9yIGV2ZXJ5IENPUyBJRCwgdGhlcmUgaXMgYSByZWZlcmVuY2Ug Y291bnQgdG8gcmVjb3JkIGhvdyBtYW55IGRvbWFpbnMKKyAgICAgKiBhcmUgdXNpbmcgdGhlIENP UyByZWdpc3RlciBjb3JyZXNwb25kaW5nIHRvIHRoaXMgQ09TIElELgorICAgICAqIC0gSWYgcmVm W29sZF9jb3NdIGlzIDAsIHRoYXQgbWVhbnMgdGhpcyBDT1MgaXMgbm90IHVzZWQgYnkgYW55IGRv bWFpbi4KKyAgICAgKiAtIElmIHJlZltvbGRfY29zXSBpcyAxLCB0aGF0IG1lYW5zIHRoaXMgQ09T IGlzIG9ubHkgdXNlZCBieSBjdXJyZW50CisgICAgICogICBkb21haW4uCisgICAgICogLSBJZiBy ZWZbb2xkX2Nvc10gaXMgbW9yZSB0aGFuIDEsIHRoYXQgbWVhbiBtdWx0aXBsZSBkb21haW5zIGFy ZSB1c2luZworICAgICAqICAgdGhpcyBDT1MuCisgICAgICovCisgICAgb2xkX2NvcyA9IGQtPmFy Y2gucHNyX2Nvc19pZHNbc29ja2V0XTsKKyAgICBpZiAoIG9sZF9jb3MgPiBNQVhfQ09TX1JFR19D TlQgKQorICAgICAgICByZXR1cm4gLUVPVkVSRkxPVzsKKworICAgIHJlZiA9IGluZm8tPmNvc19y ZWY7CisKKyAgICAvKgorICAgICAqIFN0ZXAgMToKKyAgICAgKiBBc3NlbWxlIGEgdmFsdWUgYXJy YXkgdG8gc3RvcmUgYWxsIGZlYXR1ZXMgY29zX3JlZ192YWxbb2xkX2Nvc10uCisgICAgICogQW5k LCBzZXQgdGhlIGlucHV0IHZhbCBpbnRvIGFycmF5IGFjY29yZGluZyB0byB0aGUgZmVhdHVyZSdz CisgICAgICogcG9zaXRpb24gaW4gYXJyYXkuCisgICAgICovCisgICAgYXJyYXlfbGVuID0gZ2V0 X2Nvc19udW0oKGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKilpbmZvKTsKKyAgICB2YWxf YXJyYXkgPSB4emFsbG9jX2FycmF5KHVpbnQ2NF90LCBhcnJheV9sZW4pOworICAgIGlmICggIXZh bF9hcnJheSApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgaWYgKCAocmV0ID0gZ2V0 X29sZF9zZXRfbmV3KHZhbF9hcnJheSwgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqKWluZm8sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9jb3MsIHR5cGUsIHZhbCkpICE9IDAgKQorICAg IHsKKyAgICAgICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9 CisKKyAgICAvKgorICAgICAqIExvY2sgaGVyZSB0byBtYWtlIHN1cmUgdGhlIHJlZiBpcyBub3Qg Y2hhbmdlZCBkdXJpbmcgZmluZCBhbmQKKyAgICAgKiB3cml0ZSBwcm9jZXNzLgorICAgICAqLwor ICAgIHNwaW5fbG9jaygmaW5mby0+cmVmX2xvY2spOworCisgICAgLyoKKyAgICAgKiBTdGVwIDI6 CisgICAgICogVHJ5IHRvIGZpbmQgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIENPUyBJRCBvbiB3aGlj aCBhbGwgZmVhdHVyZXMnIHZhbHVlcworICAgICAqIGFyZSBzYW1lIGFzIHRoZSBhcnJheS4gVGhl biwgd2UgY2FuIHJldXNlIHRoaXMgQ09TIElELgorICAgICAqLworICAgIGNvcyA9IGZpbmRfY29z KChjb25zdCB1aW50NjRfdCAqKXZhbF9hcnJheSwgYXJyYXlfbGVuLCB0eXBlLAorICAgICAgICAg ICAgICAgICAgIChjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICopaW5mbyk7CisgICAgaWYg KCBjb3MgPj0gMCApCisgICAgeworICAgICAgICBpZiAoIGNvcyA9PSBvbGRfY29zICkKKyAgICAg ICAgeworICAgICAgICAgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9sb2NrKTsKKyAgICAgICAg ICAgIHhmcmVlKHZhbF9hcnJheSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQor ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBTdGVwIDM6Cisg ICAgICAgICAqIElmIGZhaWwgdG8gZmluZCwgd2UgbmVlZCBhbGxvY2F0ZSBhIG5ldyBDT1MgSUQu CisgICAgICAgICAqIElmIG11bHRpcGxlIGRvbWFpbnMgYXJlIHVzaW5nIHNhbWUgQ09TIElELCBp dHMgcmVmIGlzIG1vcmUKKyAgICAgICAgICogdGhhbiAxLiBUaGF0IG1lYW5zIHdlIGNhbm5vdCBm cmVlIHRoaXMgQ09TIHRvIG1ha2UgY3VycmVudCBkb21haW4KKyAgICAgICAgICogdXNlIGl0LiBC ZWNhdXNlIG90aGVyIGRvbWFpbnMgYXJlIHVzaW5nIHRoZSB2YWx1ZSBzYXZlZCBpbiB0aGUgQ09T LgorICAgICAgICAgKiBVbmxlc3MgdGhlIHJlZiBpcyBjaGFuZ2VkIHRvIDEgKG1lYW4gb25seSBj dXJyZW50IGRvbWFpbiBpcyB1c2luZworICAgICAgICAgKiBpdCksIHdlIGNhbm5vdCBhbGxvY2F0 ZSB0aGUgQ09TIElEIHRvIGN1cnJlbnQgZG9tYWluLgorICAgICAgICAgKiBTbywgb25seSB0aGUg Q09TIElEIHdoaWNoIHJlZiBpcyAxIG9yIDAgY2FuIGJlIGFsbG9jYXRlZC4KKyAgICAgICAgICov CisgICAgICAgIGNvcyA9IGFsbG9jX25ld19jb3MoKGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2lu Zm8gKilpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50NjRfdCAq KXZhbF9hcnJheSwgYXJyYXlfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9j b3MsIHR5cGUpOworICAgICAgICBpZiAoIGNvcyA8IDAgKQorICAgICAgICB7CisgICAgICAgICAg ICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xvY2spOworICAgICAgICAgICAgeGZyZWUodmFsX2Fy cmF5KTsKKyAgICAgICAgICAgIHJldHVybiBjb3M7CisgICAgICAgIH0KKworICAgICAgICAvKgor ICAgICAgICAgKiBTdGVwIDQ6CisgICAgICAgICAqIFdyaXRlIGFsbCBmZWF0dXJlcyBNU1JzIGFj Y29yZGluZyB0byB0aGUgQ09TIElELgorICAgICAgICAgKi8KKyAgICAgICAgcmV0ID0gd3JpdGVf cHNyX21zcihzb2NrZXQsIGNvcywgKGNvbnN0IHVpbnQ2NF90ICopdmFsX2FycmF5KTsKKyAgICAg ICAgaWYgKCByZXQgKQorICAgICAgICB7CisgICAgICAgICAgICBzcGluX3VubG9jaygmaW5mby0+ cmVmX2xvY2spOworICAgICAgICAgICAgeGZyZWUodmFsX2FycmF5KTsKKyAgICAgICAgICAgIHJl dHVybiByZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIFN0ZXAgNToKKyAg ICAgKiBVcGRhdGUgcmVmIGFjY29yZGluZyB0byBDT1MgSUQuCisgICAgICovCisgICAgcmVmW2Nv c10rKzsKKyAgICByZWZbb2xkX2Nvc10tLTsKKyAgICBzcGluX3VubG9jaygmaW5mby0+cmVmX2xv Y2spOworCisgICAgLyoKKyAgICAgKiBTdGVwIDY6CisgICAgICogU2F2ZSB0aGUgQ09TIElEIGlu dG8gY3VycmVudCBkb21haW4ncyBwc3JfY29zX2lkc1tdIHNvIHRoYXQgd2UgY2FuIGtub3cKKyAg ICAgKiB3aGljaCBDT1MgdGhlIGRvbWFpbiBpcyB1c2luZyBvbiB0aGUgc29ja2V0LiBPbmUgZG9t YWluIGNhbiBvbmx5IHVzZQorICAgICAqIG9uZSBDT1MgSUQgYXQgc2FtZSB0aW1lLgorICAgICAq LworICAgIGQtPmFyY2gucHNyX2Nvc19pZHNbc29ja2V0XSA9IGNvczsKKyAgICB4ZnJlZSh2YWxf YXJyYXkpOworCisgICAgcmV0dXJuIDA7Cit9CisKIC8qIENhbGxlZCB3aXRoIGRvbWFpbiBsb2Nr IGhlbGQsIG5vIGV4dHJhIGxvY2sgbmVlZGVkIGZvciAncHNyX2Nvc19pZHMnICovCiBzdGF0aWMg dm9pZCBwc3JfZnJlZV9jb3Moc3RydWN0IGRvbWFpbiAqZCkKIHsKKyAgICB1bnNpZ25lZCBpbnQg c29ja2V0OworICAgIHVuc2lnbmVkIGludCBjb3M7CisgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5m byAqaW5mbzsKKwogICAgIGlmKCAhZC0+YXJjaC5wc3JfY29zX2lkcyApCiAgICAgICAgIHJldHVy bjsKIAorICAgIC8qIERvbWFpbiBpcyBmcmVlIHNvIGl0cyBjb3NfcmVmIHNob3VsZCBiZSBkZWNy ZWFzZWQuICovCisgICAgZm9yKCBzb2NrZXQgPSAwOyBzb2NrZXQgPCBucl9zb2NrZXRzOyBzb2Nr ZXQrKyApCisgICAgeworICAgICAgICAvKiBjb3MgMCBpcyBkZWZhdWx0IG9uZSB3aGljaCBkb2Vz IG5vdCBuZWVkIGJlIGhhbmRsZWQuICovCisgICAgICAgIGlmICggKGNvcyA9IGQtPmFyY2gucHNy X2Nvc19pZHNbc29ja2V0XSkgPT0gMCApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg ICAvKgorICAgICAgICAgKiBJZiBkb21haW4gdXNlcyBvdGhlciBjb3MgaWRzLCBhbGwgY29ycmVz cG9uZGluZyByZWZzIG11c3QgaGF2ZSBiZWVuCisgICAgICAgICAqIGluY3JlYXNlZCAxIGZvciB0 aGlzIGRvbWFpbi4gU28sIHdlIG5lZWQgZGVjcmVhc2UgdGhlbS4KKyAgICAgICAgICovCisgICAg ICAgIGluZm8gPSBzb2NrZXRfaW5mbyArIHNvY2tldDsKKyAgICAgICAgc3Bpbl9sb2NrKCZpbmZv LT5yZWZfbG9jayk7CisgICAgICAgIGluZm8tPmNvc19yZWZbY29zXS0tOworICAgICAgICBzcGlu X3VubG9jaygmaW5mby0+cmVmX2xvY2spOworICAgIH0KKwogICAgIHhmcmVlKGQtPmFyY2gucHNy X2Nvc19pZHMpOwogICAgIGQtPmFyY2gucHNyX2Nvc19pZHMgPSBOVUxMOwogfQpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgK aW5kZXggOGUzYzkwZS4uZDI0NWRlMyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9w c3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCkBAIC03Miw4ICs3Miw4IEBAIGlu dCBwc3JfZ2V0X2luZm8odW5zaWduZWQgaW50IHNvY2tldCwgZW51bSBjYm1fdHlwZSB0eXBlLAog ICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRbXSwgdWludDMyX3QgYXJyYXlfbGVuKTsKIGlu dCBwc3JfZ2V0X3ZhbChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgc29ja2V0LAogICAg ICAgICAgICAgICAgIHVpbnQ2NF90ICp2YWwsIGVudW0gY2JtX3R5cGUgdHlwZSk7Ci1pbnQgcHNy X3NldF9sM19jYm0oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKLSAgICAg ICAgICAgICAgICAgICB1aW50NjRfdCBjYm0sIGVudW0gY2JtX3R5cGUgdHlwZSk7CitpbnQgcHNy X3NldF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKKyAgICAgICAg ICAgICAgICB1aW50NjRfdCB2YWwsIGVudW0gY2JtX3R5cGUgdHlwZSk7CiAKIGludCBwc3JfZG9t YWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCk7CiB2b2lkIHBzcl9kb21haW5fZnJlZShzdHJ1Y3Qg ZG9tYWluICpkKTsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==