From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v4 07/15] x86: implement set value flow for MBA Date: Sat, 23 Sep 2017 17:48:16 +0800 Message-ID: <1506160104-5890-8-git-send-email-yi.y.sun@linux.intel.com> References: <1506160104-5890-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 1dvhMJ-0004eh-J2 for xen-devel@lists.xenproject.org; Sat, 23 Sep 2017 10:08:27 +0000 In-Reply-To: <1506160104-5890-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 Liu , Yi Sun , Andrew Cooper , Jan Beulich , Chao Peng , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHNldCB2YWx1ZSBmbG93IGZvciBNQkEgaW5jbHVkaW5nIGl0 cyBjYWxsYmFjawpmdW5jdGlvbiBhbmQgZG9tY3RsIGludGVyZmFjZS4KCkl0IGFsc28gY2hhbmdl cyB0aGUgbWVtZWJlcnMgaW4gJ2Nvc193cml0ZV9pbmZvJyB0byB0cmFuc2ZlciB0aGUKZmVhdHVy ZSBhcnJheSwgZmVhdHVyZSBwcm9wZXJ0aWVzIGFycmF5IGFuZCB2YWx1ZSBhcnJheS4gVGhlbiwg d2UKY2FuIHdyaXRlIGFsbCBmZWF0dXJlcyB2YWx1ZXMgb24gdGhlIGNvcyBpZCBpbnRvIE1TUnMu CgpCZWNhdXNlIG11bHRpcGxlIGZlYXR1cmVzIG1heSBjby1leGlzdCwgd2UgbmVlZCBoYW5kbGUg YWxsIGZlYXR1cmVzIHRvIHdyaXRlCnZhbHVlcyBvZiB0aGVtIGludG8gYSBDT1MgcmVnaXN0ZXIg d2l0aCBuZXcgQ09TIElELiBFLmc6CjEuIEwzIENBVCBhbmQgTUJBIGNvLWV4aXN0LgoyLiBEb20x IGFuZCBEb20yIHNoYXJlIGEgc2FtZSBDT1MgSUQgKDIpLiBUaGUgTDMgQ0FUIENCTSBvZiBEb20x IGlzIDB4MWZmLAogICB0aGUgTUJBIFRocnRsZSBvZiBEb20xIGlzIDB4YS4KMy4gVXNlciB3YW50 cyB0byBjaGFuZ2UgTUJBIFRocnRsIG9mIERvbTEgdG8gYmUgMHgxNC4gQmVjYXVzZSBDT1MgSUQg MiBpcwogICB1c2VkIGJ5IERvbTIgdG9vLCB3ZSBoYXZlIHRvIHBpY2sgYSBuZXcgQ09TIElEIDMu IFRoZSB2YWx1ZXMgb2YgRG9tMSBvbgogICBDT1MgSUQgMyBhcmUgYWxsIGRlZmF1bHQgdmFsdWVz IGFzIGJlbG93OgogICAgICAgICAgIC0tLS0tLS0tLQogICAgICAgICAgIHwgQ09TIDMgfAogICAg ICAgICAgIC0tLS0tLS0tLQogICBMMyBDQVQgIHwgMHg3ZmYgfAogICAgICAgICAgIC0tLS0tLS0t LQogICBNQkEgICAgIHwgMHgwICAgfAogICAgICAgICAgIC0tLS0tLS0tLQo0LiBBZnRlciBzZXR0 aW5nLCB0aGUgTDMgQ0FUIENCTSB2YWx1ZSBvZiBEb20xIHNob3VsZCBiZSBrZXB0IGFuZCB0aGUg bmV3IE1CQQogICBUaHJ0bCBpcyBzZXQuIFNvLCB0aGUgdmFsdWVzIG9uIENPUyBJRCAzIHNob3Vs ZCBiZSBiZWxvdy4KICAgICAgICAgICAtLS0tLS0tLS0KICAgICAgICAgICB8IENPUyAzIHwKICAg ICAgICAgICAtLS0tLS0tLS0KICAgTDMgQ0FUICB8IDB4MWZmIHwKICAgICAgICAgICAtLS0tLS0t LS0KICAgTUJBICAgICB8IDB4MTQgIHwKICAgICAgICAgICAtLS0tLS0tLS0KClNvLCB3ZSBzaG91 bGQgd3JpdGUgYWxsIGZlYXR1cmVzIHZhbHVlcyBpbnRvIHRoZWlyIE1TUnMuIFRoYXQgcmVxdWly ZXMgdGhlCmZlYXR1cmUgYXJyYXksIGZlYXR1cmUgcHJvcGVydGllcyBhcnJheSBhbmQgdmFsdWUg YXJyYXkgYXJlIGlucHV0LgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5p bnRlbC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDQzogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5s aXUyQGNpdHJpeC5jb20+CkNDOiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNv bT4KQ0M6IENoYW8gUGVuZyA8Y2hhby5wLnBlbmdAbGludXguaW50ZWwuY29tPgoKdjQ6CiAgICAt IHJlbW92ZSAnQUxMT0NfJyBmcm9tIG1hY3JvIG5hbWVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJv Z2VyIFBhdSBNb25uw6kpCiAgICAtIGpvaW4gdHdvIGNoZWNrcyBpbnRvIGEgc2luZ2xlIGlmLgog ICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHJlbW92ZSByZWR1bmRh bnQgbG9jYWwgdmFyaWFibGUgJ2FycmF5X2xlbicuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIg UGF1IE1vbm7DqSkKdjM6CiAgICAtIG1vZGlmeSBjb21taXQgbWVzc2FnZSB0byBtYWtlIGl0IGNs ZWFyLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIG1vZGlmeSBm dW5jdGlvbmFsaXR5IG9mICdjaGVja192YWwnIHRvIG1ha2UgaXQgc2ltcGxlIHRvIG9ubHkgY2hl Y2sgdmFsdWUuCiAgICAgIENoYW5nZSB0aGUgbGFzdCBwYXJhbWV0ZXIgdHlwZSBmcm9tICd1bnNp Z25lZCBsb25nIConIHRvICd1bnNpZ25lZCBsb25nJy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dl ciBQYXUgTW9ubsOpKQogICAgLSBjYWxsIHJkbXNybCB0byBnZXQgdmFsdWUganVzdCB3cml0dGVu IGludG8gTVNSIGZvciBNQkEuIEJlY2F1c2UgSFcgY2FuCiAgICAgIGF1dG9tYXRpY2FsbHkgY2hh bmdlIGlucHV0IHZhbHVlIHRvIHdoYXQgaXQgd2FudHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9n ZXIgUGF1IE1vbm7DqSkKICAgIC0gY2hhbmdlIHR5cGUgb2YgJ3dyaXRlX21zcicgdG8gJ3VpbnQz Ml90JyB0byByZXR1cm4gdGhlIHZhbHVlIGFjdHVhbGx5CiAgICAgIHdyaXR0ZW4gaW50byBNU1Iu IFRoZW4sIGNoYW5nZSAnZG9fd3JpdGVfcHNyX21zcnMnIHRvIHNldCB0aGUgcmV0dXJuZWQKICAg ICAgdmFsdWUgaW50byAnY29zX3JlZ192YWxbXScKICAgIC0gbW92ZSB0aGUgZGVjbGFyYXRpb24g b2YgJ2onIGludG8gbG9vcCBpbiAnZG9fd3JpdGVfcHNyX21zcnMnLgogICAgICAoc3VnZ2VzdGVk IGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGNoYW5nZSAnbWJhX2luZm8nIHRvICdtYmEnLgog ICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGNoYW5nZSAnY2F0X2lu Zm8nIHRvICdjYXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAt IHJlbmFtZSAncHNyX2NhdC9QU1JfQ0FUJyB0byAncHNyX2FsbG9jL1BTUl9BTExPQycgYW5kIHJl bW92ZSAnb3AvT1AnCiAgICAgIGZyb20gbmFtZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQ YXUgTW9ubsOpKQogICAgLSBjaGFuZ2UgJ1BTUl9WQUxfVFlQRV9NQkEnIHRvICdQU1JfVFlQRV9N QkFfVEhSVEwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCnYyOgogICAg LSByZW1vdmUgbGluZWFyIG1vZGUgJ3RocnRsX21heCcgY2hlY2sgaW4gJ21iYV9jaGVja190aHJ0 bCcgYmVjYXVzZSBpdCBoYXMKICAgICAgYmVlbiBjaGVja2VkIGluICdtYmFfaW5pdF9mZWF0dXJl Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGZvciBub24tbGluZWFyIG1v ZGUsIGNoZWNrIGlmICcqdGhydGwnIGlzIG5vdCAwIGluICdtYmFfY2hlY2tfdGhydGwnLiBJZgog ICAgICBpdCBpcyAwLCB3ZSBkbyBub3QgbmVlZCB0byBjaGFuZ2UgaXQuCiAgICAgIChzdWdnZXN0 ZWQgYnkgQ2hhbyBQZW5nKQogICAgLSBtb3ZlIGNvbW1lbnRzIHRvIGV4cGxhaW4gY2hhbmdlcyBv ZiAnY29zX3dyaXRlX2luZm8nIGZyb20gcHNyLmMgdG8gY29tbWl0CiAgICAgIG1lc3NhZ2UuCiAg ICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQotLS0KIHhlbi9hcmNoL3g4Ni9kb21jdGwuYyAg ICAgICB8ICAgNiArKwogeGVuL2FyY2gveDg2L3Bzci5jICAgICAgICAgIHwgMTQ0ICsrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMv ZG9tY3RsLmggfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCA1NyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMgYi94ZW4vYXJj aC94ODYvZG9tY3RsLmMKaW5kZXggMjI2NTBkNy4uNjZjOWNhYiAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L2RvbWN0bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwpAQCAtMTQ2OCw2ICsx NDY4LDEyIEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQU1JfVFlQRV9MMl9DQk0pOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2Fz ZSBYRU5fRE9NQ1RMX1BTUl9TRVRfTUJBX1RIUlRMOgorICAgICAgICAgICAgcmV0ID0gcHNyX3Nl dF92YWwoZCwgZG9tY3RsLT51LnBzcl9hbGxvYy50YXJnZXQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkb21jdGwtPnUucHNyX2FsbG9jLmRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQU1JfVFlQRV9NQkFfVEhSVEwpOworICAgICAgICAgICAgYnJlYWs7CisKICAg ICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9HRVRfTDNfQ0JNOgogICAgICAgICAgICAgcmV0ID0g cHNyX2dldF92YWwoZCwgZG9tY3RsLT51LnBzcl9hbGxvYy50YXJnZXQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmdmFsMzIsIFBTUl9UWVBFX0wzX0NCTSk7CmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggMWQwYTIxNS4uYzZk NGUzMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9w c3IuYwpAQCAtMTM3LDcgKzEzNywxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMg ewogICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRhW10sIHVuc2lnbmVkIGlu dCBhcnJheV9sZW4pOwogCiAgICAgLyogd3JpdGVfbXNyIGlzIHVzZWQgdG8gd3JpdGUgb3V0IGZl YXR1cmUgTVNSIHJlZ2lzdGVyLiAqLwotICAgIHZvaWQgKCp3cml0ZV9tc3IpKHVuc2lnbmVkIGlu dCBjb3MsIHVpbnQzMl90IHZhbCwgZW51bSBwc3JfdHlwZSB0eXBlKTsKKyAgICB1aW50MzJfdCAo KndyaXRlX21zcikodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLCBlbnVtIHBzcl90eXBl IHR5cGUpOworCisgICAgLyogY2hlY2tfdmFsIGlzIHVzZWQgdG8gY2hlY2sgaWYgaW5wdXQgdmFs IGZ1bGZpbGxzIFNETSByZXF1aXJlbWVudC4gKi8KKyAgICBib29sICgqY2hlY2tfdmFsKShjb25z dCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1bnNpZ25lZCBsb25nIHZhbCk7CiB9ICpmZWF0X3By b3BzW0ZFQVRfVFlQRV9OVU1dOwogCiAvKgpAQCAtMjc0LDI5ICsyNzcsNiBAQCBzdGF0aWMgZW51 bSBwc3JfZmVhdF90eXBlIHBzcl90eXBlX3RvX2ZlYXRfdHlwZShlbnVtIHBzcl90eXBlIHR5cGUp CiAgICAgcmV0dXJuIGZlYXRfdHlwZTsKIH0KIAotc3RhdGljIGJvb2wgcHNyX2NoZWNrX2NibSh1 bnNpZ25lZCBpbnQgY2JtX2xlbiwgdW5zaWduZWQgbG9uZyBjYm0pCi17Ci0gICAgdW5zaWduZWQg aW50IGZpcnN0X2JpdCwgemVyb19iaXQ7Ci0KLSAgICAvKiBTZXQgYml0cyBzaG91bGQgb25seSBp biB0aGUgcmFuZ2Ugb2YgWzAsIGNibV9sZW5dLiAqLwotICAgIGlmICggY2JtICYgKH4wdWwgPDwg Y2JtX2xlbikgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvKiBBdCBsZWFzdCBvbmUg Yml0IG5lZWQgdG8gYmUgc2V0LiAqLwotICAgIGlmICggY2JtID09IDAgKQotICAgICAgICByZXR1 cm4gZmFsc2U7Ci0KLSAgICBmaXJzdF9iaXQgPSBmaW5kX2ZpcnN0X2JpdCgmY2JtLCBjYm1fbGVu KTsKLSAgICB6ZXJvX2JpdCA9IGZpbmRfbmV4dF96ZXJvX2JpdCgmY2JtLCBjYm1fbGVuLCBmaXJz dF9iaXQpOwotCi0gICAgLyogU2V0IGJpdHMgc2hvdWxkIGJlIGNvbnRpZ3VvdXMuICovCi0gICAg aWYgKCB6ZXJvX2JpdCA8IGNibV9sZW4gJiYKLSAgICAgICAgIGZpbmRfbmV4dF9iaXQoJmNibSwg Y2JtX2xlbiwgemVyb19iaXQpIDwgY2JtX2xlbiApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot ICAgIHJldHVybiB0cnVlOwotfQotCiAvKiBJbXBsZW1lbnRhdGlvbiBvZiBhbGxvY2F0aW9uIGZl YXR1cmVzJyBmdW5jdGlvbnMuICovCiBzdGF0aWMgYm9vbCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0 IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBmZWF0X25vZGUgKmZlYXQsCkBAIC00MjYsMTEgKzQwNiwzNiBAQCBzdGF0aWMgYm9vbCBj YXRfZ2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAogICAgIHJldHVy biB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBjYXRfY2hlY2tfY2JtKGNvbnN0IHN0cnVjdCBmZWF0 X25vZGUgKmZlYXQsIHVuc2lnbmVkIGxvbmcgY2JtKQoreworICAgIHVuc2lnbmVkIGludCBmaXJz dF9iaXQsIHplcm9fYml0OworICAgIHVuc2lnbmVkIGludCBjYm1fbGVuID0gZmVhdC0+Y2F0LmNi bV9sZW47CisKKyAgICAvKgorICAgICAqIFNldCBiaXRzIHNob3VsZCBvbmx5IGluIHRoZSByYW5n ZSBvZiBbMCwgY2JtX2xlbl0uCisgICAgICogQW5kLCBhdCBsZWFzdCBvbmUgYml0IG5lZWQgdG8g YmUgc2V0LgorICAgICAqLworICAgIGlmICggY2JtICYgKH4wdWwgPDwgY2JtX2xlbikgfHwgY2Jt ID09IDAgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmaXJzdF9iaXQgPSBmaW5kX2Zp cnN0X2JpdCgmY2JtLCBjYm1fbGVuKTsKKyAgICB6ZXJvX2JpdCA9IGZpbmRfbmV4dF96ZXJvX2Jp dCgmY2JtLCBjYm1fbGVuLCBmaXJzdF9iaXQpOworCisgICAgLyogU2V0IGJpdHMgc2hvdWxkIGJl IGNvbnRpZ3VvdXMuICovCisgICAgaWYgKCB6ZXJvX2JpdCA8IGNibV9sZW4gJiYKKyAgICAgICAg IGZpbmRfbmV4dF9iaXQoJmNibSwgY2JtX2xlbiwgemVyb19iaXQpIDwgY2JtX2xlbiApCisgICAg ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiAvKiBMMyBDQVQgcHJv cHMgKi8KLXN0YXRpYyB2b2lkIGwzX2NhdF93cml0ZV9tc3IodW5zaWduZWQgaW50IGNvcywgdWlu dDMyX3QgdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl90eXBlIHR5 cGUpCitzdGF0aWMgdWludDMyX3QgbDNfY2F0X3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1 aW50MzJfdCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl90 eXBlIHR5cGUpCiB7CiAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKGNvcyksIHZhbCk7 CisKKyAgICByZXR1cm4gdmFsOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMg bDNfY2F0X3Byb3BzID0gewpAQCAtNDM5LDYgKzQ0NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZmVhdF9wcm9wcyBsM19jYXRfcHJvcHMgPSB7CiAgICAgLmFsdF90eXBlID0gUFNSX1RZUEVfVU5L Tk9XTiwKICAgICAuZ2V0X2ZlYXRfaW5mbyA9IGNhdF9nZXRfZmVhdF9pbmZvLAogICAgIC53cml0 ZV9tc3IgPSBsM19jYXRfd3JpdGVfbXNyLAorICAgIC5jaGVja192YWwgPSBjYXRfY2hlY2tfY2Jt LAogfTsKIAogLyogTDMgQ0RQIHByb3BzICovCkBAIC00NTMsMTMgKzQ1OSwxNSBAQCBzdGF0aWMg Ym9vbCBsM19jZHBfZ2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAog ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBsM19jZHBfd3JpdGVfbXNyKHVuc2ln bmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZW51bSBwc3JfdHlwZSB0eXBlKQorc3RhdGljIHVpbnQzMl90IGwzX2NkcF93cml0ZV9tc3IodW5z aWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW51bSBwc3JfdHlwZSB0eXBlKQogewogICAgIHdybXNybCgoKHR5cGUgPT0gUFNSX1RZ UEVfTDNfREFUQSkgPwogICAgICAgICAgICAgTVNSX0lBMzJfUFNSX0wzX01BU0tfREFUQShjb3Mp IDoKICAgICAgICAgICAgIE1TUl9JQTMyX1BTUl9MM19NQVNLX0NPREUoY29zKSksCiAgICAgICAg ICAgIHZhbCk7CisKKyAgICByZXR1cm4gdmFsOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZl YXRfcHJvcHMgbDNfY2RwX3Byb3BzID0gewpAQCAtNDY5LDEzICs0NzcsMTYgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwzX2NkcF9wcm9wcyA9IHsKICAgICAuYWx0X3R5cGUgPSBQ U1JfVFlQRV9MM19DQk0sCiAgICAgLmdldF9mZWF0X2luZm8gPSBsM19jZHBfZ2V0X2ZlYXRfaW5m bywKICAgICAud3JpdGVfbXNyID0gbDNfY2RwX3dyaXRlX21zciwKKyAgICAuY2hlY2tfdmFsID0g Y2F0X2NoZWNrX2NibSwKIH07CiAKIC8qIEwyIENBVCBwcm9wcyAqLwotc3RhdGljIHZvaWQgbDJf Y2F0X3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3R5cGUgdHlwZSkKK3N0YXRpYyB1aW50MzJfdCBs Ml9jYXRfd3JpdGVfbXNyKHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3R5cGUgdHlwZSkKIHsKICAgICB3cm1z cmwoTVNSX0lBMzJfUFNSX0wyX01BU0soY29zKSwgdmFsKTsKKworICAgIHJldHVybiB2YWw7CiB9 CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBsMl9jYXRfcHJvcHMgPSB7CkBAIC00 ODQsNiArNDk1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwyX2NhdF9wcm9w cyA9IHsKICAgICAuYWx0X3R5cGUgPSBQU1JfVFlQRV9VTktOT1dOLAogICAgIC5nZXRfZmVhdF9p bmZvID0gY2F0X2dldF9mZWF0X2luZm8sCiAgICAgLndyaXRlX21zciA9IGwyX2NhdF93cml0ZV9t c3IsCisgICAgLmNoZWNrX3ZhbCA9IGNhdF9jaGVja19jYm0sCiB9OwogCiAvKiBNQkEgcHJvcHMg Ki8KQEAgLTUwMiw5ICs1MTQsMjMgQEAgc3RhdGljIGJvb2wgbWJhX2dldF9mZWF0X2luZm8oY29u c3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj IHZvaWQgbWJhX3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3R5cGUgdHlwZSkKK3N0YXRpYyB1aW50MzJf dCBtYmFfd3JpdGVfbXNyKHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3R5cGUgdHlwZSkKK3sKKyAgICB3cm1zcmwo TVNSX0lBMzJfUFNSX01CQV9NQVNLKGNvcyksIHZhbCk7CisKKyAgICAvKiBSZWFkIGFjdHVhbCB2 YWx1ZSBzZXQgYnkgaGFyZHdhcmUuICovCisgICAgcmRtc3JsKE1TUl9JQTMyX1BTUl9NQkFfTUFT Syhjb3MpLCB2YWwpOworCisgICAgcmV0dXJuIHZhbDsKK30KKworc3RhdGljIGJvb2wgbWJhX2No ZWNrX3RocnRsKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsIHVuc2lnbmVkIGxvbmcgdGhy dGwpCiB7CisgICAgaWYgKCB0aHJ0bCA+IGZlYXQtPm1iYS50aHJ0bF9tYXggKQorICAgICAgICBy ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVj dCBmZWF0X3Byb3BzIG1iYV9wcm9wcyA9IHsKQEAgLTUxMyw2ICs1MzksNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGZlYXRfcHJvcHMgbWJhX3Byb3BzID0gewogICAgIC5hbHRfdHlwZSA9IFBTUl9U WVBFX1VOS05PV04sCiAgICAgLmdldF9mZWF0X2luZm8gPSBtYmFfZ2V0X2ZlYXRfaW5mbywKICAg ICAud3JpdGVfbXNyID0gbWJhX3dyaXRlX21zciwKKyAgICAuY2hlY2tfdmFsID0gbWJhX2NoZWNr X3RocnRsLAogfTsKIAogc3RhdGljIGJvb2wgX19pbml0IHBhcnNlX3Bzcl9ib29sKGNvbnN0IGNo YXIgKnMsIGNvbnN0IGNoYXIgKmRlbGltLApAQCAtOTc4LDcgKzEwMDUsNyBAQCBzdGF0aWMgaW50 IGluc2VydF92YWxfaW50b19hcnJheSh1aW50MzJfdCB2YWxbXSwKICAgICBpZiAoIGFycmF5X2xl biA8IHByb3BzLT5jb3NfbnVtICkKICAgICAgICAgcmV0dXJuIC1FTk9TUEM7CiAKLSAgICBpZiAo ICFwc3JfY2hlY2tfY2JtKGZlYXQtPmNhdC5jYm1fbGVuLCBuZXdfdmFsKSApCisgICAgaWYgKCAh cHJvcHMtPmNoZWNrX3ZhbChmZWF0LCBuZXdfdmFsKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFM OwogCiAgICAgLyoKQEAgLTEyMTAsMjUgKzEyMzcsMzkgQEAgc3RhdGljIHVuc2lnbmVkIGludCBn ZXRfc29ja2V0X2NwdSh1bnNpZ25lZCBpbnQgc29ja2V0KQogc3RydWN0IGNvc193cml0ZV9pbmZv CiB7CiAgICAgdW5zaWduZWQgaW50IGNvczsKLSAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0dXJl OworICAgIHN0cnVjdCBmZWF0X25vZGUgKipmZWF0dXJlczsKICAgICBjb25zdCB1aW50MzJfdCAq dmFsOwotICAgIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzICpwcm9wczsKKyAgICB1bnNpZ25lZCBp bnQgYXJyYXlfbGVuOworICAgIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzICoqcHJvcHM7CiB9Owog CiBzdGF0aWMgdm9pZCBkb193cml0ZV9wc3JfbXNycyh2b2lkICpkYXRhKQogewogICAgIGNvbnN0 IHN0cnVjdCBjb3Nfd3JpdGVfaW5mbyAqaW5mbyA9IGRhdGE7Ci0gICAgc3RydWN0IGZlYXRfbm9k ZSAqZmVhdCA9IGluZm8tPmZlYXR1cmU7Ci0gICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgKnBy b3BzID0gaW5mby0+cHJvcHM7Ci0gICAgdW5zaWduZWQgaW50IGksIGNvcyA9IGluZm8tPmNvcywg Y29zX251bSA9IHByb3BzLT5jb3NfbnVtOworICAgIHVuc2lnbmVkIGludCBpLCBpbmRleCA9IDAs IGNvcyA9IGluZm8tPmNvczsKKyAgICBjb25zdCB1aW50MzJfdCAqdmFsX2FycmF5ID0gaW5mby0+ dmFsOwogCi0gICAgZm9yICggaSA9IDA7IGkgPCBjb3NfbnVtOyBpKysgKQorICAgIGZvciAoIGkg PSAwOyBpIDwgQVJSQVlfU0laRShmZWF0X3Byb3BzKTsgaSsrICkKICAgICB7Ci0gICAgICAgIGlm ICggZmVhdC0+Y29zX3JlZ192YWxbY29zICogY29zX251bSArIGldICE9IGluZm8tPnZhbFtpXSAp CisgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQgPSBpbmZvLT5mZWF0dXJlc1tpXTsKKyAg ICAgICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgKnByb3BzID0gaW5mby0+cHJvcHNbaV07Cisg ICAgICAgIHVuc2lnbmVkIGludCBjb3NfbnVtLCBqOworCisgICAgICAgIGlmICggIWZlYXQgfHwg IXByb3BzICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNvc19udW0gPSBwcm9w cy0+Y29zX251bTsKKyAgICAgICAgaWYgKCBpbmZvLT5hcnJheV9sZW4gPCBpbmRleCArIGNvc19u dW0gKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgY29z X251bTsgaisrICkKICAgICAgICAgewotICAgICAgICAgICAgZmVhdC0+Y29zX3JlZ192YWxbY29z ICogY29zX251bSArIGldID0gaW5mby0+dmFsW2ldOwotICAgICAgICAgICAgcHJvcHMtPndyaXRl X21zcihjb3MsIGluZm8tPnZhbFtpXSwgcHJvcHMtPnR5cGVbaV0pOworICAgICAgICAgICAgaWYg KCBmZWF0LT5jb3NfcmVnX3ZhbFtjb3MgKiBjb3NfbnVtICsgal0gIT0gdmFsX2FycmF5W2luZGV4 ICsgal0gKQorICAgICAgICAgICAgICAgIGZlYXQtPmNvc19yZWdfdmFsW2NvcyAqIGNvc19udW0g KyBqXSA9CisgICAgICAgICAgICAgICAgICAgIHByb3BzLT53cml0ZV9tc3IoY29zLCB2YWxfYXJy YXlbaW5kZXggKyBqXSwgcHJvcHMtPnR5cGVbal0pOwogICAgICAgICB9CisKKyAgICAgICAgaW5k ZXggKz0gY29zX251bTsKICAgICB9CiB9CiAKQEAgLTEyMzYsMzAgKzEyNzcsMTkgQEAgc3RhdGlj IGludCB3cml0ZV9wc3JfbXNycyh1bnNpZ25lZCBpbnQgc29ja2V0LCB1bnNpZ25lZCBpbnQgY29z LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCB2YWxbXSwgdW5zaWdu ZWQgaW50IGFycmF5X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVh dF90eXBlIGZlYXRfdHlwZSkKIHsKLSAgICBpbnQgcmV0OwogICAgIHN0cnVjdCBwc3Jfc29ja2V0 X2luZm8gKmluZm8gPSBnZXRfc29ja2V0X2luZm8oc29ja2V0KTsKICAgICBzdHJ1Y3QgY29zX3dy aXRlX2luZm8gZGF0YSA9CiAgICAgewogICAgICAgICAuY29zID0gY29zLAotICAgICAgICAuZmVh dHVyZSA9IGluZm8tPmZlYXR1cmVzW2ZlYXRfdHlwZV0sCi0gICAgICAgIC5wcm9wcyA9IGZlYXRf cHJvcHNbZmVhdF90eXBlXSwKKyAgICAgICAgLmZlYXR1cmVzID0gaW5mby0+ZmVhdHVyZXMsCisg ICAgICAgIC52YWwgPSB2YWwsCisgICAgICAgIC5hcnJheV9sZW4gPSBhcnJheV9sZW4sCisgICAg ICAgIC5wcm9wcyA9IGZlYXRfcHJvcHMsCiAgICAgfTsKIAogICAgIGlmICggY29zID4gaW5mby0+ ZmVhdHVyZXNbZmVhdF90eXBlXS0+Y29zX21heCApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwog Ci0gICAgLyogU2tpcCB0byB0aGUgZmVhdHVyZSdzIHZhbHVlIGhlYWQuICovCi0gICAgcmV0ID0g c2tpcF9wcmlvcl9mZWF0dXJlcygmYXJyYXlfbGVuLCBmZWF0X3R5cGUpOwotICAgIGlmICggcmV0 IDwgMCApCi0gICAgICAgIHJldHVybiByZXQ7Ci0KLSAgICB2YWwgKz0gcmV0OwotCi0gICAgaWYg KCBhcnJheV9sZW4gPCBmZWF0X3Byb3BzW2ZlYXRfdHlwZV0tPmNvc19udW0gKQotICAgICAgICBy ZXR1cm4gLUVOT1NQQzsKLQotICAgIGRhdGEudmFsID0gdmFsOwotCiAgICAgaWYgKCBzb2NrZXQg PT0gY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpICkKICAgICAgICAgZG9fd3JpdGVf cHNyX21zcnMoJmRhdGEpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1Ymxp Yy9kb21jdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAppbmRleCBlYzZkMmRlLi43 MTRiM2U4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKKysrIGIveGVu L2luY2x1ZGUvcHVibGljL2RvbWN0bC5oCkBAIC0xMTU2LDYgKzExNTYsNyBAQCBzdHJ1Y3QgeGVu X2RvbWN0bF9wc3JfYWxsb2MgewogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9HRVRfTDNfREFUQSAg ICA1CiAjZGVmaW5lIFhFTl9ET01DVExfUFNSX1NFVF9MMl9DQk0gICAgIDYKICNkZWZpbmUgWEVO X0RPTUNUTF9QU1JfR0VUX0wyX0NCTSAgICAgNworI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9TRVRf TUJBX1RIUlRMICA4CiAjZGVmaW5lIFhFTl9ET01DVExfUFNSX0dFVF9NQkFfVEhSVEwgIDkKICAg ICB1aW50MzJfdCBjbWQ7ICAgICAgIC8qIElOOiBYRU5fRE9NQ1RMX1BTUl8qICovCiAgICAgdWlu dDMyX3QgdGFyZ2V0OyAgICAvKiBJTiAqLwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK