From mboxrd@z Thu Jan 1 00:00:00 1970 From: Volodymyr Babchuk Subject: [PATCH v2 3/4] arm: traps: handle PSCI calls inside `vsmc.c` Date: Thu, 22 Jun 2017 19:24:59 +0300 Message-ID: <1498148700-10758-4-git-send-email-volodymyr_babchuk@epam.com> References: <1497449445-23112-1-git-send-email-volodymyr_babchuk@epam.com> <1498148700-10758-1-git-send-email-volodymyr_babchuk@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1498148700-10758-1-git-send-email-volodymyr_babchuk@epam.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Julien Grall , Stefano Stabellini , Volodymyr Babchuk List-Id: xen-devel@lists.xenproject.org UFNDSSBpcyBwYXJ0IG9mIEhWQy9TTUMgaW50ZXJmYWNlLCBzbyBpdCBzaG91bGQgYmUgaGFuZGxl ZCBpbgphcHByb3ByaWF0ZSBwbGFjZTogYHZzbWMuY2AuIFRoaXMgcGF0Y2gganVzdCBtb3ZlcyBQ U0NJCmhhbmRsZXIgY2FsbHMgZnJvbSBgdHJhcHMuY2AgdG8gYHZzbWMuY2AuCgpQU0NJIGlzIGNv bnNpZGVyZWQgYXMgdHdvIGRpZmZlcmVudCAic2VydmljZXMiIGluIHRlcm1zIG9mIFNNQ0NDLgpP bGRlciBQU0NJIDEuMCBpcyB0cmVhdGVkIGFzICJhcmNoaXRlY3R1cmUgc2VydmljZSIsIHdoaWxl IG5ldmVyClBTQ0kgMi4wIGlzIGRlZmluZWQgYXMgInN0YW5kYXJkIHNlY3VyZSBzZXJ2aWNlIi4K ClNpZ25lZC1vZmYtYnk6IFZvbG9keW15ciBCYWJjaHVrIDx2b2xvZHlteXJfYmFiY2h1a0BlcGFt LmNvbT4KUmV2aWV3ZWQtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5k cnVzaGNoZW5rb0BlcGFtLmNvbT4KUmV2aWV3ZWQtYnk6IE9sZWtzYW5kciBUeXNoY2hlbmtvIDxv bGVrc2FuZHJfdHlzaGNoZW5rb0BlcGFtLmNvbT4KLS0tClNwbGl0dGVkIHRoaXMgcGF0Y2ggaW50 byB0d28uIE5vdyB0aGlzIHBhdGNoIGRvZXMgbm90IGNoYW5nZSB0aGUgd2F5LApob3cgUFNDSSBj b2RlIGFjY2Vzc2VzIHRoZSBhcmd1bWVudHMuCi0tLQogeGVuL2FyY2gvYXJtL3RyYXBzLmMgICAg ICAgICAgICAgIHwgMTI0ICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9h cmNoL2FybS92c21jLmMgICAgICAgICAgICAgICB8IDEzNiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtL3NtYy5oIHwgICA1 ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDE1MyBpbnNlcnRpb25zKCspLCAxMTIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RyYXBzLmMgYi94ZW4vYXJjaC9hcm0vdHJhcHMu YwppbmRleCA2NjI0MmU1Li5lODA2NDc0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdHJhcHMu YworKysgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUg PGFzbS9ldmVudC5oPgogI2luY2x1ZGUgPGFzbS9yZWdzLmg+CiAjaW5jbHVkZSA8YXNtL2NwcmVn cy5oPgotI2luY2x1ZGUgPGFzbS9wc2NpLmg+CiAjaW5jbHVkZSA8YXNtL21taW8uaD4KICNpbmNs dWRlIDxhc20vY3B1ZmVhdHVyZS5oPgogI2luY2x1ZGUgPGFzbS9mbHVzaHRsYi5oPgpAQCAtMTQ1 MCwxMTMgKzE0NDksNiBAQCBzdGF0aWMgdm9pZCBkb19kZWJ1Z190cmFwKHN0cnVjdCBjcHVfdXNl cl9yZWdzICpyZWdzLCB1bnNpZ25lZCBpbnQgY29kZSkKIH0KICNlbmRpZgogCi0vKiBoZWxwZXIg ZnVuY3Rpb24gZm9yIGNoZWNraW5nIGFybSBtb2RlIDMyLzY0IGJpdCAqLwotc3RhdGljIGlubGlu ZSBpbnQgcHNjaV9tb2RlX2NoZWNrKHN0cnVjdCBkb21haW4gKmQsIHJlZ2lzdGVyX3QgZmlkKQot ewotICAgICAgICByZXR1cm4gISggaXNfNjRiaXRfZG9tYWluKGQpXiggKGZpZCAmIFBTQ0lfMF8y XzY0QklUKSA+PiAzMCApICk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRvX3RyYXBfcHNjaShzdHJ1Y3Qg Y3B1X3VzZXJfcmVncyAqcmVncykKLXsKLSAgICByZWdpc3Rlcl90IGZpZCA9IGdldF91c2VyX3Jl ZyhyZWdzLDApOwotCi0gICAgLyogcHJlbG9hZGluZyBpbiBjYXNlIHBzY2lfbW9kZV9jaGVjayBm YWlscyAqLwotICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCBQU0NJX0lOVkFMSURfUEFSQU1FVEVS Uyk7Ci0gICAgc3dpdGNoKCBmaWQgKQotICAgIHsKLSAgICBjYXNlIFBTQ0lfY3B1X29mZjoKLSAg ICAgICAgewotICAgICAgICAgICAgdWludDMyX3QgcHN0YXRlID0gZ2V0X3VzZXJfcmVnKHJlZ3Ms IDEpOwotICAgICAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9jcHVfb2ZmKTsKLSAgICAgICAgICAg IHNldF91c2VyX3JlZyhyZWdzLCAwLCBkb19wc2NpX2NwdV9vZmYocHN0YXRlKSk7Ci0gICAgICAg IH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQU0NJX2NwdV9vbjoKLSAgICAgICAgewotICAg ICAgICAgICAgdWludDMyX3QgdmNwdWlkID0gIGdldF91c2VyX3JlZyhyZWdzLCAxKTsKLSAgICAg ICAgICAgIHJlZ2lzdGVyX3QgZXBvaW50ID0gZ2V0X3VzZXJfcmVnKHJlZ3MsIDIpOwotICAgICAg ICAgICAgcGVyZmNfaW5jcih2cHNjaV9jcHVfb24pOwotICAgICAgICAgICAgc2V0X3VzZXJfcmVn KHJlZ3MsIDAsIGRvX3BzY2lfY3B1X29uKHZjcHVpZCwgZXBvaW50KSk7Ci0gICAgICAgIH0KLSAg ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQU0NJXzBfMl9GTl9QU0NJX1ZFUlNJT046Ci0gICAgICAg IHBlcmZjX2luY3IodnBzY2lfdmVyc2lvbik7Ci0gICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAw LCBkb19wc2NpXzBfMl92ZXJzaW9uKCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBTQ0lf MF8yX0ZOX0NQVV9PRkY6Ci0gICAgICAgIHBlcmZjX2luY3IodnBzY2lfY3B1X29mZik7Ci0gICAg ICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCBkb19wc2NpXzBfMl9jcHVfb2ZmKCkpOwotICAgICAg ICBicmVhazsKLSAgICBjYXNlIFBTQ0lfMF8yX0ZOX01JR1JBVEVfSU5GT19UWVBFOgotICAgICAg ICBwZXJmY19pbmNyKHZwc2NpX21pZ3JhdGVfaW5mb190eXBlKTsKLSAgICAgICAgc2V0X3VzZXJf cmVnKHJlZ3MsIDAsIGRvX3BzY2lfMF8yX21pZ3JhdGVfaW5mb190eXBlKCkpOwotICAgICAgICBi cmVhazsKLSAgICBjYXNlIFBTQ0lfMF8yX0ZOX01JR1JBVEVfSU5GT19VUF9DUFU6Ci0gICAgY2Fz ZSBQU0NJXzBfMl9GTjY0X01JR1JBVEVfSU5GT19VUF9DUFU6Ci0gICAgICAgIHBlcmZjX2luY3Io dnBzY2lfbWlncmF0ZV9pbmZvX3VwX2NwdSk7Ci0gICAgICAgIGlmICggcHNjaV9tb2RlX2NoZWNr KGN1cnJlbnQtPmRvbWFpbiwgZmlkKSApCi0gICAgICAgICAgICBzZXRfdXNlcl9yZWcocmVncywg MCwgZG9fcHNjaV8wXzJfbWlncmF0ZV9pbmZvX3VwX2NwdSgpKTsKLSAgICAgICAgYnJlYWs7Ci0g ICAgY2FzZSBQU0NJXzBfMl9GTl9TWVNURU1fT0ZGOgotICAgICAgICBwZXJmY19pbmNyKHZwc2Np X3N5c3RlbV9vZmYpOwotICAgICAgICBkb19wc2NpXzBfMl9zeXN0ZW1fb2ZmKCk7Ci0gICAgICAg IHNldF91c2VyX3JlZyhyZWdzLCAwLCBQU0NJX0lOVEVSTkFMX0ZBSUxVUkUpOwotICAgICAgICBi cmVhazsKLSAgICBjYXNlIFBTQ0lfMF8yX0ZOX1NZU1RFTV9SRVNFVDoKLSAgICAgICAgcGVyZmNf aW5jcih2cHNjaV9zeXN0ZW1fcmVzZXQpOwotICAgICAgICBkb19wc2NpXzBfMl9zeXN0ZW1fcmVz ZXQoKTsKLSAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsIFBTQ0lfSU5URVJOQUxfRkFJTFVS RSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFNDSV8wXzJfRk5fQ1BVX09OOgotICAgIGNh c2UgUFNDSV8wXzJfRk42NF9DUFVfT046Ci0gICAgICAgIHBlcmZjX2luY3IodnBzY2lfY3B1X29u KTsKLSAgICAgICAgaWYgKCBwc2NpX21vZGVfY2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkK LSAgICAgICAgewotICAgICAgICAgICAgcmVnaXN0ZXJfdCB2Y3B1aWQgPSBnZXRfdXNlcl9yZWco cmVncywgMSk7Ci0gICAgICAgICAgICByZWdpc3Rlcl90IGVwb2ludCA9IGdldF91c2VyX3JlZyhy ZWdzLCAyKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyX3QgY2lkID0gZ2V0X3VzZXJfcmVnKHJlZ3Ms IDMpOwotICAgICAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgZG9fcHNjaV8wXzJfY3B1X29uKHZjcHVpZCwgZXBvaW50LCBjaWQpKTsKLSAgICAg ICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBTQ0lfMF8yX0ZOX0NQVV9TVVNQRU5EOgot ICAgIGNhc2UgUFNDSV8wXzJfRk42NF9DUFVfU1VTUEVORDoKLSAgICAgICAgcGVyZmNfaW5jcih2 cHNjaV9jcHVfc3VzcGVuZCk7Ci0gICAgICAgIGlmICggcHNjaV9tb2RlX2NoZWNrKGN1cnJlbnQt PmRvbWFpbiwgZmlkKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQzMl90IHBzdGF0ZSA9 IGdldF91c2VyX3JlZyhyZWdzLCAxKTsKLSAgICAgICAgICAgIHJlZ2lzdGVyX3QgZXBvaW50ID0g Z2V0X3VzZXJfcmVnKHJlZ3MsIDIpOwotICAgICAgICAgICAgcmVnaXN0ZXJfdCBjaWQgPSBnZXRf dXNlcl9yZWcocmVncywgMyk7Ci0gICAgICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICBkb19wc2NpXzBfMl9jcHVfc3VzcGVuZChwc3RhdGUsIGVw b2ludCwgY2lkKSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQU0NJXzBf Ml9GTl9BRkZJTklUWV9JTkZPOgotICAgIGNhc2UgUFNDSV8wXzJfRk42NF9BRkZJTklUWV9JTkZP OgotICAgICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9hZmZpbml0eV9pbmZvKTsKLSAgICAgICAg aWYgKCBwc2NpX21vZGVfY2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKLSAgICAgICAgewot ICAgICAgICAgICAgcmVnaXN0ZXJfdCB0YWZmID0gZ2V0X3VzZXJfcmVnKHJlZ3MsIDEpOwotICAg ICAgICAgICAgdWludDMyX3QgbGFmZiA9IGdldF91c2VyX3JlZyhyZWdzLCAyKTsKLSAgICAgICAg ICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRvX3Bz Y2lfMF8yX2FmZmluaXR5X2luZm8odGFmZiwgbGFmZikpOwotICAgICAgICB9Ci0gICAgICAgIGJy ZWFrOwotICAgIGNhc2UgUFNDSV8wXzJfRk5fTUlHUkFURToKLSAgICBjYXNlIFBTQ0lfMF8yX0ZO NjRfTUlHUkFURToKLSAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9jcHVfbWlncmF0ZSk7Ci0gICAg ICAgIGlmICggcHNjaV9tb2RlX2NoZWNrKGN1cnJlbnQtPmRvbWFpbiwgZmlkKSApCi0gICAgICAg IHsKLSAgICAgICAgICAgIHVpbnQzMl90IHRjcHUgPSBnZXRfdXNlcl9yZWcocmVncywgMSk7Ci0g ICAgICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMCwgZG9fcHNjaV8wXzJfbWlncmF0ZSh0Y3B1 KSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgZG9t YWluX2NyYXNoX3N5bmNocm9ub3VzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KICNp ZmRlZiBDT05GSUdfQVJNXzY0CiAjZGVmaW5lIEhZUEVSQ0FMTF9SRVNVTFRfUkVHKHIpIChyKS0+ eDAKICNkZWZpbmUgSFlQRVJDQUxMX0FSRzEocikgKHIpLT54MApAQCAtMjg4OCw4ICsyNzgwLDEy IEBAIGFzbWxpbmthZ2Ugdm9pZCBkb190cmFwX2d1ZXN0X3N5bmMoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCiAgICAgICAgICAgICByZXR1cm4gZG9fZGVidWdfdHJhcChyZWdzLCBoc3IuaXNz ICYgMHgwMGZmKTsKICNlbmRpZgogICAgICAgICBpZiAoIGhzci5pc3MgPT0gMCApCi0gICAgICAg ICAgICByZXR1cm4gZG9fdHJhcF9wc2NpKHJlZ3MpOwotICAgICAgICBkb190cmFwX2h5cGVyY2Fs bChyZWdzLCAocmVnaXN0ZXJfdCAqKSZyZWdzLT5yMTIsIGhzci5pc3MpOworICAgICAgICB7Cisg ICAgICAgICAgICBpZiAoICF2c21jX2hhbmRsZV9jYWxsKHJlZ3MpICkKKyAgICAgICAgICAgICAg ICBkb21haW5fY3Jhc2hfc3luY2hyb25vdXMoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg ICAgICAgICAgICBkb190cmFwX2h5cGVyY2FsbChyZWdzLCAocmVnaXN0ZXJfdCAqKSZyZWdzLT5y MTIsIGhzci5pc3MpOwogICAgICAgICBicmVhazsKICNpZmRlZiBDT05GSUdfQVJNXzY0CiAgICAg Y2FzZSBIU1JfRUNfSFZDNjQ6CkBAIC0yOTAwLDggKzI3OTYsMTIgQEAgYXNtbGlua2FnZSB2b2lk IGRvX3RyYXBfZ3Vlc3Rfc3luYyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAg ICAgIHJldHVybiBkb19kZWJ1Z190cmFwKHJlZ3MsIGhzci5pc3MgJiAweDAwZmYpOwogI2VuZGlm CiAgICAgICAgIGlmICggaHNyLmlzcyA9PSAwICkKLSAgICAgICAgICAgIHJldHVybiBkb190cmFw X3BzY2kocmVncyk7Ci0gICAgICAgIGRvX3RyYXBfaHlwZXJjYWxsKHJlZ3MsICZyZWdzLT54MTYs IGhzci5pc3MpOworICAgICAgICB7CisgICAgICAgICAgICBpZiAoICF2c21jX2hhbmRsZV9jYWxs KHJlZ3MpICkKKyAgICAgICAgICAgICAgICBkb21haW5fY3Jhc2hfc3luY2hyb25vdXMoKTsKKyAg ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBkb190cmFwX2h5cGVyY2FsbChyZWdz LCAmcmVncy0+eDE2LCBoc3IuaXNzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBIU1JfRUNf U01DNjQ6CiAgICAgICAgIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnNtYy5jIGIveGVu L2FyY2gvYXJtL3ZzbWMuYwppbmRleCAxMGM0YWNkLi41ZjEwZmQxIDEwMDY0NAotLS0gYS94ZW4v YXJjaC9hcm0vdnNtYy5jCisrKyBiL3hlbi9hcmNoL2FybS92c21jLmMKQEAgLTIyLDYgKzIyLDcg QEAKICNpbmNsdWRlIDx4ZW4vc3RkYm9vbC5oPgogI2luY2x1ZGUgPHhlbi90eXBlcy5oPgogI2lu Y2x1ZGUgPHB1YmxpYy9hcmNoLWFybS9zbWMuaD4KKyNpbmNsdWRlIDxhc20vcHNjaS5oPgogI2lu Y2x1ZGUgPGFzbS92c21jLmg+CiAjaW5jbHVkZSA8YXNtL3JlZ3MuaD4KIApAQCAtNDMsNiArNDQs MTQgQEAKIC8qIE51bWJlciBvZiBmdW5jdGlvbnMgY3VycmVudGx5IHN1cHBvcnRlZCBieSBIeXBl cnZpc29yIFNlcnZpY2UuICovCiAjZGVmaW5lIFhFTl9TTUNDQ19GVU5DVElPTl9DT1VOVCAzCiAK Ky8qIFN0YW5kYXJkIFNlcnZpY2UgdmVyc2lvbi4gQ2hlY2sgY29tbWVudCBmb3IgSHlwZXJ2aXNv ciBTZXJ2aWNlIGZvciBydWxlcyAqLworI2RlZmluZSBTU0NfU01DQ0NfTUFKT1JfUkVWSVNJT04g MAorI2RlZmluZSBTU0NfU01DQ0NfTUlOT1JfUkVWSVNJT04gMQorCisvKiBOdW1iZXIgb2YgZnVu Y3Rpb25zIGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgU3RhbmRhcmQgU2VydmljZSBTZXJ2aWNlLiAq LworI2RlZmluZSBTU0NfU01DQ0NfRlVOQ1RJT05fQ09VTlQgMTMKKworCiAvKiBTTUNDQyBpbnRl cmZhY2UgZm9yIGh5cGVydmlzb3IuIFRlbGwgYWJvdXQgaXRzZWxmLiAqLwogc3RhdGljIGJvb2wg aGFuZGxlX2h5cGVydmlzb3Ioc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiB7CkBAIC02NSw2 ICs3NCwxMjcgQEAgc3RhdGljIGJvb2wgaGFuZGxlX2h5cGVydmlzb3Ioc3RydWN0IGNwdV91c2Vy X3JlZ3MgKnJlZ3MpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisvKiBvbGQgKGFydm03KSBQU0NJ IGludGVyZmFjZSAqLworc3RhdGljIGJvb2wgaGFuZGxlX2FyY2goc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCit7CisgICAgc3dpdGNoICggZ2V0X3VzZXJfcmVnKHJlZ3MsMCkgJiAweEZGRkZG RkZGICkKKyAgICB7CisgICAgY2FzZSBQU0NJX2NwdV9vZmY6CisgICAgeworICAgICAgICB1aW50 MzJfdCBwc3RhdGUgPSBnZXRfdXNlcl9yZWcocmVncywgMSk7CisgICAgICAgIHBlcmZjX2luY3Io dnBzY2lfY3B1X29mZik7CisgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCBkb19wc2NpX2Nw dV9vZmYocHN0YXRlKSk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgUFNDSV9j cHVfb246CisgICAgeworICAgICAgICB1aW50MzJfdCB2Y3B1aWQgPSBnZXRfdXNlcl9yZWcocmVn cywgMSk7CisgICAgICAgIHJlZ2lzdGVyX3QgZXBvaW50ID0gZ2V0X3VzZXJfcmVnKHJlZ3MsIDIp OworICAgICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9vbik7CisgICAgICAgIHNldF91c2VyX3Jl ZyhyZWdzLCAwLCBkb19wc2NpX2NwdV9vbih2Y3B1aWQsIGVwb2ludCkpOworICAgIH0KKyAgICBy ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKiBoZWxwZXIgZnVu Y3Rpb24gZm9yIGNoZWNraW5nIGFybSBtb2RlIDMyLzY0IGJpdCAqLworc3RhdGljIGlubGluZSBp bnQgcHNjaV9tb2RlX2NoZWNrKHN0cnVjdCBkb21haW4gKmQsIHJlZ2lzdGVyX3QgZmlkKQorewor ICAgICAgICByZXR1cm4gISggaXNfNjRiaXRfZG9tYWluKGQpXiggKGZpZCAmIFBTQ0lfMF8yXzY0 QklUKSA+PiAzMCApICk7Cit9CisKKy8qIFBTQ0kgMi4wIGludGVyZmFjZSAqLworc3RhdGljIGJv b2wgaGFuZGxlX3NzYyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sKKyAgICByZWdpc3Rl cl90IGZpZCA9IGdldF91c2VyX3JlZyhyZWdzLCAwKTsKKworICAgIHN3aXRjaCAoIEFSTV9TTUND Q19GVU5DX05VTShmaWQpICkKKyAgICB7CisgICAgY2FzZSBBUk1fU01DQ0NfRlVOQ19OVU0oUFND SV8wXzJfRk5fUFNDSV9WRVJTSU9OKToKKyAgICAgICAgcGVyZmNfaW5jcih2cHNjaV92ZXJzaW9u KTsKKyAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsIGRvX3BzY2lfMF8yX3ZlcnNpb24oKSk7 CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNfTlVNKFBTQ0lf MF8yX0ZOX0NQVV9PRkYpOgorICAgICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9vZmYpOworICAg ICAgICBzZXRfdXNlcl9yZWcocmVncywgMCwgZG9fcHNjaV8wXzJfY3B1X29mZigpKTsKKyAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBBUk1fU01DQ0NfRlVOQ19OVU0oUFNDSV8wXzJfRk5f TUlHUkFURV9JTkZPX1RZUEUpOgorICAgICAgICBwZXJmY19pbmNyKHZwc2NpX21pZ3JhdGVfaW5m b190eXBlKTsKKyAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsIGRvX3BzY2lfMF8yX21pZ3Jh dGVfaW5mb190eXBlKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEFSTV9TTUND Q19GVU5DX05VTShQU0NJXzBfMl9GTl9NSUdSQVRFX0lORk9fVVBfQ1BVKToKKyAgICAgICAgcGVy ZmNfaW5jcih2cHNjaV9taWdyYXRlX2luZm9fdXBfY3B1KTsKKyAgICAgICAgaWYgKCBwc2NpX21v ZGVfY2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKKyAgICAgICAgICAgIHNldF91c2VyX3Jl ZyhyZWdzLCAwLCBkb19wc2NpXzBfMl9taWdyYXRlX2luZm9fdXBfY3B1KCkpOworICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEFSTV9TTUNDQ19GVU5DX05VTShQU0NJXzBfMl9GTl9TWVNU RU1fT0ZGKToKKyAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9zeXN0ZW1fb2ZmKTsKKyAgICAgICAg ZG9fcHNjaV8wXzJfc3lzdGVtX29mZigpOworICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMCwg UFNDSV9JTlRFUk5BTF9GQUlMVVJFKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBB Uk1fU01DQ0NfRlVOQ19OVU0oUFNDSV8wXzJfRk5fU1lTVEVNX1JFU0VUKToKKyAgICAgICAgcGVy ZmNfaW5jcih2cHNjaV9zeXN0ZW1fcmVzZXQpOworICAgICAgICBkb19wc2NpXzBfMl9zeXN0ZW1f cmVzZXQoKTsKKyAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsIFBTQ0lfSU5URVJOQUxfRkFJ TFVSRSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNfTlVN KFBTQ0lfMF8yX0ZOX0NQVV9PTik6CisgICAgICAgIHBlcmZjX2luY3IodnBzY2lfY3B1X29uKTsK KyAgICAgICAgaWYgKCBwc2NpX21vZGVfY2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKKyAg ICAgICAgeworICAgICAgICAgICAgcmVnaXN0ZXJfdCB2Y3B1aWQgPSBnZXRfdXNlcl9yZWcocmVn cywgMSk7CisgICAgICAgICAgICByZWdpc3Rlcl90IGVwb2ludCA9IGdldF91c2VyX3JlZyhyZWdz LCAyKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyX3QgY2lkID0gZ2V0X3VzZXJfcmVnKHJlZ3MsIDMp OworICAgICAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsCisgICAgICAgICAgICAgICAgICAg ICAgICAgZG9fcHNjaV8wXzJfY3B1X29uKHZjcHVpZCwgZXBvaW50LCBjaWQpKTsKKyAgICAgICAg fQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEFSTV9TTUNDQ19GVU5DX05VTShQU0NJ XzBfMl9GTl9DUFVfU1VTUEVORCk6CisgICAgICAgIHBlcmZjX2luY3IodnBzY2lfY3B1X3N1c3Bl bmQpOworICAgICAgICBpZiAoIHBzY2lfbW9kZV9jaGVjayhjdXJyZW50LT5kb21haW4sIGZpZCkg KQorICAgICAgICB7CisgICAgICAgICAgICB1aW50MzJfdCBwc3RhdGUgPSBnZXRfdXNlcl9yZWco cmVncywgMSk7CisgICAgICAgICAgICByZWdpc3Rlcl90IGVwb2ludCA9IGdldF91c2VyX3JlZyhy ZWdzLCAyKTsKKyAgICAgICAgICAgIHJlZ2lzdGVyX3QgY2lkID0gZ2V0X3VzZXJfcmVnKHJlZ3Ms IDMpOworICAgICAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgZG9fcHNjaV8wXzJfY3B1X3N1c3BlbmQocHN0YXRlLCBlcG9pbnQsIGNpZCkpOwor ICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNf TlVNKFBTQ0lfMF8yX0ZOX0FGRklOSVRZX0lORk8pOgorICAgICAgICBwZXJmY19pbmNyKHZwc2Np X2NwdV9hZmZpbml0eV9pbmZvKTsKKyAgICAgICAgaWYgKCBwc2NpX21vZGVfY2hlY2soY3VycmVu dC0+ZG9tYWluLCBmaWQpICkKKyAgICAgICAgeworICAgICAgICAgICAgcmVnaXN0ZXJfdCB0YWZm ID0gZ2V0X3VzZXJfcmVnKHJlZ3MsIDEpOworICAgICAgICAgICAgdWludDMyX3QgbGFmZiA9IGdl dF91c2VyX3JlZyhyZWdzLDIpOworICAgICAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsCisg ICAgICAgICAgICAgICAgICAgICAgICAgZG9fcHNjaV8wXzJfYWZmaW5pdHlfaW5mbyh0YWZmLCBs YWZmKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBBUk1fU01D Q0NfRlVOQ19OVU0oUFNDSV8wXzJfRk5fTUlHUkFURSk6CisgICAgICAgIHBlcmZjX2luY3IodnBz Y2lfY3B1X21pZ3JhdGUpOworICAgICAgICBpZiAoIHBzY2lfbW9kZV9jaGVjayhjdXJyZW50LT5k b21haW4sIGZpZCkgKQorICAgICAgICB7CisgICAgICAgICAgICB1aW50MzJfdCB0Y3B1ID0gZ2V0 X3VzZXJfcmVnKHJlZ3MsIDEpOworICAgICAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsIGRv X3BzY2lfMF8yX21pZ3JhdGUodGNwdSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVl OworICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNfQ0FMTF9DT1VOVDoKKyAgICAgICAgc2V0X3VzZXJf cmVnKHJlZ3MsIDAsIFNTQ19TTUNDQ19GVU5DVElPTl9DT1VOVCk7CisgICAgICAgIHJldHVybiB0 cnVlOworICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNfQ0FMTF9VSUQ6CisgICAgICAgIHNldF91c2Vy X3JlZyhyZWdzLCAwLCBTU0NfU01DQ0NfVUlELmFbMF0pOworICAgICAgICBzZXRfdXNlcl9yZWco cmVncywgMSwgU1NDX1NNQ0NDX1VJRC5hWzFdKTsKKyAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3Ms IDIsIFNTQ19TTUNDQ19VSUQuYVsyXSk7CisgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAzLCBT U0NfU01DQ0NfVUlELmFbM10pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEFSTV9T TUNDQ19GVU5DX0NBTExfUkVWSVNJT046CisgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCBT U0NfU01DQ0NfTUFKT1JfUkVWSVNJT04pOworICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMSwg U1NDX1NNQ0NDX01JTk9SX1JFVklTSU9OKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor ICAgIHJldHVybiBmYWxzZTsKK30KKwogLyoqCiAgKiB2c21jX2hhbmRsZV9jYWxsKCkgLSBoYW5k bGUgU01DL0hWQyBjYWxsIGFjY29yZGluZyB0byBBUk0gU01DQ0MKICAqLwpAQCAtMTA1LDYgKzIz NSwxMiBAQCBpbnQgdnNtY19oYW5kbGVfY2FsbChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykK ICAgICBjYXNlIEFSTV9TTUNDQ19PV05FUl9IWVBFUlZJU09SOgogICAgICAgICBoYW5kbGVkID0g aGFuZGxlX2h5cGVydmlzb3IocmVncyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVJNX1NN Q0NDX09XTkVSX0FSQ0g6CisgICAgICAgIGhhbmRsZWQgPSBoYW5kbGVfYXJjaChyZWdzKTsKKyAg ICAgICAgYnJlYWs7CisgICAgY2FzZSBBUk1fU01DQ0NfT1dORVJfU1RBTkRBUkQ6CisgICAgICAg IGhhbmRsZWQgPSBoYW5kbGVfc3NjKHJlZ3MpOworICAgICAgICBicmVhazsKICAgICB9CiAKICAg ICBpZiAoICFoYW5kbGVkICkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFy bS9zbWMuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS9zbWMuaAppbmRleCBhYWMyOTJh Li42YTVhNTU2IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0vc21jLmgK KysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtL3NtYy5oCkBAIC00Miw0ICs0Miw5IEBA IHR5cGVkZWYgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 OWEsIDB4Y2YsIDB4NzksIDB4ZDEsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4OGQsIDB4ZGUsIDB4ZTYsIDB4NjcpCiAKKy8qIFN0YW5kYXJkIFNlcnZpY2UgQ2FsbCBV SUQuIFJhbmRvbWx5IGdlbmVyYXRlZCB3aXRoIDNyZCBwYXJ0eSB0b29sICovCisjZGVmaW5lIFNT Q19TTUNDQ19VSUQgQVJNX1NNQ0NDX1VJRCgweGY4NjMzODZmLCAweDRiMzksIDB4NGNiZCwgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MiwgMHgyMCwgMHhjZSwgMHgx NiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MSwgMHhlNSwgMHg5 ZiwgMHg2ZikKKwogI2VuZGlmCS8qIF9fWEVOX1BVQkxJQ19BUkNIX0FSTV9TTUNfSF9fICovCi0t IAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=