From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v4 07/11] arm: traps: handle PSCI calls inside `vsmc.c` Date: Thu, 24 Aug 2017 17:58:01 +0100 Message-ID: References: <1503347275-13039-1-git-send-email-volodymyr_babchuk@epam.com> <1503347275-13039-8-git-send-email-volodymyr_babchuk@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1503347275-13039-8-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: Volodymyr Babchuk , xen-devel@lists.xen.org Cc: "Edgar E . Iglesias" , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org SGkgVm9sb2R5bXlyLAoKT24gMjEvMDgvMTcgMjE6MjcsIFZvbG9keW15ciBCYWJjaHVrIHdyb3Rl Ogo+IFBTQ0kgaXMgcGFydCBvZiBIVkMvU01DIGludGVyZmFjZSwgc28gaXQgc2hvdWxkIGJlIGhh bmRsZWQgaW4KPiBhcHByb3ByaWF0ZSBwbGFjZTogYHZzbWMuY2AuIFRoaXMgcGF0Y2gganVzdCBt b3ZlcyBQU0NJCj4gaGFuZGxlciBjYWxscyBmcm9tIGB0cmFwcy5jYCB0byBgdnNtYy5jYC4KPgo+ IE9sZGVyIFBTQ0kgMC4xIHVzZXMgU01DIGZ1bmN0aW9uIGlkZW50aWZpZXJzIGluIHJhbmdlIHRo YXQgaXMKPiByZXNlcmV2ZWQgZm9yIGV4aXNpbmdzIEFQSXMgKEFSTSBERU4gMDAyOEIsIHBhZ2Ug MTYpLCB3aGlsZSBuZXdlcgoKcy9yZXNlcmV2ZWQvcmVzZXJ2ZWQvCnMvZXhpc2luZ3MvZXhpc3Rp bmcvCgo+IFBTQ0kgMC4yIGlzIGRlZmluZWQgYXMgInN0YW5kYXJkIHNlY3VyZSBzZXJ2aWNlIiB3 aXRoIG93biByYW5nZXMKCjAuMiBhbmQgbGF0ZXIKCiJ3aXRoIGl0cyBvd24gcmFuZ2VzIiBJIHRo aW5rLgoKPiAoQVJNIERFTiAwMDI4QiwgcGFnZSAxOCkuCj4KPiBTaWduZWQtb2ZmLWJ5OiBWb2xv ZHlteXIgQmFiY2h1ayA8dm9sb2R5bXlyX2JhYmNodWtAZXBhbS5jb20+Cj4gUmV2aWV3ZWQtYnk6 IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNv bT4KPiBSZXZpZXdlZC1ieTogT2xla3NhbmRyIFR5c2hjaGVua28gPG9sZWtzYW5kcl90eXNoY2hl bmtvQGVwYW0uY29tPgo+IC0tLQo+Cj4gICogRml4ZWQgbWlzdGFrZXMgYWJvdXQgbm9uLWV4aXN0 YW50IFBTQ0kgMi4wCj4gICogQWRkZWQgc3BlY2lhbCBTTUMgZnVuY3Rpb24gbnVtYmVyIGhhbmRs aW5nIGZvciBQU0NJIDAuMQo+ICAqIEZpeGVkIGNvZGluZyBzdHlsZSBpbiAgaGFuZGxlX3BzY2lf MF8xKCkKPiAgKiBDaGFuZ2VkIGhvdyByZXR1cm4gZG9fdHJhcF9odmNfc21jY2MoKSBpcyBjYWxs ZWQgZnJvbSB0cmFwcy5jCj4gICogUmVuYW1lZCBTU0MgdG8gU1NTQyAoU3RhbmRhcmQgU2VjdXJl IFNlcnZpY2UgQ2FsbHMpCj4KPiAtLS0KPiAgeGVuL2FyY2gvYXJtL3RyYXBzLmMgICAgICAgICAg ICAgIHwgMTE3ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgeGVuL2FyY2gvYXJtL3ZzbWMu YyAgICAgICAgICAgICAgIHwgMTc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vc21jY2MuaCAgICAgICB8ICAgNCArCj4gIHhlbi9p bmNsdWRlL2FzbS1hcm0vdnNtYy5oICAgICAgICB8ICAgMSArCj4gIHhlbi9pbmNsdWRlL3B1Ymxp Yy9hcmNoLWFybS9zbWMuaCB8ICAgOCArKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDE4MyBpbnNlcnRp b25zKCspLCAxMjIgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3Ry YXBzLmMgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwo+IGluZGV4IDQxNDFhODkuLjUxN2UwMTMgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3RyYXBzLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vdHJh cHMuYwo+IEBAIC0xNDUxLDExOSArMTQ1MSw2IEBAIHN0YXRpYyB2b2lkIGRvX2RlYnVnX3RyYXAo c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGludCBjb2RlKQo+ICB9Cj4gICNl bmRpZgo+Cj4gLSNkZWZpbmUgUFNDSV9TRVRfUkVTVUxUKHJlZywgdmFsKSBzZXRfdXNlcl9yZWco cmVnLCAwLCB2YWwpCj4gLSNkZWZpbmUgUFNDSV9BUkcocmVnLCBuKSBnZXRfdXNlcl9yZWcocmVn LCBuKQo+IC0KPiAtI2lmZGVmIENPTkZJR19BUk1fNjQKPiAtI2RlZmluZSBQU0NJX0FSRzMyKHJl ZywgbikgKHVpbnQzMl90KShnZXRfdXNlcl9yZWcocmVnLCBuKSAmIDB4RkZGRkZGRkYpCj4gLSNl bHNlCj4gLSNkZWZpbmUgUFNDSV9BUkczMihyZWcsIG4pIFBTQ0lfQVJHKHJlZywgbikKPiAtI2Vu ZGlmCj4gLQo+IC0vKiBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nIGFybSBtb2RlIDMyLzY0 IGJpdCAqLwo+IC1zdGF0aWMgaW5saW5lIGludCBwc2NpX21vZGVfY2hlY2soc3RydWN0IGRvbWFp biAqZCwgcmVnaXN0ZXJfdCBmaWQpCj4gLXsKPiAtICAgICAgICByZXR1cm4gISggaXNfNjRiaXRf ZG9tYWluKGQpXiggKGZpZCAmIFBTQ0lfMF8yXzY0QklUKSA+PiAzMCApICk7Cj4gLX0KPiAtCj4g LXN0YXRpYyB2b2lkIGRvX3RyYXBfcHNjaShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiAt ewo+IC0gICAgcmVnaXN0ZXJfdCBmaWQgPSBQU0NJX0FSRyhyZWdzLDApOwo+IC0KPiAtICAgIC8q IHByZWxvYWRpbmcgaW4gY2FzZSBwc2NpX21vZGVfY2hlY2sgZmFpbHMgKi8KPiAtICAgIFBTQ0lf U0VUX1JFU1VMVChyZWdzLCBQU0NJX0lOVkFMSURfUEFSQU1FVEVSUyk7Cj4gLSAgICBzd2l0Y2go IGZpZCApCj4gLSAgICB7Cj4gLSAgICBjYXNlIFBTQ0lfY3B1X29mZjoKPiAtICAgICAgICB7Cj4g LSAgICAgICAgICAgIHVpbnQzMl90IHBzdGF0ZSA9IFBTQ0lfQVJHMzIocmVncywxKTsKPiAtICAg ICAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9jcHVfb2ZmKTsKPiAtICAgICAgICAgICAgUFNDSV9T RVRfUkVTVUxUKHJlZ3MsIGRvX3BzY2lfY3B1X29mZihwc3RhdGUpKTsKPiAtICAgICAgICB9Cj4g LSAgICAgICAgYnJlYWs7Cj4gLSAgICBjYXNlIFBTQ0lfY3B1X29uOgo+IC0gICAgICAgIHsKPiAt ICAgICAgICAgICAgdWludDMyX3QgdmNwdWlkID0gUFNDSV9BUkczMihyZWdzLDEpOwo+IC0gICAg ICAgICAgICByZWdpc3Rlcl90IGVwb2ludCA9IFBTQ0lfQVJHKHJlZ3MsMik7Cj4gLSAgICAgICAg ICAgIHBlcmZjX2luY3IodnBzY2lfY3B1X29uKTsKPiAtICAgICAgICAgICAgUFNDSV9TRVRfUkVT VUxUKHJlZ3MsIGRvX3BzY2lfY3B1X29uKHZjcHVpZCwgZXBvaW50KSk7Cj4gLSAgICAgICAgfQo+ IC0gICAgICAgIGJyZWFrOwo+IC0gICAgY2FzZSBQU0NJXzBfMl9GTl9QU0NJX1ZFUlNJT046Cj4g LSAgICAgICAgcGVyZmNfaW5jcih2cHNjaV92ZXJzaW9uKTsKPiAtICAgICAgICBQU0NJX1NFVF9S RVNVTFQocmVncywgZG9fcHNjaV8wXzJfdmVyc2lvbigpKTsKPiAtICAgICAgICBicmVhazsKPiAt ICAgIGNhc2UgUFNDSV8wXzJfRk5fQ1BVX09GRjoKPiAtICAgICAgICBwZXJmY19pbmNyKHZwc2Np X2NwdV9vZmYpOwo+IC0gICAgICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBkb19wc2NpXzBfMl9j cHVfb2ZmKCkpOwo+IC0gICAgICAgIGJyZWFrOwo+IC0gICAgY2FzZSBQU0NJXzBfMl9GTl9NSUdS QVRFX0lORk9fVFlQRToKPiAtICAgICAgICBwZXJmY19pbmNyKHZwc2NpX21pZ3JhdGVfaW5mb190 eXBlKTsKPiAtICAgICAgICBQU0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV8wXzJfbWlncmF0 ZV9pbmZvX3R5cGUoKSk7Cj4gLSAgICAgICAgYnJlYWs7Cj4gLSAgICBjYXNlIFBTQ0lfMF8yX0ZO X01JR1JBVEVfSU5GT19VUF9DUFU6Cj4gLSAgICBjYXNlIFBTQ0lfMF8yX0ZONjRfTUlHUkFURV9J TkZPX1VQX0NQVToKPiAtICAgICAgICBwZXJmY19pbmNyKHZwc2NpX21pZ3JhdGVfaW5mb191cF9j cHUpOwo+IC0gICAgICAgIGlmICggcHNjaV9tb2RlX2NoZWNrKGN1cnJlbnQtPmRvbWFpbiwgZmlk KSApCj4gLSAgICAgICAgICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBkb19wc2NpXzBfMl9taWdy YXRlX2luZm9fdXBfY3B1KCkpOwo+IC0gICAgICAgIGJyZWFrOwo+IC0gICAgY2FzZSBQU0NJXzBf Ml9GTl9TWVNURU1fT0ZGOgo+IC0gICAgICAgIHBlcmZjX2luY3IodnBzY2lfc3lzdGVtX29mZik7 Cj4gLSAgICAgICAgZG9fcHNjaV8wXzJfc3lzdGVtX29mZigpOwo+IC0gICAgICAgIFBTQ0lfU0VU X1JFU1VMVChyZWdzLCBQU0NJX0lOVEVSTkFMX0ZBSUxVUkUpOwo+IC0gICAgICAgIGJyZWFrOwo+ IC0gICAgY2FzZSBQU0NJXzBfMl9GTl9TWVNURU1fUkVTRVQ6Cj4gLSAgICAgICAgcGVyZmNfaW5j cih2cHNjaV9zeXN0ZW1fcmVzZXQpOwo+IC0gICAgICAgIGRvX3BzY2lfMF8yX3N5c3RlbV9yZXNl dCgpOwo+IC0gICAgICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBQU0NJX0lOVEVSTkFMX0ZBSUxV UkUpOwo+IC0gICAgICAgIGJyZWFrOwo+IC0gICAgY2FzZSBQU0NJXzBfMl9GTl9DUFVfT046Cj4g LSAgICBjYXNlIFBTQ0lfMF8yX0ZONjRfQ1BVX09OOgo+IC0gICAgICAgIHBlcmZjX2luY3IodnBz Y2lfY3B1X29uKTsKPiAtICAgICAgICBpZiAoIHBzY2lfbW9kZV9jaGVjayhjdXJyZW50LT5kb21h aW4sIGZpZCkgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgICAgcmVnaXN0ZXJfdCB2Y3B1aWQg PSBQU0NJX0FSRyhyZWdzLDEpOwo+IC0gICAgICAgICAgICByZWdpc3Rlcl90IGVwb2ludCA9IFBT Q0lfQVJHKHJlZ3MsMik7Cj4gLSAgICAgICAgICAgIHJlZ2lzdGVyX3QgY2lkID0gUFNDSV9BUkco cmVncywzKTsKPiAtICAgICAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIGRvX3BzY2lfMF8y X2NwdV9vbih2Y3B1aWQsIGVwb2ludCwgY2lkKSk7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIGJy ZWFrOwo+IC0gICAgY2FzZSBQU0NJXzBfMl9GTl9DUFVfU1VTUEVORDoKPiAtICAgIGNhc2UgUFND SV8wXzJfRk42NF9DUFVfU1VTUEVORDoKPiAtICAgICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9z dXNwZW5kKTsKPiAtICAgICAgICBpZiAoIHBzY2lfbW9kZV9jaGVjayhjdXJyZW50LT5kb21haW4s IGZpZCkgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgICAgdWludDMyX3QgcHN0YXRlID0gUFND SV9BUkczMihyZWdzLDEpOwo+IC0gICAgICAgICAgICByZWdpc3Rlcl90IGVwb2ludCA9IFBTQ0lf QVJHKHJlZ3MsMik7Cj4gLSAgICAgICAgICAgIHJlZ2lzdGVyX3QgY2lkID0gUFNDSV9BUkcocmVn cywzKTsKPiAtICAgICAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIGRvX3BzY2lfMF8yX2Nw dV9zdXNwZW5kKHBzdGF0ZSwgZXBvaW50LCBjaWQpKTsKPiAtICAgICAgICB9Cj4gLSAgICAgICAg YnJlYWs7Cj4gLSAgICBjYXNlIFBTQ0lfMF8yX0ZOX0FGRklOSVRZX0lORk86Cj4gLSAgICBjYXNl IFBTQ0lfMF8yX0ZONjRfQUZGSU5JVFlfSU5GTzoKPiAtICAgICAgICBwZXJmY19pbmNyKHZwc2Np X2NwdV9hZmZpbml0eV9pbmZvKTsKPiAtICAgICAgICBpZiAoIHBzY2lfbW9kZV9jaGVjayhjdXJy ZW50LT5kb21haW4sIGZpZCkgKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgICAgcmVnaXN0ZXJf dCB0YWZmID0gUFNDSV9BUkcocmVncywxKTsKPiAtICAgICAgICAgICAgdWludDMyX3QgbGFmZiA9 IFBTQ0lfQVJHMzIocmVncywyKTsKPiAtICAgICAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3Ms IGRvX3BzY2lfMF8yX2FmZmluaXR5X2luZm8odGFmZiwgbGFmZikpOwo+IC0gICAgICAgIH0KPiAt ICAgICAgICBicmVhazsKPiAtICAgIGNhc2UgUFNDSV8wXzJfRk5fTUlHUkFURToKPiAtICAgIGNh c2UgUFNDSV8wXzJfRk42NF9NSUdSQVRFOgo+IC0gICAgICAgIHBlcmZjX2luY3IodnBzY2lfY3B1 X21pZ3JhdGUpOwo+IC0gICAgICAgIGlmICggcHNjaV9tb2RlX2NoZWNrKGN1cnJlbnQtPmRvbWFp biwgZmlkKSApCj4gLSAgICAgICAgewo+IC0gICAgICAgICAgICB1aW50MzJfdCB0Y3B1ID0gUFND SV9BUkczMihyZWdzLDEpOwo+IC0gICAgICAgICAgICBQU0NJX1NFVF9SRVNVTFQocmVncywgZG9f cHNjaV8wXzJfbWlncmF0ZSh0Y3B1KSk7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIGJyZWFrOwo+ IC0gICAgZGVmYXVsdDoKPiAtICAgICAgICBkb21haW5fY3Jhc2hfc3luY2hyb25vdXMoKTsKPiAt ICAgICAgICByZXR1cm47Cj4gLSAgICB9Cj4gLX0KPiAtCj4gICNpZmRlZiBDT05GSUdfQVJNXzY0 Cj4gICNkZWZpbmUgSFlQRVJDQUxMX1JFU1VMVF9SRUcocikgKHIpLT54MAo+ICAjZGVmaW5lIEhZ UEVSQ0FMTF9BUkcxKHIpIChyKS0+eDAKPiBAQCAtMjI1Miw3ICsyMTM5LDcgQEAgYXNtbGlua2Fn ZSB2b2lkIGRvX3RyYXBfZ3Vlc3Rfc3luYyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiAg ICAgICAgICAgICAgcmV0dXJuIGRvX2RlYnVnX3RyYXAocmVncywgaHNyLmlzcyAmIDB4MDBmZik7 Cj4gICNlbmRpZgo+ICAgICAgICAgIGlmICggaHNyLmlzcyA9PSAwICkKPiAtICAgICAgICAgICAg cmV0dXJuIGRvX3RyYXBfcHNjaShyZWdzKTsKPiArICAgICAgICAgICAgcmV0dXJuIGRvX3RyYXBf aHZjX3NtY2NjKHJlZ3MpOwo+ICAgICAgICAgIGRvX3RyYXBfaHlwZXJjYWxsKHJlZ3MsIChyZWdp c3Rlcl90ICopJnJlZ3MtPnIxMiwgaHNyLmlzcyk7Cj4gICAgICAgICAgYnJlYWs7Cj4gICNpZmRl ZiBDT05GSUdfQVJNXzY0Cj4gQEAgLTIyNjQsNyArMjE1MSw3IEBAIGFzbWxpbmthZ2Ugdm9pZCBk b190cmFwX2d1ZXN0X3N5bmMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCj4gICAgICAgICAg ICAgIHJldHVybiBkb19kZWJ1Z190cmFwKHJlZ3MsIGhzci5pc3MgJiAweDAwZmYpOwo+ICAjZW5k aWYKPiAgICAgICAgICBpZiAoIGhzci5pc3MgPT0gMCApCj4gLSAgICAgICAgICAgIHJldHVybiBk b190cmFwX3BzY2kocmVncyk7Cj4gKyAgICAgICAgICAgIHJldHVybiBkb190cmFwX2h2Y19zbWNj YyhyZWdzKTsKPiAgICAgICAgICBkb190cmFwX2h5cGVyY2FsbChyZWdzLCAmcmVncy0+eDE2LCBo c3IuaXNzKTsKPiAgICAgICAgICBicmVhazsKPiAgICAgIGNhc2UgSFNSX0VDX1NNQzY0Ogo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnNtYy5jIGIveGVuL2FyY2gvYXJtL3ZzbWMuYwo+IGlu ZGV4IDBhODEyOTQuLjk1NmQ0ZWYgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3ZzbWMuYwo+ ICsrKyBiL3hlbi9hcmNoL2FybS92c21jLmMKPiBAQCAtMTksNiArMTksNyBAQAo+ICAjaW5jbHVk ZSA8eGVuL3R5cGVzLmg+Cj4gICNpbmNsdWRlIDxwdWJsaWMvYXJjaC1hcm0vc21jLmg+Cj4gICNp bmNsdWRlIDxhc20vbW9uaXRvci5oPgo+ICsjaW5jbHVkZSA8YXNtL3BzY2kuaD4KPiAgI2luY2x1 ZGUgPGFzbS9yZWdzLmg+Cj4gICNpbmNsdWRlIDxhc20vc21jY2MuaD4KPiAgI2luY2x1ZGUgPGFz bS90cmFwcy5oPgo+IEBAIC0yNyw2ICsyOCw5IEBACj4gIC8qIE51bWJlciBvZiBmdW5jdGlvbnMg Y3VycmVudGx5IHN1cHBvcnRlZCBieSBIeXBlcnZpc29yIFNlcnZpY2UuICovCj4gICNkZWZpbmUg WEVOX1NNQ0NDX0ZVTkNUSU9OX0NPVU5UIDMKPgo+ICsvKiBOdW1iZXIgb2YgZnVuY3Rpb25zIGN1 cnJlbnRseSBzdXBwb3J0ZWQgYnkgU3RhbmRhcmQgU2VydmljZSBTZXJ2aWNlIENhbGxzLiAqLwo+ ICsjZGVmaW5lIFNTU0NfU01DQ0NfRlVOQ1RJT05fQ09VTlQgMTMKPiArCj4gIHN0YXRpYyB2b2lk IGZpbGxfdXVpZChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgY29uc3QgeGVuX3V1aWRfdCB1 KQo+ICB7Cj4gICNkZWZpbmUgRklMTF9VVUlEKG4pIFwKPiBAQCAtNjIsNiArNjYsMTMzIEBAIHN0 YXRpYyBib29sIGhhbmRsZV9oeXBlcnZpc29yKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ ICAgICAgcmV0dXJuIGZhbHNlOwo+ICB9Cj4KPiArI2RlZmluZSBQU0NJX1NFVF9SRVNVTFQocmVn LCB2YWwpIHNldF91c2VyX3JlZyhyZWcsIDAsIHZhbCkKPiArI2RlZmluZSBQU0NJX0FSRyhyZWcs IG4pIGdldF91c2VyX3JlZyhyZWcsIG4pCj4gKwo+ICsjaWZkZWYgQ09ORklHX0FSTV82NAo+ICsj ZGVmaW5lIFBTQ0lfQVJHMzIocmVnLCBuKSAodWludDMyX3QpKGdldF91c2VyX3JlZyhyZWcsIG4p ICYgMHhGRkZGRkZGRikKPiArI2Vsc2UKPiArI2RlZmluZSBQU0NJX0FSRzMyKHJlZywgbikgUFND SV9BUkcocmVnLCBuKQo+ICsjZW5kaWYKPiArCj4gKy8qIFBTQ0kgMC4xIGludGVyZmFjZSAqLwo+ ICtzdGF0aWMgYm9vbCBoYW5kbGVfcHNjaV8wXzEoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mp Cj4gK3sKPiArICAgIHN3aXRjaCAoIGdldF91c2VyX3JlZyhyZWdzLDApICYgMHhGRkZGRkZGRiAp CgpJIGFtIG5vdCBzdXJlIHRvIHVuZGVyc3RhbmQgdGhlIG1hc2sgaGVyZS4KCj4gKyAgICB7Cj4g KyAgICBjYXNlIFBTQ0lfY3B1X29mZjoKPiArICAgIHsKPiArICAgICAgICB1aW50MzJfdCBwc3Rh dGUgPSBQU0NJX0FSRzMyKHJlZ3MsIDEpOwoKTWlzc2luZyBuZXdsaW5lIGhlcmUuIEkgYW0gb2sg d2l0aCB5b3UgZG8gdGhlIGNsZWFuLXVwIGluIHRoaXMgcGF0Y2ggCnJhdGhlciBzZXBhcmF0ZWx5 LgoKPiArICAgICAgICBwZXJmY19pbmNyKHZwc2NpX2NwdV9vZmYpOwo+ICsgICAgICAgIFBTQ0lf U0VUX1JFU1VMVChyZWdzLCBkb19wc2NpX2NwdV9vZmYocHN0YXRlKSk7Cj4gKyAgICAgICAgcmV0 dXJuIHRydWU7Cj4gKyAgICB9Cj4gKyAgICBjYXNlIFBTQ0lfY3B1X29uOgo+ICsgICAgewo+ICsg ICAgICAgIHVpbnQzMl90IHZjcHVpZCA9IFBTQ0lfQVJHMzIocmVncywgMSk7Cj4gKyAgICAgICAg cmVnaXN0ZXJfdCBlcG9pbnQgPSBQU0NJX0FSRyhyZWdzLCAyKTsKCkRpdHRvLgoKPiArICAgICAg ICBwZXJmY19pbmNyKHZwc2NpX2NwdV9vbik7Cj4gKyAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJl Z3MsIGRvX3BzY2lfY3B1X29uKHZjcHVpZCwgZXBvaW50KSk7Cj4gKyAgICAgICAgcmV0dXJuIHRy dWU7Cj4gKyAgICB9Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gZmFsc2U7Cj4gK30KPiArCj4gKy8q IGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgYXJtIG1vZGUgMzIvNjQgYml0ICovCj4gK3N0 YXRpYyBpbmxpbmUgaW50IHBzY2lfbW9kZV9jaGVjayhzdHJ1Y3QgZG9tYWluICpkLCByZWdpc3Rl cl90IGZpZCkKPiArewo+ICsgICAgcmV0dXJuICEoIGlzXzY0Yml0X2RvbWFpbihkKV4oIChmaWQg JiBQU0NJXzBfMl82NEJJVCkgPj4gMzAgKSApOwo+ICt9Cj4gKwo+ICsvKiBQU0NJIDAuMiBpbnRl cmZhY2UgYW5kIG90aGVyIFN0YW5kYXJkIFNlY3VyZSBDYWxscyAqLwo+ICtzdGF0aWMgYm9vbCBo YW5kbGVfc3NzYyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiArewo+ICsgICAgcmVnaXN0 ZXJfdCBmaWQgPSBQU0NJX0FSRyhyZWdzLCAwKTsKPiArCj4gKyAgICBzd2l0Y2ggKCBBUk1fU01D Q0NfRlVOQ19OVU0oZmlkKSApCj4gKyAgICB7Cj4gKyAgICBjYXNlIEFSTV9TTUNDQ19GVU5DX05V TShQU0NJXzBfMl9GTl9QU0NJX1ZFUlNJT04pOgo+ICsgICAgICAgIHBlcmZjX2luY3IodnBzY2lf dmVyc2lvbik7Cj4gKyAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIGRvX3BzY2lfMF8yX3Zl cnNpb24oKSk7Cj4gKyAgICAgICAgcmV0dXJuIHRydWU7CgpJdCBpcyBhIGJpdCBoYXJkIHRvIHJl YWQuIFNvbWUgbmV3bGluZSBiZXR3ZWVuIGVhY2ggImNhc2UiIHdvdWxkIGhlbHAgCmZvciBjbGFy aXR5IEkgdGhpbmsuCgo+ICsgICAgY2FzZSBBUk1fU01DQ0NfRlVOQ19OVU0oUFNDSV8wXzJfRk5f Q1BVX09GRik6Cj4gKyAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9jcHVfb2ZmKTsKPiArICAgICAg ICBQU0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV8wXzJfY3B1X29mZigpKTsKPiArICAgICAg ICByZXR1cm4gdHJ1ZTsKPiArICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNfTlVNKFBTQ0lfMF8yX0ZO X01JR1JBVEVfSU5GT19UWVBFKToKPiArICAgICAgICBwZXJmY19pbmNyKHZwc2NpX21pZ3JhdGVf aW5mb190eXBlKTsKPiArICAgICAgICBQU0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV8wXzJf bWlncmF0ZV9pbmZvX3R5cGUoKSk7Cj4gKyAgICAgICAgcmV0dXJuIHRydWU7Cj4gKyAgICBjYXNl IEFSTV9TTUNDQ19GVU5DX05VTShQU0NJXzBfMl9GTl9NSUdSQVRFX0lORk9fVVBfQ1BVKToKPiAr ICAgICAgICBwZXJmY19pbmNyKHZwc2NpX21pZ3JhdGVfaW5mb191cF9jcHUpOwo+ICsgICAgICAg IGlmICggcHNjaV9tb2RlX2NoZWNrKGN1cnJlbnQtPmRvbWFpbiwgZmlkKSApCj4gKyAgICAgICAg ICAgIFBTQ0lfU0VUX1JFU1VMVChyZWdzLCBkb19wc2NpXzBfMl9taWdyYXRlX2luZm9fdXBfY3B1 KCkpOwo+ICsgICAgICAgIHJldHVybiB0cnVlOwo+ICsgICAgY2FzZSBBUk1fU01DQ0NfRlVOQ19O VU0oUFNDSV8wXzJfRk5fU1lTVEVNX09GRik6Cj4gKyAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9z eXN0ZW1fb2ZmKTsKPiArICAgICAgICBkb19wc2NpXzBfMl9zeXN0ZW1fb2ZmKCk7Cj4gKyAgICAg ICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIFBTQ0lfSU5URVJOQUxfRkFJTFVSRSk7Cj4gKyAgICAg ICAgcmV0dXJuIHRydWU7Cj4gKyAgICBjYXNlIEFSTV9TTUNDQ19GVU5DX05VTShQU0NJXzBfMl9G Tl9TWVNURU1fUkVTRVQpOgo+ICsgICAgICAgIHBlcmZjX2luY3IodnBzY2lfc3lzdGVtX3Jlc2V0 KTsKPiArICAgICAgICBkb19wc2NpXzBfMl9zeXN0ZW1fcmVzZXQoKTsKPiArICAgICAgICBQU0NJ X1NFVF9SRVNVTFQocmVncywgUFNDSV9JTlRFUk5BTF9GQUlMVVJFKTsKPiArICAgICAgICByZXR1 cm4gdHJ1ZTsKPiArICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNfTlVNKFBTQ0lfMF8yX0ZOX0NQVV9P Tik6Cj4gKyAgICAgICAgcGVyZmNfaW5jcih2cHNjaV9jcHVfb24pOwo+ICsgICAgICAgIGlmICgg cHNjaV9tb2RlX2NoZWNrKGN1cnJlbnQtPmRvbWFpbiwgZmlkKSApCj4gKyAgICAgICAgewo+ICsg ICAgICAgICAgICByZWdpc3Rlcl90IHZjcHVpZCA9IFBTQ0lfQVJHKHJlZ3MsIDEpOwo+ICsgICAg ICAgICAgICByZWdpc3Rlcl90IGVwb2ludCA9IFBTQ0lfQVJHKHJlZ3MsIDIpOwo+ICsgICAgICAg ICAgICByZWdpc3Rlcl90IGNpZCA9IFBTQ0lfQVJHKHJlZ3MsIDMpOwo+ICsgICAgICAgICAgICBQ U0NJX1NFVF9SRVNVTFQocmVncywgZG9fcHNjaV8wXzJfY3B1X29uKHZjcHVpZCwgZXBvaW50LCBj aWQpKTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgcmV0dXJuIHRydWU7Cj4gKyAgICBjYXNlIEFS TV9TTUNDQ19GVU5DX05VTShQU0NJXzBfMl9GTl9DUFVfU1VTUEVORCk6Cj4gKyAgICAgICAgcGVy ZmNfaW5jcih2cHNjaV9jcHVfc3VzcGVuZCk7Cj4gKyAgICAgICAgaWYgKCBwc2NpX21vZGVfY2hl Y2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHVp bnQzMl90IHBzdGF0ZSA9IFBTQ0lfQVJHMzIocmVncywgMSk7Cj4gKyAgICAgICAgICAgIHJlZ2lz dGVyX3QgZXBvaW50ID0gUFNDSV9BUkcocmVncywgMik7Cj4gKyAgICAgICAgICAgIHJlZ2lzdGVy X3QgY2lkID0gUFNDSV9BUkcocmVncywgMyk7Cj4gKyAgICAgICAgICAgIFBTQ0lfU0VUX1JFU1VM VChyZWdzLCBkb19wc2NpXzBfMl9jcHVfc3VzcGVuZChwc3RhdGUsIGVwb2ludCwgY2lkKSk7Cj4g KyAgICAgICAgfQo+ICsgICAgICAgIHJldHVybiB0cnVlOwo+ICsgICAgY2FzZSBBUk1fU01DQ0Nf RlVOQ19OVU0oUFNDSV8wXzJfRk5fQUZGSU5JVFlfSU5GTyk6Cj4gKyAgICAgICAgcGVyZmNfaW5j cih2cHNjaV9jcHVfYWZmaW5pdHlfaW5mbyk7Cj4gKyAgICAgICAgaWYgKCBwc2NpX21vZGVfY2hl Y2soY3VycmVudC0+ZG9tYWluLCBmaWQpICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHJl Z2lzdGVyX3QgdGFmZiA9IFBTQ0lfQVJHKHJlZ3MsIDEpOwo+ICsgICAgICAgICAgICB1aW50MzJf dCBsYWZmID0gUFNDSV9BUkczMihyZWdzLCAyKTsKPiArICAgICAgICAgICAgUFNDSV9TRVRfUkVT VUxUKHJlZ3MsIGRvX3BzY2lfMF8yX2FmZmluaXR5X2luZm8odGFmZiwgbGFmZikpOwo+ICsgICAg ICAgIH0KPiArICAgICAgICByZXR1cm4gdHJ1ZTsKPiArICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNf TlVNKFBTQ0lfMF8yX0ZOX01JR1JBVEUpOgo+ICsgICAgICAgIHBlcmZjX2luY3IodnBzY2lfY3B1 X21pZ3JhdGUpOwo+ICsgICAgICAgIGlmICggcHNjaV9tb2RlX2NoZWNrKGN1cnJlbnQtPmRvbWFp biwgZmlkKSApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICB1aW50MzJfdCB0Y3B1ID0gUFND SV9BUkczMihyZWdzLCAxKTsKPiArICAgICAgICAgICAgUFNDSV9TRVRfUkVTVUxUKHJlZ3MsIGRv X3BzY2lfMF8yX21pZ3JhdGUodGNwdSkpOwo+ICsgICAgICAgIH0KPiArICAgICAgICByZXR1cm4g dHJ1ZTsKPiArICAgIGNhc2UgQVJNX1NNQ0NDX0ZVTkNfQ0FMTF9DT1VOVDoKPiArICAgICAgICBz ZXRfdXNlcl9yZWcocmVncywgMCwgU1NTQ19TTUNDQ19GVU5DVElPTl9DT1VOVCk7Cj4gKyAgICAg ICAgcmV0dXJuIHRydWU7Cj4gKyAgICBjYXNlIEFSTV9TTUNDQ19GVU5DX0NBTExfVUlEOgo+ICsg ICAgewo+ICsgICAgICAgIHN0YXRpYyBjb25zdCB4ZW5fdXVpZF90IHBzY2lfdXVpZCA9IFNTU0Nf U01DQ0NfVUlEOwoKTmV3bGluZSBoZXJlIHBsZWFzZS4gQnV0IGNhbid0IHdlIGp1c3QgZG86Cgpy ZXR1cm4gZmlsbF91dWlkKHJlZ3MsIFNTQ19TTUNDQ19VSUQpOwoKVGhpcyB3b3VsZCBtYWtlIHRo ZSBjb2RlIHNpbXBsZXIuCgo+ICsgICAgICAgIGZpbGxfdXVpZChyZWdzLCBwc2NpX3V1aWQpOwo+ ICsgICAgICAgIHJldHVybiB0cnVlOwo+ICsgICAgfQo+ICsgICAgY2FzZSBBUk1fU01DQ0NfRlVO Q19DQUxMX1JFVklTSU9OOgo+ICsgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCBTU1NDX1NN Q0NDX01BSk9SX1JFVklTSU9OKTsKPiArICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMSwgU1NT Q19TTUNDQ19NSU5PUl9SRVZJU0lPTik7CgpTYW1lIGhlcmUuCgo+ICsgICAgICAgIHJldHVybiB0 cnVlOwo+ICsgICAgfQo+ICsgICAgcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICAvKgo+ICAgKiB2 c21jY2NfaGFuZGxlX2NhbGwoKSAtIGhhbmRsZSBTTUMvSFZDIGNhbGwgYWNjb3JkaW5nIHRvIEFS TSBTTUNDQy4KPiAgICogcmV0dXJucyB0cnVlIGlmIHRoYXQgd2FzIHZhbGlkIFNNQ0NDIGNhbGwg KGV2ZW4gaWYgZnVuY3Rpb24gbnVtYmVyCj4gQEAgLTcxLDYgKzIwMiw3IEBAIHN0YXRpYyBib29s IHZzbWNjY19oYW5kbGVfY2FsbChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiAgewo+ICAg ICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7Cj4gICAgICBjb25zdCB1bmlvbiBoc3IgaHNyID0geyAu Yml0cyA9IHJlZ3MtPmhzciB9Owo+ICsgICAgcmVnaXN0ZXJfdCBmdW5jX2lkID0gZ2V0X3VzZXJf cmVnKHJlZ3MsIDApOwoKUGxlYXNlIGludHJvZHVjZSBmdW5jX2lkIGluIHBhdGNoICM2IHJhdGhl ciB0aGFuIGRvaW5nIHRoaXMgcmV3b3JrIGhlcmUuCgo+Cj4gICAgICAvKgo+ICAgICAgICogQ2hl Y2sgaW1tZWRpYXRlIHZhbHVlIGZvciBIVkMzMiwgSFZDNjQgYW5kIFNNQzY0Lgo+IEBAIC05NCwy NCArMjI2LDM4IEBAIHN0YXRpYyBib29sIHZzbWNjY19oYW5kbGVfY2FsbChzdHJ1Y3QgY3B1X3Vz ZXJfcmVncyAqcmVncykKPiAgICAgIH0KPgo+ICAgICAgLyogNjQgYml0IGNhbGxzIGFyZSBhbGxv d2VkIG9ubHkgZnJvbSA2NCBiaXQgZG9tYWlucy4gKi8KPiAtICAgIGlmICggQVJNX1NNQ0NDX0lT XzY0KGdldF91c2VyX3JlZyhyZWdzLCAwKSkgJiYKPiArICAgIGlmICggQVJNX1NNQ0NDX0lTXzY0 KGZ1bmNfaWQpICYmCj4gICAgICAgICAgIGlzXzMyYml0X2RvbWFpbihjdXJyZW50LT5kb21haW4p ICkKPiAgICAgIHsKPiAgICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMCwgQVJNX1NNQ0NDX0VS Ul9VTktOT1dOX0ZVTkNUSU9OKTsKPiAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiAgICAgIH0KPgo+ IC0gICAgc3dpdGNoICggQVJNX1NNQ0NDX09XTkVSX05VTShnZXRfdXNlcl9yZWcocmVncywgMCkp ICkKPiArICAgIC8qCj4gKyAgICAgKiBTcGVjaWFsIGNhc2U6IGlkZW50aWZpZXIgcmFuZ2UgZm9y IGV4aXN0aW5nIEFQSXMuCj4gKyAgICAgKiBUaGlzIHJhbmdlIGlzIGRlc2NyaWJlZCBpbiBTTUND QyAoQVJNIERFTiAwMDI4QiwgcGFnZSAxNiksCj4gKyAgICAgKiBidXQgaXQgZG9lcyBub3QgY29u Zm9ybXMgdG8gc3RhbmRhcmQgZnVuY3Rpb24gaWRlbnRpZmllcgo+ICsgICAgICogZW5jb2Rpbmcu Cj4gKyAgICAgKi8KPiArICAgIGlmICggZnVuY19pZCA+PSBBUk1fU01DQ0NfUkVTRVJWRURfUkFO R0VfU1RBUlQgJiYKPiArICAgICAgICAgZnVuY19pZCA8PSBBUk1fU01DQ0NfUkVTRVJWRURfUkFO R0VfRU5EICkKPiArICAgICAgICBoYW5kbGVkID0gaGFuZGxlX3BzY2lfMF8xKHJlZ3MpOwoKVGhl IHJlZ2lvbiAicmVzZXJ2ZWQgZm9yIGV4aXN0aW5nIEFQSXMiIGlzIG5vdCBvbmx5IGZvciBwc2Np IDAuMS4gWW91IApzaG91bGQgbWFrZSBpdCBjbGVhciBpbiB0aGUgbmFtZS4KCj4gKyAgICBlbHNl Cj4gICAgICB7Cj4gLSAgICBjYXNlIEFSTV9TTUNDQ19PV05FUl9IWVBFUlZJU09SOgo+IC0gICAg ICAgIGhhbmRsZWQgPSBoYW5kbGVfaHlwZXJ2aXNvcihyZWdzKTsKPiAtICAgICAgICBicmVhazsK PiArICAgICAgICBzd2l0Y2ggKCBBUk1fU01DQ0NfT1dORVJfTlVNKGZ1bmNfaWQpICkKPiArICAg ICAgICB7Cj4gKyAgICAgICAgY2FzZSBBUk1fU01DQ0NfT1dORVJfSFlQRVJWSVNPUjoKPiArICAg ICAgICAgICAgaGFuZGxlZCA9IGhhbmRsZV9oeXBlcnZpc29yKHJlZ3MpOwo+ICsgICAgICAgICAg ICBicmVhazsKPiArICAgICAgICBjYXNlIEFSTV9TTUNDQ19PV05FUl9TVEFOREFSRDoKPiArICAg ICAgICAgICAgaGFuZGxlZCA9IGhhbmRsZV9zc3NjKHJlZ3MpOwo+ICsgICAgICAgICAgICBicmVh azsKPiArICAgICAgICB9Cj4gICAgICB9Cj4KPiAgICAgIGlmICggIWhhbmRsZWQgKQo+ICAgICAg ewo+IC0gICAgICAgIGdwcmludGsoWEVOTE9HX0lORk8sICJVbmhhbmRsZWQgU01DL0hWQzogJTA4 IlBSSXJlZ2lzdGVyIlxuIiwKPiAtICAgICAgICAgICAgICAgIGdldF91c2VyX3JlZyhyZWdzLCAw KSk7Cj4gKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfSU5GTywgIlVuaGFuZGxlZCBTTUMvSFZDOiAl MDgiUFJJcmVnaXN0ZXIiXG4iLCBmdW5jX2lkKTsKPiAgICAgICAgICAvKiBJbmZvcm0gY2FsbGVy IHRoYXQgZnVuY3Rpb24gaXMgbm90IHN1cHBvcnRlZC4gKi8KPiAgICAgICAgICBzZXRfdXNlcl9y ZWcocmVncywgMCwgQVJNX1NNQ0NDX0VSUl9VTktOT1dOX0ZVTkNUSU9OKTsKPiAgICAgIH0KPiBA QCAtMTUwLDYgKzI5NiwyMSBAQCB2b2lkIGRvX3RyYXBfc21jKHN0cnVjdCBjcHVfdXNlcl9yZWdz ICpyZWdzLCBjb25zdCB1bmlvbiBoc3IgaHNyKQo+ICAgICAgICAgIGluamVjdF91bmRlZl9leGNl cHRpb24ocmVncywgaHNyKTsKPiAgfQo+Cj4gKy8qIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxs ZWQgZnJvbSB0cmFwcy5jICovCj4gK3ZvaWQgZG9fdHJhcF9odmNfc21jY2Moc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MpCj4gK3sKPiArICAgIGNvbnN0IHVuaW9uIGhzciBoc3IgPSB7IC5iaXRz ID0gcmVncy0+aHNyIH07Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIHZzbWNjY19oYW5kbGVfY2Fs bCgpIHdpbGwgcmV0dXJuIGZhbHNlIGlmIHRoaXMgY2FsbCBpcyBub3QKPiArICAgICAqIFNNQ0ND IGNvbXBhdGJpbGUgKGkuZS4gaW1tZWRpYXRlIHZhbHVlICE9IDApLiBBcyBpdCBpcyBub3QKCnMv Y29tcGF0YmlsZS9jb21wYXRpYmxlLy4gQW5kIHlvdSB3YW50IHRvIHVzZSBlLmcgaW5zdGVhZCBv ZiBpLmUgYmVjYXVzZSAKImltbWVkaWF0ZSB2YWx1ZSAhPSAwIiBpcyBub3QgdGhlIG9ubHkgd2F5 IHRvIHJldHVybiBmYWxzZS4KCj4gKyAgICAgKiBjb21wYXRpYmxlLCB3ZSBjYW4ndCBiZSBzdXJl IHRoYXQgZ3Vlc3Qgd2lsbCB1bmRlcnN0YW5kCj4gKyAgICAgKiBBUk1fU01DQ0NfRVJSX1VOS05P V05fRlVOQ1RJT04uCj4gKyAgICAgKi8KPiArICAgIGlmICggIXZzbWNjY19oYW5kbGVfY2FsbChy ZWdzKSApCj4gKyAgICAgICAgaW5qZWN0X3VuZGVmX2V4Y2VwdGlvbihyZWdzLCBoc3IpOwo+ICt9 Cj4gKwo+ICAvKgo+ICAgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gICAqIG1vZGU6IEMKPiBkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9zbWNjYy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9z bWNjYy5oCj4gaW5kZXggNjdkYTNmYi4uN2MwMDAzYyAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVk ZS9hc20tYXJtL3NtY2NjLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3NtY2NjLmgKPiBA QCAtODAsNiArODAsMTAgQEAKPiAgLyogT25seSBvbmUgZXJyb3IgY29kZSBkZWZpbmVkIGluIFNN Q0NDICovCj4gICNkZWZpbmUgQVJNX1NNQ0NDX0VSUl9VTktOT1dOX0ZVTkNUSU9OICAoLTEpCj4K PiArLyogU01DQ0MgZnVuY3Rpb24gaWRlbnRpZmllciByYW5nZSB3aGljaCBpcyByZXNlcnZlZCBm b3IgZXhpc3RpbmcgQVBJcyAqLwo+ICsjZGVmaW5lIEFSTV9TTUNDQ19SRVNFUlZFRF9SQU5HRV9T VEFSVCAgMHgwCj4gKyNkZWZpbmUgQVJNX1NNQ0NDX1JFU0VSVkVEX1JBTkdFX0VORCAgICAweDAx MDBGRkZGCj4gKwo+ICAjZW5kaWYgIC8qIF9fQVNNX0FSTV9TTUNDQ19IX18gKi8KPgo+ICAvKgo+ IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3ZzbWMuaCBiL3hlbi9pbmNsdWRlL2Fz bS1hcm0vdnNtYy5oCj4gaW5kZXggMzFhYWE1NS4uOTBmZjYxMCAxMDA2NDQKPiAtLS0gYS94ZW4v aW5jbHVkZS9hc20tYXJtL3ZzbWMuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnNtYy5o Cj4gQEAgLTE3LDYgKzE3LDcgQEAKPiAgI2luY2x1ZGUgPHhlbi90eXBlcy5oPgo+Cj4gIHZvaWQg ZG9fdHJhcF9zbWMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGNvbnN0IHVuaW9uIGhzciBo c3IpOwo+ICt2b2lkIGRvX3RyYXBfaHZjX3NtY2NjKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdz KTsKPgo+ICAjZW5kaWYgIC8qIF9fQVNNX0FSTV9WU01DX0hfXyAqLwo+Cj4gZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS9zbWMuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9h cmNoLWFybS9zbWMuaAo+IGluZGV4IDNkM2NkOTAuLmM1MzI3ZTMgMTAwNjQ0Cj4gLS0tIGEveGVu L2luY2x1ZGUvcHVibGljL2FyY2gtYXJtL3NtYy5oCj4gKysrIGIveGVuL2luY2x1ZGUvcHVibGlj L2FyY2gtYXJtL3NtYy5oCj4gQEAgLTQ2LDYgKzQ2LDE0IEBACj4gICNkZWZpbmUgWEVOX1NNQ0ND X1VJRCBYRU5fREVGSU5FX1VVSUQoMHhhNzE4MTJkYywgMHhjNjk4LCAweDQzNjksIDB4OWFjZiwg XAo+ICAJCQkJICAgICAgMHg3OSwgMHhkMSwgMHg4ZCwgMHhkZSwgMHhlNiwgMHg2NykKPgo+ICsv KiBTdGFuZGFyZCBTZXJ2aWNlIFNlcnZpY2UgQ2FsbCB2ZXJzaW9uLiAqLwo+ICsjZGVmaW5lIFNT U0NfU01DQ0NfTUFKT1JfUkVWSVNJT04gMAo+ICsjZGVmaW5lIFNTU0NfU01DQ0NfTUlOT1JfUkVW SVNJT04gMQo+ICsKPiArLyogU3RhbmRhcmQgU2VydmljZSBDYWxsIFVJRC4gUmFuZG9tbHkgZ2Vu ZXJhdGVkIHdpdGggdXVpZGdlbi4gKi8KPiArI2RlZmluZSBTU1NDX1NNQ0NDX1VJRCBYRU5fREVG SU5FX1VVSUQoMHhmODYzMzg2ZiwgMHg0YjM5LCAweDRjYmQsIDB4OTIyMCxcCj4gKwkJCQkgICAg ICAweGNlLCAweDE2LCAweDQxLCAweGU1LCAweDlmLCAweDZmKQo+ICsKPiAgI2VuZGlmIC8qIF9f WEVOX1BVQkxJQ19BUkNIX0FSTV9TTUNfSF9fICovCgpDaGVlcnMsCgo+Cj4gIC8qCj4KCi0tIApK dWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=