From mboxrd@z Thu Jan 1 00:00:00 1970 From: Volodymyr Babchuk Subject: [PATCH v7 07/11] arm: smccc: handle SMCs according to SMCCC Date: Thu, 5 Oct 2017 00:00:23 +0300 Message-ID: <1507150827-7858-8-git-send-email-volodymyr_babchuk@epam.com> References: <1507150827-7858-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: <1507150827-7858-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 , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Volodymyr Babchuk List-Id: xen-devel@lists.xenproject.org U01DQ0MgKFNNQyBDYWxsIENvbnZlbnRpb24pIGRlc2NyaWJlcyBob3cgdG8gaGFuZGxlIGJvdGgg SFZDcyBhbmQgU01Dcy4KU01DQ0Mgc3RhdGVzIHRoYXQgYm90aCBIVkMgYW5kIFNNQyBhcmUgdmFs aWQgY29uZHVpdHMgdG8gY2FsbCB0byBkaWZmZXJlbnQKZmlybXdhcmUgZnVuY3Rpb25zLiBUaHVz LCBmb3IgZXhhbXBsZSwgUFNDSSBjYWxscyBjYW4gYmUgbWFkZSBib3RoIGJ5ClNNQyBvciBIVkMu IEFsc28gU01DQ0MgZGVmaW5lcyBmdW5jdGlvbiBudW1iZXIgY29kaW5nIGZvciBzdWNoIGNhbGxz LgpCZXNpZGVzIGZ1bmN0aW9uYWwgY2FsbHMgdGhlcmUgYXJlIHF1ZXJ5IGNhbGxzLCB3aGljaCBh bGxvd3MgdW5kZXJsaW5nCk9TIGRldGVybWluZSB2ZXJzaW9uLCBVVUlEIGFuZCBudW1iZXIgb2Yg ZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHNlcnZpY2UKcHJvdmlkZXIuCgpUaGlzIHBhdGNoIGFkZHMg bmV3IGZpbGUgYHZzbWMuY2AsIHdoaWNoIGhhbmRsZXMgYm90aCBnZW5lcmljIFNNQ3MKYW5kIEhW QyBhY2NvcmRpbmcgdG8gU01DQ0MuIEF0IHRoaXMgbW9tZW50IGl0IGltcGxlbWVudHMgb25seSBv bmUKc2VydmljZTogU3RhbmRhcmQgSHlwZXJ2aXNvciBTZXJ2aWNlLgoKQXQgdGhpcyB0aW1lIFN0 YW5kYXJkIEh5cGVydmlzb3IgU2VydmljZSBvbmx5IHN1cHBvcnRzIHF1ZXJ5IGNhbGxzLApzbyBj YWxsZXIgY2FuIGFzayBhYm91dCBoeXBlcnZpc29yIFVJRCBhbmQgZGV0ZXJtaW5lIHRoYXQgaXQg aXMgWEVOIHJ1bm5pbmcuCgpUaGlzIGNoYW5nZSBhbGxvd3MgbW9yZSBnZW5lcmljIGhhbmRsaW5n IGZvciBTTUNzIGFuZCBIVkNzIGFuZCBpdCBjYW4KYmUgZWFzaWx5IGV4dGVuZGVkIHRvIHN1cHBv cnQgbmV3IHNlcnZpY2VzIGFuZCBmdW5jdGlvbnMuCgpCdXQsIGJlZm9yZSBTTUMgaXMgZm9yd2Fy ZGVkIHRvIHN0YW5kYXJkIFNNQ0NDIGhhbmRsZXIsIGl0IGNhbiBiZSByb3V0ZWQKdG8gYSBkb21h aW4gbW9uaXRvciwgaWYgb25lIGlzIGluc3RhbGxlZC4KClNpZ25lZC1vZmYtYnk6IFZvbG9keW15 ciBCYWJjaHVrIDx2b2xvZHlteXJfYmFiY2h1a0BlcGFtLmNvbT4KUmV2aWV3ZWQtYnk6IE9sZWtz YW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KUmV2 aWV3ZWQtYnk6IE9sZWtzYW5kciBUeXNoY2hlbmtvIDxvbGVrc2FuZHJfdHlzaGNoZW5rb0BlcGFt LmNvbT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Ci0tLQog eGVuL2FyY2gvYXJtL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gvYXJt L3RyYXBzLmMgICAgICAgICAgICAgICAgfCAgMTcgLS0tLQogeGVuL2FyY2gvYXJtL3ZzbWMuYyAg ICAgICAgICAgICAgICAgfCAxOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiB4ZW4vaW5jbHVkZS9hc20tYXJtL3RyYXBzLmggICAgICAgICB8ICAgMyArCiB4ZW4vaW5jbHVk ZS9wdWJsaWMvYXJjaC1hcm0vc21jY2MuaCB8ICA1OCArKysrKysrKysrKwogNSBmaWxlcyBjaGFu Z2VkLCAyNTMgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgeGVuL2FyY2gvYXJtL3ZzbWMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1 YmxpYy9hcmNoLWFybS9zbWNjYy5oCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL01ha2VmaWxl IGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IDQyNDU4MGIuLjMwYTJhNjUgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKQEAg LTUzLDYgKzUzLDcgQEAgb2JqLSQoQ09ORklHX0hBU19JVFMpICs9IHZnaWMtdjMtaXRzLm8KIG9i ai15ICs9IHZtX2V2ZW50Lm8KIG9iai15ICs9IHZ0aW1lci5vCiBvYmotJChDT05GSUdfU0JTQV9W VUFSVF9DT05TT0xFKSArPSB2cGwwMTEubworb2JqLXkgKz0gdnNtYy5vCiBvYmoteSArPSB2cHNj aS5vCiBvYmoteSArPSB2dWFydC5vCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90cmFwcy5j IGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKaW5kZXggNWI5MWU2Yy4uNmVhMDA5MCAxMDA2NDQKLS0t IGEveGVuL2FyY2gvYXJtL3RyYXBzLmMKKysrIGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKQEAgLTIx OTUsMjMgKzIxOTUsNiBAQCBzdGF0aWMgdm9pZCBkb190cmFwX2RhdGFfYWJvcnRfZ3Vlc3Qoc3Ry dWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCiAgICAgaW5qZWN0X2RhYnRfZXhjZXB0aW9uKHJlZ3Ms IGluZm8uZ3ZhLCBoc3IubGVuKTsKIH0KIAotc3RhdGljIHZvaWQgZG9fdHJhcF9zbWMoc3RydWN0 IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGNvbnN0IHVuaW9uIGhzciBoc3IpCi17Ci0gICAgaW50IHJj ID0gMDsKLQotICAgIGlmICggIWNoZWNrX2NvbmRpdGlvbmFsX2luc3RyKHJlZ3MsIGhzcikgKQot ICAgIHsKLSAgICAgICAgYWR2YW5jZV9wYyhyZWdzLCBoc3IpOwotICAgICAgICByZXR1cm47Ci0g ICAgfQotCi0gICAgaWYgKCBjdXJyZW50LT5kb21haW4tPmFyY2gubW9uaXRvci5wcml2aWxlZ2Vk X2NhbGxfZW5hYmxlZCApCi0gICAgICAgIHJjID0gbW9uaXRvcl9zbWMoKTsKLQotICAgIGlmICgg cmMgIT0gMSApCi0gICAgICAgIGluamVjdF91bmRlZl9leGNlcHRpb24ocmVncywgaHNyKTsKLX0K LQogc3RhdGljIHZvaWQgZW50ZXJfaHlwZXJ2aXNvcl9oZWFkKHN0cnVjdCBjcHVfdXNlcl9yZWdz ICpyZWdzKQogewogICAgIGlmICggZ3Vlc3RfbW9kZShyZWdzKSApCmRpZmYgLS1naXQgYS94ZW4v YXJjaC9hcm0vdnNtYy5jIGIveGVuL2FyY2gvYXJtL3ZzbWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zOGRmODIxCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gvYXJt L3ZzbWMuYwpAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIHhlbi9hcmNoL2FybS92c21jLmMKKyAq CisgKiBHZW5lcmljIGhhbmRsZXIgZm9yIFNNQyBhbmQgSFZDIGNhbGxzIGFjY29yZGluZyB0bwor ICogQVJNIFNNQyBjYWxsaW5nIGNvbnZlbnRpb24KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9u IDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKworCisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2lu Y2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHB1YmxpYy9hcmNoLWFybS9zbWNjYy5oPgor I2luY2x1ZGUgPGFzbS9tb25pdG9yLmg+CisjaW5jbHVkZSA8YXNtL3JlZ3MuaD4KKyNpbmNsdWRl IDxhc20vc21jY2MuaD4KKyNpbmNsdWRlIDxhc20vdHJhcHMuaD4KKworLyogTnVtYmVyIG9mIGZ1 bmN0aW9ucyBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IEh5cGVydmlzb3IgU2VydmljZS4gKi8KKyNk ZWZpbmUgWEVOX1NNQ0NDX0ZVTkNUSU9OX0NPVU5UIDMKKworc3RhdGljIGJvb2wgZmlsbF91aWQo c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIHhlbl91dWlkX3QgdXVpZCkKK3sKKyAgICBpbnQg bjsKKworICAgIC8qCisgICAgICogVUlEIGlzIHJldHVybmVkIGluIHJlZ2lzdGVycyByMC4ucjMs IGZvdXIgYnl0ZXMgcGVyIHJlZ2lzdGVyLAorICAgICAqIGZpcnN0IGJ5dGUgaXMgc3RvcmVkIGlu IGxvdy1vcmRlciBiaXRzIG9mIGEgcmVnaXN0ZXIuCisgICAgICogKEFSTSBERU4gMDAyOEIgcGFn ZSAxNCkKKyAgICAgKi8KKyAgICBmb3IgKG4gPSAwOyBuIDwgNDsgbisrKQorICAgIHsKKyAgICAg ICAgY29uc3QgdWludDhfdCAqYnl0ZXMgPSB1dWlkLmEgKyBuICogNDsKKyAgICAgICAgdWludDMy X3QgcjsKKworICAgICAgICByID0gYnl0ZXNbMF07CisgICAgICAgIHIgfD0gYnl0ZXNbMV0gPDwg ODsKKyAgICAgICAgciB8PSBieXRlc1syXSA8PCAxNjsKKyAgICAgICAgciB8PSBieXRlc1szXSA8 PCAyNDsKKworICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgbiwgcik7CisgICAgfQorCisgICAg cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGZpbGxfcmV2aXNpb24oc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MsIHVpbnQzMl90IG1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IG1pbm9yKQoreworICAgIC8qCisgICAgICogUmV2aXNpb24gaXMgcmV0dXJuZWQg aW4gcmVnaXN0ZXJzIHIwIGFuZCByMS4KKyAgICAgKiByMCBzdG9yZXMgbWFqb3IgcGFydCBvZiB0 aGUgdmVyc2lvbgorICAgICAqIHIxIHN0b3JlcyBtaW5vciBwYXJ0IG9mIHRoZSB2ZXJzaW9uCisg ICAgICogKEFSTSBERU4gMDAyOEIgcGFnZSAxNSkKKyAgICAgKi8KKyAgICBzZXRfdXNlcl9yZWco cmVncywgMCwgbWFqb3IpOworICAgIHNldF91c2VyX3JlZyhyZWdzLCAxLCBtaW5vcik7CisKKyAg ICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZmlsbF9mdW5jdGlvbl9jYWxsX2NvdW50 KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCB1aW50MzJfdCBjbnQpCit7CisgICAgLyoKKyAg ICAgKiBGdW5jdGlvbiBjYWxsIGNvdW50IGlzIHJldHVuZWQgYXMgYW55IG90aGVyIHJldHVybiB2 YWx1ZSBpbiByZWdpc3RlciByMAorICAgICAqIChBUk0gREVOIDAwMjhCIHBhZ2UgMTcpCisgICAg ICovCisgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsIGNudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsK K30KKworLyogU01DQ0MgaW50ZXJmYWNlIGZvciBoeXBlcnZpc29yLiBUZWxsIGFib3V0IGl0c2Vs Zi4gKi8KK3N0YXRpYyBib29sIGhhbmRsZV9oeXBlcnZpc29yKHN0cnVjdCBjcHVfdXNlcl9yZWdz ICpyZWdzKQoreworICAgIHN3aXRjaCAoIHNtY2NjX2dldF9mbihnZXRfdXNlcl9yZWcocmVncywg MCkpICkKKyAgICB7CisgICAgY2FzZSBBUk1fU01DQ0NfRlVOQ19DQUxMX0NPVU5UOgorICAgICAg ICByZXR1cm4gZmlsbF9mdW5jdGlvbl9jYWxsX2NvdW50KHJlZ3MsIFhFTl9TTUNDQ19GVU5DVElP Tl9DT1VOVCk7CisgICAgY2FzZSBBUk1fU01DQ0NfRlVOQ19DQUxMX1VJRDoKKyAgICAgICAgcmV0 dXJuIGZpbGxfdWlkKHJlZ3MsIFhFTl9TTUNDQ19VSUQpOworICAgIGNhc2UgQVJNX1NNQ0NDX0ZV TkNfQ0FMTF9SRVZJU0lPTjoKKyAgICAgICAgcmV0dXJuIGZpbGxfcmV2aXNpb24ocmVncywgWEVO X1NNQ0NDX01BSk9SX1JFVklTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5f U01DQ0NfTUlOT1JfUkVWSVNJT04pOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICB9Cit9CisKKy8qCisgKiB2c21jY2NfaGFuZGxlX2NhbGwoKSAtIGhhbmRsZSBTTUMv SFZDIGNhbGwgYWNjb3JkaW5nIHRvIEFSTSBTTUNDQy4KKyAqIHJldHVybnMgdHJ1ZSBpZiB0aGF0 IHdhcyB2YWxpZCBTTUNDQyBjYWxsIChldmVuIGlmIGZ1bmN0aW9uIG51bWJlcgorICogd2FzIHVu a25vd24pLgorICovCitzdGF0aWMgYm9vbCB2c21jY2NfaGFuZGxlX2NhbGwoc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MpCit7CisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgY29uc3Qg dW5pb24gaHNyIGhzciA9IHsgLmJpdHMgPSByZWdzLT5oc3IgfTsKKyAgICByZWdpc3Rlcl90IGZ1 bmNpZCA9IGdldF91c2VyX3JlZyhyZWdzLCAwKTsKKworICAgIC8qCisgICAgICogQ2hlY2sgaW1t ZWRpYXRlIHZhbHVlIGZvciBIVkMzMiwgSFZDNjQgYW5kIFNNQzY0LgorICAgICAqIEl0IGlzIG5v dCBzbyBlYXN5IHRvIGNoZWNrIGltbWVkaWF0ZSB2YWx1ZSBmb3IgU01DMzIsCisgICAgICogYmVj YXVzZSBpdCBpcyBub3Qgc3RvcmVkIGluIEhTUi5JU1MgZmllbGQuIFRvIGdldCBpbW1lZGlhdGUK KyAgICAgKiB2YWx1ZSB3ZSBuZWVkIHRvIGRpc2Fzc2VtYmxlIGluc3RydWN0aW9uIGF0IGN1cnJl bnQgcGMsIHdoaWNoCisgICAgICogaXMgZXhwZW5zaXZlLiBTbyB3ZSB3aWxsIGFzc3VtZSB0aGF0 IGl0IGlzIDB4MC4KKyAgICAgKi8KKyAgICBzd2l0Y2ggKCBoc3IuZWMgKQorICAgIHsKKyAgICBj YXNlIEhTUl9FQ19IVkMzMjoKKyAgICBjYXNlIEhTUl9FQ19IVkM2NDoKKyAgICBjYXNlIEhTUl9F Q19TTUM2NDoKKyAgICAgICAgaWYgKCAoaHNyLmlzcyAmIEhTUl9YWENfSU1NX01BU0spICE9IDAp CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFNS X0VDX1NNQzMyOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgfQorCisgICAgLyogNjQgYml0IGNhbGxzIGFyZSBhbGxvd2VkIG9ubHkgZnJv bSA2NCBiaXQgZG9tYWlucy4gKi8KKyAgICBpZiAoIHNtY2NjX2lzX2NvbnZfNjQoZnVuY2lkKSAm JiBpc18zMmJpdF9kb21haW4oY3VycmVudC0+ZG9tYWluKSApCisgICAgeworICAgICAgICBzZXRf dXNlcl9yZWcocmVncywgMCwgQVJNX1NNQ0NDX0VSUl9VTktOT1dOX0ZVTkNUSU9OKTsKKyAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3dpdGNoICggc21jY2NfZ2V0X293bmVyKGZ1 bmNpZCkgKQorICAgIHsKKyAgICBjYXNlIEFSTV9TTUNDQ19PV05FUl9IWVBFUlZJU09SOgorICAg ICAgICBoYW5kbGVkID0gaGFuZGxlX2h5cGVydmlzb3IocmVncyk7CisgICAgICAgIGJyZWFrOwor ICAgIH0KKworICAgIGlmICggIWhhbmRsZWQgKQorICAgIHsKKyAgICAgICAgZ3ByaW50ayhYRU5M T0dfSU5GTywgIlVuaGFuZGxlZCBTTUMvSFZDOiAlMDgiUFJJcmVnaXN0ZXIiXG4iLCBmdW5jaWQp OworCisgICAgICAgIC8qIEluZm9ybSBjYWxsZXIgdGhhdCBmdW5jdGlvbiBpcyBub3Qgc3VwcG9y dGVkLiAqLworICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMCwgQVJNX1NNQ0NDX0VSUl9VTktO T1dOX0ZVTkNUSU9OKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBkb190 cmFwX3NtYyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgY29uc3QgdW5pb24gaHNyIGhzcikK K3sKKyAgICBpbnQgcmMgPSAwOworCisgICAgaWYgKCAhY2hlY2tfY29uZGl0aW9uYWxfaW5zdHIo cmVncywgaHNyKSApCisgICAgeworICAgICAgICBhZHZhbmNlX3BjKHJlZ3MsIGhzcik7CisgICAg ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBJZiBtb25pdG9yIGlzIGVuYWJsZWQsIGxldCBp dCBoYW5kbGUgdGhlIGNhbGwuICovCisgICAgaWYgKCBjdXJyZW50LT5kb21haW4tPmFyY2gubW9u aXRvci5wcml2aWxlZ2VkX2NhbGxfZW5hYmxlZCApCisgICAgICAgIHJjID0gbW9uaXRvcl9zbWMo KTsKKworICAgIGlmICggcmMgPT0gMSApCisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAg ICogVXNlIHN0YW5kYXJkIHJvdXRpbmVzIHRvIGhhbmRsZSB0aGUgY2FsbC4KKyAgICAgKiB2c21j Y2NfaGFuZGxlX2NhbGwoKSB3aWxsIHJldHVybiBmYWxzZSBpZiB0aGlzIGNhbGwgaXMgbm90Cisg ICAgICogU01DQ0MgY29tcGF0aWJsZSAoZS5nLiBpbW1lZGlhdGUgdmFsdWUgIT0gMCkuIEFzIGl0 IGlzIG5vdAorICAgICAqIGNvbXBhdGlibGUsIHdlIGNhbid0IGJlIHN1cmUgdGhhdCBndWVzdCB3 aWxsIHVuZGVyc3RhbmQKKyAgICAgKiBBUk1fU01DQ0NfRVJSX1VOS05PV05fRlVOQ1RJT04uCisg ICAgICovCisgICAgaWYgKCB2c21jY2NfaGFuZGxlX2NhbGwocmVncykgKQorICAgICAgICBhZHZh bmNlX3BjKHJlZ3MsIGhzcik7CisgICAgZWxzZQorICAgICAgICBpbmplY3RfdW5kZWZfZXhjZXB0 aW9uKHJlZ3MsIGhzcik7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBD CisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50 LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS1hcm0vdHJhcHMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdHJhcHMuaAppbmRleCA3NTA4YWY4 Li4zMjVjMTVmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL3RyYXBzLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLWFybS90cmFwcy5oCkBAIC0zNSw2ICszNSw5IEBAIHZvaWQgZG9fY3Ax NF82NChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgY29uc3QgdW5pb24gaHNyIGhzcik7CiB2 b2lkIGRvX2NwMTRfZGJnKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBjb25zdCB1bmlvbiBo c3IgaHNyKTsKIHZvaWQgZG9fY3Aoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGNvbnN0IHVu aW9uIGhzciBoc3IpOwogCisvKiBTTUNDQyBoYW5kbGluZyAqLwordm9pZCBkb190cmFwX3NtYyhz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgY29uc3QgdW5pb24gaHNyIGhzcik7CisKICNlbmRp ZiAvKiBfX0FTTV9BUk1fVFJBUFNfXyAqLwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS9zbWNjYy5oIGIveGVuL2luY2x1ZGUv cHVibGljL2FyY2gtYXJtL3NtY2NjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMmJlZTViMwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFy bS9zbWNjYy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBzbWNjYy5oCisgKgorICogU01DL0hW QyBpbnRlcmZhY2UgaW4gYWNjb3JkYW5jZSB3aXRoIFNNQyBDYWxsaW5nIENvbnZlbnRpb24uCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor ICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAyMDE3IChDKSBFUEFNIFN5c3RlbXMKKyAqLworCisj aWZuZGVmIF9fWEVOX1BVQkxJQ19BUkNIX0FSTV9TTUNDQ19IX18KKyNkZWZpbmUgX19YRU5fUFVC TElDX0FSQ0hfQVJNX1NNQ0NDX0hfXworCisjaW5jbHVkZSAicHVibGljL3hlbi5oIgorCisvKgor ICogSHlwZXJ2aXNvciBTZXJ2aWNlIHZlcnNpb24uCisgKgorICogV2UgY2FuJ3QgdXNlIFhFTiB2 ZXJzaW9uIGhlcmUsIGJlY2F1c2Ugb2YgU01DQ0MgcmVxdWlyZW1lbnRzOgorICogTWFqb3IgcmV2 aXNpb24gc2hvdWxkIGNoYW5nZSBldmVyeSB0aW1lIFNNQy9IVkMgZnVuY3Rpb24gaXMgcmVtb3Zl ZC4KKyAqIE1pbm9yIHJldmlzaW9uIHNob3VsZCBjaGFuZ2UgZXZlcnkgdGltZSBTTUMvSFZDIGZ1 bmN0aW9uIGlzIGFkZGVkLgorICogU28sIGl0IGlzIFNNQ0NDIHByb3RvY29sIHJldmlzaW9uIGNv ZGUsIG5vdCBYRU4gdmVyc2lvbi4KKyAqCisgKiBUaG9zZSB2YWx1ZXMgYXJlIHN1YmplY3RlZCB0 byBjaGFuZ2UsIHdoZW4gaW50ZXJmYWNlIHdpbGwgYmUgZXh0ZW5kZWQuCisgKi8KKyNkZWZpbmUg WEVOX1NNQ0NDX01BSk9SX1JFVklTSU9OIDAKKyNkZWZpbmUgWEVOX1NNQ0NDX01JTk9SX1JFVklT SU9OIDEKKworLyogSHlwZXJ2aXNvciBTZXJ2aWNlIFVJRC4gUmFuZG9tbHkgZ2VuZXJhdGVkIHdp dGggdXVpZGdlbi4gKi8KKyNkZWZpbmUgWEVOX1NNQ0NDX1VJRCBYRU5fREVGSU5FX1VVSUQoMHhh NzE4MTJkYywgMHhjNjk4LCAweDQzNjksIDB4OWFjZiwgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDc5LCAweGQxLCAweDhkLCAweGRlLCAweGU2LCAweDY3KQorCisj ZW5kaWYgLyogX19YRU5fUFVCTElDX0FSQ0hfQVJNX1NNQ0NDX0hfXyAqLworCisvKgorICogTG9j YWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1i YXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOmIKKyAqLwot LSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK