From mboxrd@z Thu Jan 1 00:00:00 1970 From: Volodymyr Babchuk Subject: [PATCH v5 07/10] arm: traps: handle PSCI calls inside `vsmc.c` Date: Thu, 31 Aug 2017 23:09:29 +0300 Message-ID: <1504210172-27234-8-git-send-email-volodymyr_babchuk@epam.com> References: <1504210172-27234-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: <1504210172-27234-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: "Edgar E . Iglesias" , Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Volodymyr Babchuk List-Id: xen-devel@lists.xenproject.org UFNDSSBpcyBwYXJ0IG9mIEhWQy9TTUMgaW50ZXJmYWNlLCBzbyBpdCBzaG91bGQgYmUgaGFuZGxl ZCBpbgphcHByb3ByaWF0ZSBwbGFjZTogYHZzbWMuY2AuIFRoaXMgcGF0Y2ggbW92ZXMgUFNDSSBo YW5kbGVyCmNhbGxzIGZyb20gYHRyYXBzLmNgIHRvIGB2c21jLmNgLiBBbHNvIGl0IGNvcnJlY3Rz IGNvZGluZwpzdHlsZSBvZiB0aGUgUFNDSSBoYW5kbGVyIGZ1bmN0aW9ucy4KCk9sZGVyIFBTQ0kg MC4xIHVzZXMgU01DIGZ1bmN0aW9uIGlkZW50aWZpZXJzIGluIHJhbmdlIHRoYXQgaXMKcmVzZXJ2 ZWQgZm9yIGV4aXN0aW5nIEFQSXMgKEFSTSBERU4gMDAyOEIsIHBhZ2UgMTYpLCB3aGlsZSBuZXdl cgpQU0NJIDAuMiBhbmQgbGF0ZXIgaXMgZGVmaW5lZCBhcyAic3RhbmRhcmQgc2VjdXJlIHNlcnZp Y2UiIHdpdGggaXRzCm93biByYW5nZXMgKEFSTSBERU4gMDAyOEIsIHBhZ2UgMTgpLgoKU2lnbmVk LW9mZi1ieTogVm9sb2R5bXlyIEJhYmNodWsgPHZvbG9keW15cl9iYWJjaHVrQGVwYW0uY29tPgpS ZXZpZXdlZC1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hl bmtvQGVwYW0uY29tPgpSZXZpZXdlZC1ieTogT2xla3NhbmRyIFR5c2hjaGVua28gPG9sZWtzYW5k cl90eXNoY2hlbmtvQGVwYW0uY29tPgotLS0KCiAqIGhhbmRsZV9wc2NpXzBfeCgpIHJlbmFtZWQg dG8gaGFuZGxlX2V4aXN0aW5nX2FwaXMoKQogKiBzcGVsbGluZyBmaXhlcwogKiBmaXhlZCBjb2Rp bmcgc3R5bGUgZm9yIG1vdmVkIFBTQ0kgY29kZQogKiBwcmV2aW91c2x5IGludHJvZHVjZWQgYGZ1 bmNpZGAgbW92ZWQgdG8gcHJldmlvdXMgcGF0Y2gKCi0tLQogeGVuL2FyY2gvYXJtL3RyYXBzLmMg ICAgICAgICAgICAgICAgfCAxMTcgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gvYXJt L3ZzbWMuYyAgICAgICAgICAgICAgICAgfCAxODkgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3RyYXBzLmggICAgICAgICB8ICAgMSArCiB4 ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0vc21jY2MuaCB8ICAgOCArKwogNCBmaWxlcyBjaGFu Z2VkLCAxOTYgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS90cmFwcy5jIGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKaW5kZXggZjNiNjRiNC4u ZDAwZmYzNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3RyYXBzLmMKKysrIGIveGVuL2FyY2gv YXJtL3RyYXBzLmMKQEAgLTE0NTAsMTE5ICsxNDUwLDYgQEAgc3RhdGljIHZvaWQgZG9fZGVidWdf dHJhcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgdW5zaWduZWQgaW50IGNvZGUpCiB9CiAj ZW5kaWYKIAotI2RlZmluZSBQU0NJX1NFVF9SRVNVTFQocmVnLCB2YWwpIHNldF91c2VyX3JlZyhy ZWcsIDAsIHZhbCkKLSNkZWZpbmUgUFNDSV9BUkcocmVnLG4pIGdldF91c2VyX3JlZyhyZWcsIG4p Ci0KLSNpZmRlZiBDT05GSUdfQVJNXzY0Ci0jZGVmaW5lIFBTQ0lfQVJHMzIocmVnLG4pICh1aW50 MzJfdClnZXRfdXNlcl9yZWcocmVnLG4pCi0jZWxzZQotI2RlZmluZSBQU0NJX0FSRzMyKHJlZyxu KSBQU0NJX0FSRyhyZWcsbikKLSNlbmRpZgotCi0vKiBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNr aW5nIGFybSBtb2RlIDMyLzY0IGJpdCAqLwotc3RhdGljIGlubGluZSBpbnQgcHNjaV9tb2RlX2No ZWNrKHN0cnVjdCBkb21haW4gKmQsIHJlZ2lzdGVyX3QgZmlkKQotewotICAgICAgICByZXR1cm4g ISggaXNfNjRiaXRfZG9tYWluKGQpXiggKGZpZCAmIFBTQ0lfMF8yXzY0QklUKSA+PiAzMCApICk7 Ci19Ci0KLXN0YXRpYyB2b2lkIGRvX3RyYXBfcHNjaShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn cykKLXsKLSAgICByZWdpc3Rlcl90IGZpZCA9IFBTQ0lfQVJHKHJlZ3MsMCk7Ci0KLSAgICAvKiBw cmVsb2FkaW5nIGluIGNhc2UgcHNjaV9tb2RlX2NoZWNrIGZhaWxzICovCi0gICAgUFNDSV9TRVRf UkVTVUxUKHJlZ3MsIFBTQ0lfSU5WQUxJRF9QQVJBTUVURVJTKTsKLSAgICBzd2l0Y2goIGZpZCAp Ci0gICAgewotICAgIGNhc2UgUFNDSV9jcHVfb2ZmOgotICAgICAgICB7Ci0gICAgICAgICAgICB1 aW50MzJfdCBwc3RhdGUgPSBQU0NJX0FSRzMyKHJlZ3MsMSk7Ci0gICAgICAgICAgICBwZXJmY19p bmNyKHZwc2NpX2NwdV9vZmYpOwotICAgICAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIGRv X3BzY2lfY3B1X29mZihwc3RhdGUpKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBj YXNlIFBTQ0lfY3B1X29uOgotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50MzJfdCB2Y3B1aWQg PSBQU0NJX0FSRzMyKHJlZ3MsMSk7Ci0gICAgICAgICAgICByZWdpc3Rlcl90IGVwb2ludCA9IFBT Q0lfQVJHKHJlZ3MsMik7Ci0gICAgICAgICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9vbik7Ci0g ICAgICAgICAgICBQU0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV9jcHVfb24odmNwdWlkLCBl cG9pbnQpKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBTQ0lfMF8yX0ZO X1BTQ0lfVkVSU0lPTjoKLSAgICAgICAgcGVyZmNfaW5jcih2cHNjaV92ZXJzaW9uKTsKLSAgICAg ICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIGRvX3BzY2lfMF8yX3ZlcnNpb24oKSk7Ci0gICAgICAg IGJyZWFrOwotICAgIGNhc2UgUFNDSV8wXzJfRk5fQ1BVX09GRjoKLSAgICAgICAgcGVyZmNfaW5j cih2cHNjaV9jcHVfb2ZmKTsKLSAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIGRvX3BzY2lf MF8yX2NwdV9vZmYoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFNDSV8wXzJfRk5fTUlH UkFURV9JTkZPX1RZUEU6Ci0gICAgICAgIHBlcmZjX2luY3IodnBzY2lfbWlncmF0ZV9pbmZvX3R5 cGUpOwotICAgICAgICBQU0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV8wXzJfbWlncmF0ZV9p bmZvX3R5cGUoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFNDSV8wXzJfRk5fTUlHUkFU RV9JTkZPX1VQX0NQVToKLSAgICBjYXNlIFBTQ0lfMF8yX0ZONjRfTUlHUkFURV9JTkZPX1VQX0NQ VToKLSAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9taWdyYXRlX2luZm9fdXBfY3B1KTsKLSAgICAg ICAgaWYgKCBwc2NpX21vZGVfY2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKLSAgICAgICAg ICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBkb19wc2NpXzBfMl9taWdyYXRlX2luZm9fdXBfY3B1 KCkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBTQ0lfMF8yX0ZOX1NZU1RFTV9PRkY6Ci0g ICAgICAgIHBlcmZjX2luY3IodnBzY2lfc3lzdGVtX29mZik7Ci0gICAgICAgIGRvX3BzY2lfMF8y X3N5c3RlbV9vZmYoKTsKLSAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIFBTQ0lfSU5URVJO QUxfRkFJTFVSRSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUFNDSV8wXzJfRk5fU1lTVEVN X1JFU0VUOgotICAgICAgICBwZXJmY19pbmNyKHZwc2NpX3N5c3RlbV9yZXNldCk7Ci0gICAgICAg IGRvX3BzY2lfMF8yX3N5c3RlbV9yZXNldCgpOwotICAgICAgICBQU0NJX1NFVF9SRVNVTFQocmVn cywgUFNDSV9JTlRFUk5BTF9GQUlMVVJFKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQU0NJ XzBfMl9GTl9DUFVfT046Ci0gICAgY2FzZSBQU0NJXzBfMl9GTjY0X0NQVV9PTjoKLSAgICAgICAg cGVyZmNfaW5jcih2cHNjaV9jcHVfb24pOwotICAgICAgICBpZiAoIHBzY2lfbW9kZV9jaGVjayhj dXJyZW50LT5kb21haW4sIGZpZCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZWdpc3Rlcl90 IHZjcHVpZCA9IFBTQ0lfQVJHKHJlZ3MsMSk7Ci0gICAgICAgICAgICByZWdpc3Rlcl90IGVwb2lu dCA9IFBTQ0lfQVJHKHJlZ3MsMik7Ci0gICAgICAgICAgICByZWdpc3Rlcl90IGNpZCA9IFBTQ0lf QVJHKHJlZ3MsMyk7Ci0gICAgICAgICAgICBQU0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV8w XzJfY3B1X29uKHZjcHVpZCwgZXBvaW50LCBjaWQpKTsKLSAgICAgICAgfQotICAgICAgICBicmVh azsKLSAgICBjYXNlIFBTQ0lfMF8yX0ZOX0NQVV9TVVNQRU5EOgotICAgIGNhc2UgUFNDSV8wXzJf Rk42NF9DUFVfU1VTUEVORDoKLSAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9jcHVfc3VzcGVuZCk7 Ci0gICAgICAgIGlmICggcHNjaV9tb2RlX2NoZWNrKGN1cnJlbnQtPmRvbWFpbiwgZmlkKSApCi0g ICAgICAgIHsKLSAgICAgICAgICAgIHVpbnQzMl90IHBzdGF0ZSA9IFBTQ0lfQVJHMzIocmVncywx KTsKLSAgICAgICAgICAgIHJlZ2lzdGVyX3QgZXBvaW50ID0gUFNDSV9BUkcocmVncywyKTsKLSAg ICAgICAgICAgIHJlZ2lzdGVyX3QgY2lkID0gUFNDSV9BUkcocmVncywzKTsKLSAgICAgICAgICAg IFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBkb19wc2NpXzBfMl9jcHVfc3VzcGVuZChwc3RhdGUsIGVw b2ludCwgY2lkKSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQU0NJXzBf Ml9GTl9BRkZJTklUWV9JTkZPOgotICAgIGNhc2UgUFNDSV8wXzJfRk42NF9BRkZJTklUWV9JTkZP OgotICAgICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9hZmZpbml0eV9pbmZvKTsKLSAgICAgICAg aWYgKCBwc2NpX21vZGVfY2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKLSAgICAgICAgewot ICAgICAgICAgICAgcmVnaXN0ZXJfdCB0YWZmID0gUFNDSV9BUkcocmVncywxKTsKLSAgICAgICAg ICAgIHVpbnQzMl90IGxhZmYgPSBQU0NJX0FSRzMyKHJlZ3MsMik7Ci0gICAgICAgICAgICBQU0NJ X1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV8wXzJfYWZmaW5pdHlfaW5mbyh0YWZmLCBsYWZmKSk7 Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQU0NJXzBfMl9GTl9NSUdSQVRF OgotICAgIGNhc2UgUFNDSV8wXzJfRk42NF9NSUdSQVRFOgotICAgICAgICBwZXJmY19pbmNyKHZw c2NpX2NwdV9taWdyYXRlKTsKLSAgICAgICAgaWYgKCBwc2NpX21vZGVfY2hlY2soY3VycmVudC0+ ZG9tYWluLCBmaWQpICkKLSAgICAgICAgewotICAgICAgICAgICAgdWludDMyX3QgdGNwdSA9IFBT Q0lfQVJHMzIocmVncywxKTsKLSAgICAgICAgICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBkb19w c2NpXzBfMl9taWdyYXRlKHRjcHUpKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBk ZWZhdWx0OgotICAgICAgICBkb21haW5fY3Jhc2hfc3luY2hyb25vdXMoKTsKLSAgICAgICAgcmV0 dXJuOwotICAgIH0KLX0KLQogI2lmZGVmIENPTkZJR19BUk1fNjQKICNkZWZpbmUgSFlQRVJDQUxM X1JFU1VMVF9SRUcocikgKHIpLT54MAogI2RlZmluZSBIWVBFUkNBTExfQVJHMShyKSAociktPngw CkBAIC0yMjUxLDcgKzIxMzgsNyBAQCBhc21saW5rYWdlIHZvaWQgZG9fdHJhcF9ndWVzdF9zeW5j KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICAgICAgcmV0dXJuIGRvX2RlYnVn X3RyYXAocmVncywgaHNyLmlzcyAmIDB4MDBmZik7CiAjZW5kaWYKICAgICAgICAgaWYgKCBoc3Iu aXNzID09IDAgKQotICAgICAgICAgICAgcmV0dXJuIGRvX3RyYXBfcHNjaShyZWdzKTsKKyAgICAg ICAgICAgIHJldHVybiBkb190cmFwX2h2Y19zbWNjYyhyZWdzKTsKICAgICAgICAgZG9fdHJhcF9o eXBlcmNhbGwocmVncywgKHJlZ2lzdGVyX3QgKikmcmVncy0+cjEyLCBoc3IuaXNzKTsKICAgICAg ICAgYnJlYWs7CiAjaWZkZWYgQ09ORklHX0FSTV82NApAQCAtMjI2Myw3ICsyMTUwLDcgQEAgYXNt bGlua2FnZSB2b2lkIGRvX3RyYXBfZ3Vlc3Rfc3luYyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn cykKICAgICAgICAgICAgIHJldHVybiBkb19kZWJ1Z190cmFwKHJlZ3MsIGhzci5pc3MgJiAweDAw ZmYpOwogI2VuZGlmCiAgICAgICAgIGlmICggaHNyLmlzcyA9PSAwICkKLSAgICAgICAgICAgIHJl dHVybiBkb190cmFwX3BzY2kocmVncyk7CisgICAgICAgICAgICByZXR1cm4gZG9fdHJhcF9odmNf c21jY2MocmVncyk7CiAgICAgICAgIGRvX3RyYXBfaHlwZXJjYWxsKHJlZ3MsICZyZWdzLT54MTYs IGhzci5pc3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEhTUl9FQ19TTUM2NDoKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL2FybS92c21jLmMgYi94ZW4vYXJjaC9hcm0vdnNtYy5jCmluZGV4IDk3 YTZiZTMuLmQzMTIwYTUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS92c21jLmMKKysrIGIveGVu L2FyY2gvYXJtL3ZzbWMuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgPHhlbi90eXBlcy5o PgogI2luY2x1ZGUgPHB1YmxpYy9hcmNoLWFybS9zbWNjYy5oPgogI2luY2x1ZGUgPGFzbS9tb25p dG9yLmg+CisjaW5jbHVkZSA8YXNtL3BzY2kuaD4KICNpbmNsdWRlIDxhc20vcmVncy5oPgogI2lu Y2x1ZGUgPGFzbS9zbWNjYy5oPgogI2luY2x1ZGUgPGFzbS90cmFwcy5oPgpAQCAtMjYsNiArMjcs OSBAQAogLyogTnVtYmVyIG9mIGZ1bmN0aW9ucyBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IEh5cGVy dmlzb3IgU2VydmljZS4gKi8KICNkZWZpbmUgWEVOX1NNQ0NDX0ZVTkNUSU9OX0NPVU5UIDMKIAor LyogTnVtYmVyIG9mIGZ1bmN0aW9ucyBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IFN0YW5kYXJkIFNl cnZpY2UgU2VydmljZSBDYWxscy4gKi8KKyNkZWZpbmUgU1NTQ19TTUNDQ19GVU5DVElPTl9DT1VO VCAxMworCiBzdGF0aWMgdm9pZCBmaWxsX3V1aWQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Ms IGNvbnN0IHhlbl91dWlkX3QgKnUpCiB7CiAgICAgaW50IG47CkBAIC03MSw2ICs3NSwxNTQgQEAg c3RhdGljIGJvb2wgaGFuZGxlX2h5cGVydmlzb3Ioc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mp CiAgICAgfQogfQogCisjZGVmaW5lIFBTQ0lfU0VUX1JFU1VMVChyZWcsIHZhbCkgc2V0X3VzZXJf cmVnKHJlZywgMCwgdmFsKQorI2RlZmluZSBQU0NJX0FSRyhyZWcsIG4pIGdldF91c2VyX3JlZyhy ZWcsIG4pCisKKyNpZmRlZiBDT05GSUdfQVJNXzY0CisjZGVmaW5lIFBTQ0lfQVJHMzIocmVnLCBu KSAodWludDMyX3QpKGdldF91c2VyX3JlZyhyZWcsIG4pKQorI2Vsc2UKKyNkZWZpbmUgUFNDSV9B UkczMihyZWcsIG4pIFBTQ0lfQVJHKHJlZywgbikKKyNlbmRpZgorCisvKiBFeGlzdGluZyAocHJl IFNNQ0NDKSBBUElzLiBUaGlzIGluY2x1ZGVzIFBTQ0kgMC4xIGludGVyZmFjZSAqLworc3RhdGlj IGJvb2wgaGFuZGxlX2V4aXN0aW5nX2FwaXMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCit7 CisgICAgc3dpdGNoICggUFNDSV9BUkczMihyZWdzLCAwKSApCisgICAgeworICAgIGNhc2UgUFND SV9jcHVfb2ZmOgorICAgIHsKKyAgICAgICAgdWludDMyX3QgcHN0YXRlID0gUFNDSV9BUkczMihy ZWdzLCAxKTsKKworICAgICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9vZmYpOworICAgICAgICBQ U0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV9jcHVfb2ZmKHBzdGF0ZSkpOworICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQU0NJX2NwdV9vbjoKKyAgICB7CisgICAgICAg IHVpbnQzMl90IHZjcHVpZCA9IFBTQ0lfQVJHMzIocmVncywgMSk7CisgICAgICAgIHJlZ2lzdGVy X3QgZXBvaW50ID0gUFNDSV9BUkcocmVncywgMik7CisKKyAgICAgICAgcGVyZmNfaW5jcih2cHNj aV9jcHVfb24pOworICAgICAgICBQU0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV9jcHVfb24o dmNwdWlkLCBlcG9pbnQpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGRlZmF1 bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8qIGhlbHBlciBmdW5jdGlv biBmb3IgY2hlY2tpbmcgYXJtIG1vZGUgMzIvNjQgYml0ICovCitzdGF0aWMgaW5saW5lIGludCBw c2NpX21vZGVfY2hlY2soc3RydWN0IGRvbWFpbiAqZCwgcmVnaXN0ZXJfdCBmaWQpCit7CisgICAg cmV0dXJuICEoIGlzXzY0Yml0X2RvbWFpbihkKV4oIChmaWQgJiBQU0NJXzBfMl82NEJJVCkgPj4g MzAgKSApOworfQorCisvKiBQU0NJIDAuMiBpbnRlcmZhY2UgYW5kIG90aGVyIFN0YW5kYXJkIFNl Y3VyZSBDYWxscyAqLworc3RhdGljIGJvb2wgaGFuZGxlX3Nzc2Moc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCit7CisgICAgcmVnaXN0ZXJfdCBmaWQgPSBQU0NJX0FSRyhyZWdzLCAwKTsKKwor ICAgIHN3aXRjaCAoIHNtY2NjX2dldF9mbihmaWQpICkKKyAgICB7CisgICAgY2FzZSBzbWNjY19n ZXRfZm4oUFNDSV8wXzJfRk5fUFNDSV9WRVJTSU9OKToKKyAgICAgICAgcGVyZmNfaW5jcih2cHNj aV92ZXJzaW9uKTsKKyAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIGRvX3BzY2lfMF8yX3Zl cnNpb24oKSk7CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBzbWNjY19nZXRfZm4o UFNDSV8wXzJfRk5fQ1BVX09GRik6CisgICAgICAgIHBlcmZjX2luY3IodnBzY2lfY3B1X29mZik7 CisgICAgICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBkb19wc2NpXzBfMl9jcHVfb2ZmKCkpOwor ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2Ugc21jY2NfZ2V0X2ZuKFBTQ0lfMF8yX0ZO X01JR1JBVEVfSU5GT19UWVBFKToKKyAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9taWdyYXRlX2lu Zm9fdHlwZSk7CisgICAgICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBkb19wc2NpXzBfMl9taWdy YXRlX2luZm9fdHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIHNtY2Nj X2dldF9mbihQU0NJXzBfMl9GTl9NSUdSQVRFX0lORk9fVVBfQ1BVKToKKyAgICAgICAgcGVyZmNf aW5jcih2cHNjaV9taWdyYXRlX2luZm9fdXBfY3B1KTsKKyAgICAgICAgaWYgKCBwc2NpX21vZGVf Y2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKKyAgICAgICAgICAgIFBTQ0lfU0VUX1JFU1VM VChyZWdzLCBkb19wc2NpXzBfMl9taWdyYXRlX2luZm9fdXBfY3B1KCkpOworICAgICAgICByZXR1 cm4gdHJ1ZTsKKworICAgIGNhc2Ugc21jY2NfZ2V0X2ZuKFBTQ0lfMF8yX0ZOX1NZU1RFTV9PRkYp OgorICAgICAgICBwZXJmY19pbmNyKHZwc2NpX3N5c3RlbV9vZmYpOworICAgICAgICBkb19wc2Np XzBfMl9zeXN0ZW1fb2ZmKCk7CisgICAgICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBQU0NJX0lO VEVSTkFMX0ZBSUxVUkUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2Ugc21jY2Nf Z2V0X2ZuKFBTQ0lfMF8yX0ZOX1NZU1RFTV9SRVNFVCk6CisgICAgICAgIHBlcmZjX2luY3IodnBz Y2lfc3lzdGVtX3Jlc2V0KTsKKyAgICAgICAgZG9fcHNjaV8wXzJfc3lzdGVtX3Jlc2V0KCk7Cisg ICAgICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBQU0NJX0lOVEVSTkFMX0ZBSUxVUkUpOworICAg ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2Ugc21jY2NfZ2V0X2ZuKFBTQ0lfMF8yX0ZOX0NQ VV9PTik6CisgICAgICAgIHBlcmZjX2luY3IodnBzY2lfY3B1X29uKTsKKyAgICAgICAgaWYgKCBw c2NpX21vZGVfY2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKKyAgICAgICAgeworICAgICAg ICAgICAgcmVnaXN0ZXJfdCB2Y3B1aWQgPSBQU0NJX0FSRyhyZWdzLCAxKTsKKyAgICAgICAgICAg IHJlZ2lzdGVyX3QgZXBvaW50ID0gUFNDSV9BUkcocmVncywgMik7CisgICAgICAgICAgICByZWdp c3Rlcl90IGNpZCA9IFBTQ0lfQVJHKHJlZ3MsIDMpOworCisgICAgICAgICAgICBQU0NJX1NFVF9S RVNVTFQocmVncywgZG9fcHNjaV8wXzJfY3B1X29uKHZjcHVpZCwgZXBvaW50LCBjaWQpKTsKKyAg ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2Ugc21jY2NfZ2V0X2ZuKFBT Q0lfMF8yX0ZOX0NQVV9TVVNQRU5EKToKKyAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9jcHVfc3Vz cGVuZCk7CisgICAgICAgIGlmICggcHNjaV9tb2RlX2NoZWNrKGN1cnJlbnQtPmRvbWFpbiwgZmlk KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQzMl90IHBzdGF0ZSA9IFBTQ0lfQVJHMzIo cmVncywgMSk7CisgICAgICAgICAgICByZWdpc3Rlcl90IGVwb2ludCA9IFBTQ0lfQVJHKHJlZ3Ms IDIpOworICAgICAgICAgICAgcmVnaXN0ZXJfdCBjaWQgPSBQU0NJX0FSRyhyZWdzLCAzKTsKKwor ICAgICAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIGRvX3BzY2lfMF8yX2NwdV9zdXNwZW5k KHBzdGF0ZSwgZXBvaW50LCBjaWQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsK KworICAgIGNhc2Ugc21jY2NfZ2V0X2ZuKFBTQ0lfMF8yX0ZOX0FGRklOSVRZX0lORk8pOgorICAg ICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9hZmZpbml0eV9pbmZvKTsKKyAgICAgICAgaWYgKCBw c2NpX21vZGVfY2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKKyAgICAgICAgeworICAgICAg ICAgICAgcmVnaXN0ZXJfdCB0YWZmID0gUFNDSV9BUkcocmVncywgMSk7CisgICAgICAgICAgICB1 aW50MzJfdCBsYWZmID0gUFNDSV9BUkczMihyZWdzLCAyKTsKKyAgICAgICAgICAgIFBTQ0lfU0VU X1JFU1VMVChyZWdzLCBkb19wc2NpXzBfMl9hZmZpbml0eV9pbmZvKHRhZmYsIGxhZmYpKTsKKyAg ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2Ugc21jY2NfZ2V0X2ZuKFBT Q0lfMF8yX0ZOX01JR1JBVEUpOgorICAgICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9taWdyYXRl KTsKKyAgICAgICAgaWYgKCBwc2NpX21vZGVfY2hlY2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkK KyAgICAgICAgeworICAgICAgICAgICAgdWludDMyX3QgdGNwdSA9IFBTQ0lfQVJHMzIocmVncywg MSk7CisKKyAgICAgICAgICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBkb19wc2NpXzBfMl9taWdy YXRlKHRjcHUpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2Ug QVJNX1NNQ0NDX0ZVTkNfQ0FMTF9DT1VOVDoKKyAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAs IFNTU0NfU01DQ0NfRlVOQ1RJT05fQ09VTlQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg IGNhc2UgQVJNX1NNQ0NDX0ZVTkNfQ0FMTF9VSUQ6CisgICAgeworICAgICAgICBzdGF0aWMgY29u c3QgeGVuX3V1aWRfdCBwc2NpX3V1aWQgPSBTU1NDX1NNQ0NDX1VJRDsKKworICAgICAgICBmaWxs X3V1aWQocmVncywgJnBzY2lfdXVpZCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor ICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNfQ0FMTF9SRVZJU0lPTjoKKyAgICAgICAgc2V0X3VzZXJf cmVnKHJlZ3MsIDAsIFNTU0NfU01DQ0NfTUFKT1JfUkVWSVNJT04pOworICAgICAgICBzZXRfdXNl cl9yZWcocmVncywgMSwgU1NTQ19TTUNDQ19NSU5PUl9SRVZJU0lPTik7CisgICAgICAgIHJldHVy biB0cnVlOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K KwogLyoKICAqIHZzbWNjY19oYW5kbGVfY2FsbCgpIC0gaGFuZGxlIFNNQy9IVkMgY2FsbCBhY2Nv cmRpbmcgdG8gQVJNIFNNQ0NDLgogICogcmV0dXJucyB0cnVlIGlmIHRoYXQgd2FzIHZhbGlkIFNN Q0NDIGNhbGwgKGV2ZW4gaWYgZnVuY3Rpb24gbnVtYmVyCkBAIC0xMTAsMTEgKzI2MiwyNiBAQCBz dGF0aWMgYm9vbCB2c21jY2NfaGFuZGxlX2NhbGwoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mp CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHN3aXRjaCAoIHNtY2NjX2dldF9v d25lcihmdW5jaWQpICkKKyAgICAvKgorICAgICAqIFNwZWNpYWwgY2FzZTogaWRlbnRpZmllciBy YW5nZSBmb3IgZXhpc3RpbmcgQVBJcy4KKyAgICAgKiBUaGlzIHJhbmdlIGlzIGRlc2NyaWJlZCBp biBTTUNDQyAoQVJNIERFTiAwMDI4QiwgcGFnZSAxNiksCisgICAgICogYnV0IGl0IGRvZXMgbm90 IGNvbmZvcm1zIHRvIHN0YW5kYXJkIGZ1bmN0aW9uIGlkZW50aWZpZXIKKyAgICAgKiBlbmNvZGlu Zy4KKyAgICAgKi8KKyAgICBpZiAoIGZ1bmNpZCA+PSBBUk1fU01DQ0NfUkVTRVJWRURfUkFOR0Vf U1RBUlQgJiYKKyAgICAgICAgIGZ1bmNpZCA8PSBBUk1fU01DQ0NfUkVTRVJWRURfUkFOR0VfRU5E ICkKKyAgICAgICAgaGFuZGxlZCA9IGhhbmRsZV9leGlzdGluZ19hcGlzKHJlZ3MpOworICAgIGVs c2UKICAgICB7Ci0gICAgY2FzZSBBUk1fU01DQ0NfT1dORVJfSFlQRVJWSVNPUjoKLSAgICAgICAg aGFuZGxlZCA9IGhhbmRsZV9oeXBlcnZpc29yKHJlZ3MpOwotICAgICAgICBicmVhazsKKyAgICAg ICAgc3dpdGNoICggc21jY2NfZ2V0X293bmVyKGZ1bmNpZCkgKQorICAgICAgICB7CisgICAgICAg IGNhc2UgQVJNX1NNQ0NDX09XTkVSX0hZUEVSVklTT1I6CisgICAgICAgICAgICBoYW5kbGVkID0g aGFuZGxlX2h5cGVydmlzb3IocmVncyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz ZSBBUk1fU01DQ0NfT1dORVJfU1RBTkRBUkQ6CisgICAgICAgICAgICBoYW5kbGVkID0gaGFuZGxl X3Nzc2MocmVncyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAogICAg IGlmICggIWhhbmRsZWQgKQpAQCAtMTU4LDYgKzMyNSwyMCBAQCB2b2lkIGRvX3RyYXBfc21jKHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBjb25zdCB1bmlvbiBoc3IgaHNyKQogICAgICAgICBp bmplY3RfdW5kZWZfZXhjZXB0aW9uKHJlZ3MsIGhzcik7CiB9CiAKK3ZvaWQgZG9fdHJhcF9odmNf c21jY2Moc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCit7CisgICAgY29uc3QgdW5pb24gaHNy IGhzciA9IHsgLmJpdHMgPSByZWdzLT5oc3IgfTsKKworICAgIC8qCisgICAgICogdnNtY2NjX2hh bmRsZV9jYWxsKCkgd2lsbCByZXR1cm4gZmFsc2UgaWYgdGhpcyBjYWxsIGlzIG5vdAorICAgICAq IFNNQ0NDIGNvbXBhdGlibGUgKGUuZy4gaW1tZWRpYXRlIHZhbHVlICE9IDApLiBBcyBpdCBpcyBu b3QKKyAgICAgKiBjb21wYXRpYmxlLCB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQgZ3Vlc3Qgd2lsbCB1 bmRlcnN0YW5kCisgICAgICogQVJNX1NNQ0NDX0VSUl9VTktOT1dOX0ZVTkNUSU9OLgorICAgICAq LworICAgIGlmICggIXZzbWNjY19oYW5kbGVfY2FsbChyZWdzKSApCisgICAgICAgIGluamVjdF91 bmRlZl9leGNlcHRpb24ocmVncywgaHNyKTsKK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoK ICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdHJhcHMuaCBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vdHJhcHMuaAppbmRleCA2ZWZkMWM1Li4wYjkxYWE3IDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL3RyYXBzLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFy bS90cmFwcy5oCkBAIC0zMyw2ICszMyw3IEBAIHZvaWQgZG9fY3Aoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MsIGNvbnN0IHVuaW9uIGhzciBoc3IpOwogCiAvKiBTTUNDQyBoYW5kbGluZyAqLwog dm9pZCBkb190cmFwX3NtYyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgY29uc3QgdW5pb24g aHNyIGhzcik7Cit2b2lkIGRvX3RyYXBfaHZjX3NtY2NjKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzKTsKIAogI2VuZGlmIC8qIF9fQVNNX0FSTV9UUkFQU19fICovCiAvKgpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvcHVibGljL2FyY2gtYXJtL3NtY2NjLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMv YXJjaC1hcm0vc21jY2MuaAppbmRleCBhMWQwMGFlLi5jYWVhZDZlIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0vc21jY2MuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMv YXJjaC1hcm0vc21jY2MuaApAQCAtNDYsNiArNDYsMTQgQEAKICNkZWZpbmUgWEVOX1NNQ0NDX1VJ RCBYRU5fREVGSU5FX1VVSUQoMHhhNzE4MTJkYywgMHhjNjk4LCAweDQzNjksIDB4OWFjZiwgXAog CQkJCSAgICAgIDB4NzksIDB4ZDEsIDB4OGQsIDB4ZGUsIDB4ZTYsIDB4NjcpCiAKKy8qIFN0YW5k YXJkIFNlcnZpY2UgU2VydmljZSBDYWxsIHZlcnNpb24uICovCisjZGVmaW5lIFNTU0NfU01DQ0Nf TUFKT1JfUkVWSVNJT04gMAorI2RlZmluZSBTU1NDX1NNQ0NDX01JTk9SX1JFVklTSU9OIDEKKwor LyogU3RhbmRhcmQgU2VydmljZSBDYWxsIFVJRC4gUmFuZG9tbHkgZ2VuZXJhdGVkIHdpdGggdXVp ZGdlbi4gKi8KKyNkZWZpbmUgU1NTQ19TTUNDQ19VSUQgWEVOX0RFRklORV9VVUlEKDB4Zjg2MzM4 NmYsIDB4NGIzOSwgMHg0Y2JkLCAweDkyMjAsXAorCQkJCSAgICAgIDB4Y2UsIDB4MTYsIDB4NDEs IDB4ZTUsIDB4OWYsIDB4NmYpCisKICNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfQVJDSF9BUk1fU01D Q0NfSF9fICovCiAKIC8qCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=