From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: Re: [01/11 v3] drm/i915/guc: Sanitize GuC client initialization Date: Mon, 13 Mar 2017 13:19:00 -0700 Message-ID: <1b4d3220-ed32-db64-50da-70e2fcffa6fe@intel.com> References: <1489163337-36080-1-git-send-email-oscar.mateo@intel.com> <1489163337-36080-2-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B3B656E5DF for ; Mon, 13 Mar 2017 20:19:01 +0000 (UTC) In-Reply-To: <1489163337-36080-2-git-send-email-oscar.mateo@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Oscar Mateo , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxMC8wMy8xNyAwODoyOCwgT3NjYXIgTWF0ZW8gd3JvdGU6Cj4gU3RhcnRlZCBhZGRpbmcg cHJvcGVyIHRlYXJkb3duIHRvIGd1Y19jbGllbnRfYWxsb2MsIGVuZGVkIHVwIHJlbW92aW5nCj4g cXVpdGUgYSBmZXcgZGVhZCBlbmRzIHdoZXJlIGVycm9ycyBjb21tdW5pY2F0aW5nIHdpdGggdGhl IEd1QyB3ZXJlCj4gc2lsZW50bHkgaWdub3JlZC4gVGhlcmUgYWxzbyBzZWVtZWQgdG8gYmUgcXVp dGUgYSBmZXcgZXJyb25vdXMKPiB0ZWFyZG93biBhY3Rpb25zIHBlcmZvcm1lZCBpbiBjYXNlIG9m IGFuIGVycm9yIChvcmRlcmluZyB3cm9uZykuCj4KPiB2MjoKPiAgIC0gSW5jcmVhc2UgZnVuY3Rp b24gc3ltbWV0cnkvcHJveGltaXR5IChNaWNoYWwvRGFuaWVsZSkKPiAgIC0gRml4IF9fcmVzZXJ2 ZV9kb29yYmVsbCBhY2NvdW50aW5nIGZvciBoaWdoIHByaW9yaXR5IChEYW5pZWxlKQo+ICAgLSBD YWxsIF9fdXBkYXRlX2Rvb3JiZWxsX2Rlc2MhIChEYW5pZWxlKQo+ICAgLSBJc29sYXRlIF9fZ3Vj X3ssZGV9YWxsb2NhdGVfZG9vcmJlbGwgKE1pY2hhbC9EYW5pZWxlKQo+Cj4gdjM6Cj4gICAtICJT ZWxlY3QiIGEgY2FjaGVsaW5lIGlzIGEgbW9yZSBhY2N1cmF0ZSB2ZXJiIHRoYW4gInJlc2VydmUi IChEYW5pZWxlKS4KPiAgIC0gV2UgY2Fubm90IHVwZGF0ZSAmIGNyZWF0ZSB0aGUgZG9vcmJlbGwg d2l0aG91dCByZXNlcnZpbmcgaXQgZmlyc3QsIHNvCj4gICAgIG1vdmUgdGhlIHdob2xlIGRvb3Ji ZWxsIGNyZWF0aW9uIGZvciBleGVjYnVmX2NsaWVudCB0byB0aGUgc3VibWlzc2lvbgo+ICAgICBl bmFibGUgKE9zY2FyKS5pCj4gICAtIEFkZCBhIGZpeG1lIGZvciBpZ25vcmluZyBwb3NzaWJsZSBk b29yYmVsbCBkZXN0cm95IGVycm9ycy4KPgo+IFNpZ25lZC1vZmYtYnk6IEpvb25hcyBMYWh0aW5l biA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPiBDYzogTWljaGFsIFdhamRlY3pr byA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4gQ2M6IEFya2FkaXVzeiBIaWxlciA8YXJr YWRpdXN6LmhpbGVyQGludGVsLmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1 bGluQGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+Cj4gQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0Bp bnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVs LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAg IHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8 IDM5MSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfZndpZi5oICAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuaCAgICAgICAgICAgIHwgIDExICstCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjI5IGlu c2VydGlvbnMoKyksIDE4MSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gaW5kZXggNTY2NzRkZi4uYzM5NWNjZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gQEAgLTI0NjksNyArMjQ2OSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ3Vj X2NsaWVudF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwKPgo+ICAJc2VxX3ByaW50ZihtLCAiXHRQ cmlvcml0eSAlZCwgR3VDIGN0eCBpbmRleDogJXUsIFBEIG9mZnNldCAweCV4XG4iLAo+ICAJCWNs aWVudC0+cHJpb3JpdHksIGNsaWVudC0+Y3R4X2luZGV4LCBjbGllbnQtPnByb2NfZGVzY19vZmZz ZXQpOwo+IC0Jc2VxX3ByaW50ZihtLCAiXHREb29yYmVsbCBpZCAlZCwgb2Zmc2V0OiAweCV4LCBj b29raWUgMHgleFxuIiwKPiArCXNlcV9wcmludGYobSwgIlx0RG9vcmJlbGwgaWQgJWQsIG9mZnNl dDogMHglbHgsIGNvb2tpZSAweCV4XG4iLAo+ICAJCWNsaWVudC0+ZG9vcmJlbGxfaWQsIGNsaWVu dC0+ZG9vcmJlbGxfb2Zmc2V0LCBjbGllbnQtPmRvb3JiZWxsX2Nvb2tpZSk7Cj4gIAlzZXFfcHJp bnRmKG0sICJcdFdRIHNpemUgJWQsIG9mZnNldDogMHgleCwgdGFpbCAlZFxuIiwKPiAgCQljbGll bnQtPndxX3NpemUsIGNsaWVudC0+d3Ffb2Zmc2V0LCBjbGllbnQtPndxX3RhaWwpOwo+IEBAIC0y NTA0LDcgKzI1MDQsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ3VjX2luZm8oc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQo+ICAJfQo+Cj4gIAlzZXFfcHJpbnRmKG0sICJEb29yYmVsbCBtYXA6 XG4iKTsKPiAtCXNlcV9wcmludGYobSwgIlx0JSpwYlxuIiwgR1VDX01BWF9ET09SQkVMTFMsIGd1 Yy0+ZG9vcmJlbGxfYml0bWFwKTsKPiArCXNlcV9wcmludGYobSwgIlx0JSpwYlxuIiwgR1VDX05V TV9ET09SQkVMTFMsIGd1Yy0+ZG9vcmJlbGxfYml0bWFwKTsKPiAgCXNlcV9wcmludGYobSwgIkRv b3JiZWxsIG5leHQgY2FjaGVsaW5lOiAweCV4XG5cbiIsIGd1Yy0+ZGJfY2FjaGVsaW5lKTsKPgo+ ICAJc2VxX3ByaW50ZihtLCAiR3VDIHRvdGFsIGFjdGlvbiBjb3VudDogJWxsdVxuIiwgZ3VjLT5h Y3Rpb25fY291bnQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1 Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMKPiBpbmRleCA0MWYyZGQ4Li5jZWViMWZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IEBAIC02MiwyNyArNjIsNzMgQEAKPiAgICoKPiAgICov Cj4KPiArc3RhdGljIGlubGluZSBib29sIGlzX2hpZ2hfcHJpb3JpdHkoc3RydWN0IGk5MTVfZ3Vj X2NsaWVudCogY2xpZW50KQo+ICt7Cj4gKwlyZXR1cm4gY2xpZW50LT5wcmlvcml0eSA8PSBHVUNf Q1RYX1BSSU9SSVRZX0hJR0g7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX19yZXNlcnZlX2Rvb3Ji ZWxsKHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKPiArewo+ICsJdW5zaWduZWQgbG9u ZyBvZmZzZXQ7Cj4gKwl1bnNpZ25lZCBsb25nIGVuZDsKPiArCXUxNiBpZDsKPiArCj4gKwlHRU1f QlVHX09OKGNsaWVudC0+ZG9vcmJlbGxfaWQgIT0gR1VDX0RPT1JCRUxMX0lOVkFMSUQpOwo+ICsK PiArCS8qCj4gKwkgKiBUaGUgYml0bWFwIHRyYWNrcyB3aGljaCBkb29yYmVsbCByZWdpc3RlcnMg YXJlIGN1cnJlbnRseSBpbiB1c2UuCj4gKwkgKiBJdCBpcyBzcGxpdCBpbnRvIHR3byBoYWx2ZXM7 IHRoZSBmaXJzdCBoYWxmIGlzIHVzZWQgZm9yIG5vcm1hbAo+ICsJICogcHJpb3JpdHkgY29udGV4 dHMsIHRoZSBzZWNvbmQgaGFsZiBmb3IgaGlnaC1wcmlvcml0eSBvbmVzLgo+ICsJICogTm90ZSB0 aGF0IGxvZ2ljYWxseSBoaWdoZXIgcHJpb3JpdGllcyBhcmUgbnVtZXJpY2FsbHkgbGVzcyB0aGFu Cj4gKwkgKiBub3JtYWwgb25lcywgc28gdGhlIHRlc3QgYmVsb3cgbWVhbnMgImlzIGl0IGhpZ2gt cHJpb3JpdHk/IgoKVGhlIGNvbW1lbnQgYWJvdXQgdGhlIHRlc3QgZG9lc24ndCBhcHBseSBhbnlt b3JlIHNvIHdlIGNhbiBlaXRoZXIgcmVtb3ZlIAppdCBvciBtb3ZlIGl0IGluIHRoZSBpc19oaWdo X3ByaW9yaXR5KCkgZnVuY3Rpb24uCgo+ICsJICovCj4gKwo+ICsJb2Zmc2V0ID0gMDsKPiArCWVu ZCA9IEdVQ19OVU1fRE9PUkJFTExTLzI7Cj4gKwlpZiAoaXNfaGlnaF9wcmlvcml0eShjbGllbnQp KSB7Cj4gKwkJb2Zmc2V0ID0gZW5kOwo+ICsJCWVuZCArPSBvZmZzZXQ7Cj4gKyAgICAgICAgfQo+ ICsKPiArCWlkID0gZmluZF9uZXh0X3plcm9fYml0KGNsaWVudC0+Z3VjLT5kb29yYmVsbF9iaXRt YXAsIG9mZnNldCwgZW5kKTsKPiArCWlmIChpZCA9PSBlbmQpCj4gKwkJcmV0dXJuIC1FTk9TUEM7 Cj4gKwo+ICsJX19zZXRfYml0KGlkLCBjbGllbnQtPmd1Yy0+ZG9vcmJlbGxfYml0bWFwKTsKPiAr CWNsaWVudC0+ZG9vcmJlbGxfaWQgPSBpZDsKPiArCURSTV9ERUJVR19EUklWRVIoImNsaWVudCAl dSAoaGlnaCBwcmlvPSVzKSByZXNlcnZlZCBkb29yYmVsbCAlZDogXG4iLAoKIiVkOiIgLT4gIjog JWQiID8KCj4gKwkJCSBjbGllbnQtPmN0eF9pbmRleCwgeWVzbm8oaXNfaGlnaF9wcmlvcml0eShj bGllbnQpKSwKPiArCQkJIGlkKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBfX3VucmVzZXJ2ZV9kb29yYmVsbChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQpCj4g K3sKPiArCUdFTV9CVUdfT04oY2xpZW50LT5kb29yYmVsbF9pZCA9PSBHVUNfRE9PUkJFTExfSU5W QUxJRCk7Cj4gKwo+ICsJX19jbGVhcl9iaXQoY2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5n dWMtPmRvb3JiZWxsX2JpdG1hcCk7Cj4gKwljbGllbnQtPmRvb3JiZWxsX2lkID0gR1VDX0RPT1JC RUxMX0lOVkFMSUQ7Cj4gK30KPiArCj4gIC8qCj4gICAqIFRlbGwgdGhlIEd1QyB0byBhbGxvY2F0 ZSBvciBkZWFsbG9jYXRlIGEgc3BlY2lmaWMgZG9vcmJlbGwKPiAgICovCj4KPiAtc3RhdGljIGlu dCBndWNfYWxsb2NhdGVfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3VjLAo+IC0JCQkJIHN0 cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIGludCBfX2d1Y19hbGxvY2F0 ZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBjdHhfaW5kZXgpCj4gIHsKPiAg CXUzMiBhY3Rpb25bXSA9IHsKPiAgCQlJTlRFTF9HVUNfQUNUSU9OX0FMTE9DQVRFX0RPT1JCRUxM LAo+IC0JCWNsaWVudC0+Y3R4X2luZGV4Cj4gKwkJY3R4X2luZGV4Cj4gIAl9Owo+Cj4gIAlyZXR1 cm4gaW50ZWxfZ3VjX3NlbmQoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSk7Cj4gIH0K Pgo+IC1zdGF0aWMgaW50IGd1Y19yZWxlYXNlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YywKPiAtCQkJCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIGludCBf X2d1Y19kZWFsbG9jYXRlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGN0eF9p bmRleCkKPiAgewo+ICAJdTMyIGFjdGlvbltdID0gewo+ICAJCUlOVEVMX0dVQ19BQ1RJT05fREVB TExPQ0FURV9ET09SQkVMTCwKPiAtCQljbGllbnQtPmN0eF9pbmRleAo+ICsJCWN0eF9pbmRleAo+ ICAJfTsKPgo+ICAJcmV0dXJuIGludGVsX2d1Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpF KGFjdGlvbikpOwo+IEBAIC05NSwxMDQgKzE0MSwxMDAgQEAgc3RhdGljIGludCBndWNfcmVsZWFz ZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCj4gICAqIGNsaWVudCBvYmplY3Qgd2hp Y2ggY29udGFpbnMgdGhlIHBhZ2UgYmVpbmcgdXNlZCBmb3IgdGhlIGRvb3JiZWxsCj4gICAqLwo+ Cj4gLXN0YXRpYyBpbnQgZ3VjX3VwZGF0ZV9kb29yYmVsbF9pZChzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsCj4gLQkJCQkgIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCwKPiAtCQkJCSAgdTE2 IG5ld19pZCkKPiArc3RhdGljIGludCBfX3VwZGF0ZV9kb29yYmVsbF9kZXNjKHN0cnVjdCBpOTE1 X2d1Y19jbGllbnQgKmNsaWVudCwgdTE2IG5ld19pZCkKPiAgewo+IC0Jc3RydWN0IHNnX3RhYmxl ICpzZyA9IGd1Yy0+Y3R4X3Bvb2xfdm1hLT5wYWdlczsKPiAtCXZvaWQgKmRvb3JiZWxsX2JpdG1h cCA9IGd1Yy0+ZG9vcmJlbGxfYml0bWFwOwo+IC0Jc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvICpk b29yYmVsbDsKPiArCXN0cnVjdCBzZ190YWJsZSAqc2cgPSBjbGllbnQtPmd1Yy0+Y3R4X3Bvb2xf dm1hLT5wYWdlczsKPiAgCXN0cnVjdCBndWNfY29udGV4dF9kZXNjIGRlc2M7Cj4gIAlzaXplX3Qg bGVuOwo+Cj4gLQlkb29yYmVsbCA9IGNsaWVudC0+dmFkZHIgKyBjbGllbnQtPmRvb3JiZWxsX29m ZnNldDsKPiAtCj4gLQlpZiAoY2xpZW50LT5kb29yYmVsbF9pZCAhPSBHVUNfSU5WQUxJRF9ET09S QkVMTF9JRCAmJgo+IC0JICAgIHRlc3RfYml0KGNsaWVudC0+ZG9vcmJlbGxfaWQsIGRvb3JiZWxs X2JpdG1hcCkpIHsKPiAtCQkvKiBEZWFjdGl2YXRlIHRoZSBvbGQgZG9vcmJlbGwgKi8KPiAtCQlk b29yYmVsbC0+ZGJfc3RhdHVzID0gR1VDX0RPT1JCRUxMX0RJU0FCTEVEOwo+IC0JCSh2b2lkKWd1 Y19yZWxlYXNlX2Rvb3JiZWxsKGd1YywgY2xpZW50KTsKPiAtCQlfX2NsZWFyX2JpdChjbGllbnQt PmRvb3JiZWxsX2lkLCBkb29yYmVsbF9iaXRtYXApOwo+IC0JfQo+IC0KPiAgCS8qIFVwZGF0ZSB0 aGUgR3VDJ3MgaWRlYSBvZiB0aGUgZG9vcmJlbGwgSUQgKi8KPiAgCWxlbiA9IHNnX3Bjb3B5X3Rv X2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsICZkZXNjLCBzaXplb2YoZGVzYyksCj4gLQkJCSAg ICAgc2l6ZW9mKGRlc2MpICogY2xpZW50LT5jdHhfaW5kZXgpOwo+ICsJCQkJIHNpemVvZihkZXNj KSAqIGNsaWVudC0+Y3R4X2luZGV4KTsKPiAgCWlmIChsZW4gIT0gc2l6ZW9mKGRlc2MpKQo+ICAJ CXJldHVybiAtRUZBVUxUOwo+ICsKPiAgCWRlc2MuZGJfaWQgPSBuZXdfaWQ7Cj4gIAlsZW4gPSBz Z19wY29weV9mcm9tX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsICZkZXNjLCBzaXplb2YoZGVz YyksCj4gLQkJCSAgICAgc2l6ZW9mKGRlc2MpICogY2xpZW50LT5jdHhfaW5kZXgpOwo+ICsJCQkJ ICAgc2l6ZW9mKGRlc2MpICogY2xpZW50LT5jdHhfaW5kZXgpOwo+ICAJaWYgKGxlbiAhPSBzaXpl b2YoZGVzYykpCj4gIAkJcmV0dXJuIC1FRkFVTFQ7Cj4KPiAtCWNsaWVudC0+ZG9vcmJlbGxfaWQg PSBuZXdfaWQ7Cj4gLQlpZiAobmV3X2lkID09IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEKQo+IC0J CXJldHVybiAwOwo+ICsJcmV0dXJuIDA7Cj4gK30KPgo+IC0JLyogQWN0aXZhdGUgdGhlIG5ldyBk b29yYmVsbCAqLwo+IC0JX19zZXRfYml0KG5ld19pZCwgZG9vcmJlbGxfYml0bWFwKTsKPiArc3Rh dGljIHN0cnVjdCBndWNfZG9vcmJlbGxfaW5mbyAqX19nZXRfZG9vcmJlbGwoc3RydWN0IGk5MTVf Z3VjX2NsaWVudCAqY2xpZW50KQoKZnJvbSB3aGF0IEkgY2FuIHNlZSB0aGlzIGNvdWxkIGFsc28g YmUgdXNlZCBmcm9tIGd1Y19yaW5nX2Rvb3JiZWxsIGFuZCAKcG9zc2libHkgZnJvbSBndWNfY3R4 X2Rlc2NfaW5pdAoKPiArewo+ICsJcmV0dXJuIGNsaWVudC0+dmFkZHIgKyBjbGllbnQtPmRvb3Ji ZWxsX29mZnNldDsKCk5vdCBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIGJ1dCBhcml0aG1ldGlj IG9uIHZvaWQgcG9pbnRlcnMgZG9lc24ndCAKcmVhbGx5IGxvb2sgY2xlYW4gSU1PLiBDYW4gd2Ug Y2FzdCB0aGUgcG9pbnRlciB0byB1aW50cHRyX3Qgb3IgY2hhciogb3IgCndoYXRldmVyIGVsc2Ug aXMgYXBwcm9wcmlhdGUgYmVmb3JlIGluY3JlbWVudGluZyBpdD8gSSdtIGhhcHB5IGZvciBpdCB0 byAKYmUgZG9uZSBpbiBhIGZvbGxvdyB1cC4KCj4gK30KPiArCj4gK3N0YXRpYyBib29sIGhhc19k b29yYmVsbChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQpCj4gK3sKPiArCWlmIChjbGll bnQtPmRvb3JiZWxsX2lkID09IEdVQ19ET09SQkVMTF9JTlZBTElEKQo+ICsJCXJldHVybiBmYWxz ZTsKPiArCj4gKwlyZXR1cm4gdGVzdF9iaXQoY2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5n dWMtPmRvb3JiZWxsX2JpdG1hcCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgX19jcmVhdGVfZG9v cmJlbGwoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICt7Cj4gKwlzdHJ1Y3QgZ3Vj X2Rvb3JiZWxsX2luZm8gKmRvb3JiZWxsOwo+ICsJaW50IGVycjsKPiArCj4gKwlkb29yYmVsbCA9 IF9fZ2V0X2Rvb3JiZWxsKGNsaWVudCk7Cj4gIAlkb29yYmVsbC0+ZGJfc3RhdHVzID0gR1VDX0RP T1JCRUxMX0VOQUJMRUQ7Cj4gIAlkb29yYmVsbC0+Y29va2llID0gY2xpZW50LT5kb29yYmVsbF9j b29raWU7Cj4gLQlyZXR1cm4gZ3VjX2FsbG9jYXRlX2Rvb3JiZWxsKGd1YywgY2xpZW50KTsKPiAr Cj4gKwllcnIgPSBfX2d1Y19hbGxvY2F0ZV9kb29yYmVsbChjbGllbnQtPmd1YywgY2xpZW50LT5j dHhfaW5kZXgpOwo+ICsJaWYgKGVycikgewo+ICsJCWRvb3JiZWxsLT5kYl9zdGF0dXMgPSBHVUNf RE9PUkJFTExfRElTQUJMRUQ7Cj4gKwkJZG9vcmJlbGwtPmNvb2tpZSA9IDA7Cj4gKwl9Cj4gKwly ZXR1cm4gZXJyOwo+ICB9Cj4KPiAtc3RhdGljIHZvaWQgZ3VjX2Rpc2FibGVfZG9vcmJlbGwoc3Ry dWN0IGludGVsX2d1YyAqZ3VjLAo+IC0JCQkJIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVu dCkKPiArc3RhdGljIGludCBfX2Rlc3Ryb3lfZG9vcmJlbGwoc3RydWN0IGk5MTVfZ3VjX2NsaWVu dCAqY2xpZW50KQo+ICB7Cj4gLQkodm9pZClndWNfdXBkYXRlX2Rvb3JiZWxsX2lkKGd1YywgY2xp ZW50LCBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRCk7Cj4gKwlzdHJ1Y3QgZ3VjX2Rvb3JiZWxsX2lu Zm8gKmRvb3JiZWxsOwo+Cj4gLQkvKiBYWFg6IHdhaXQgZm9yIGFueSBpbnRlcnJ1cHRzICovCj4g LQkvKiBYWFg6IHdhaXQgZm9yIHdvcmtxdWV1ZSB0byBkcmFpbiAqLwo+ICsJZG9vcmJlbGwgPSBf X2dldF9kb29yYmVsbChjbGllbnQpOwo+ICsJZG9vcmJlbGwtPmRiX3N0YXR1cyA9IEdVQ19ET09S QkVMTF9ESVNBQkxFRDsKPiArCWRvb3JiZWxsLT5jb29raWUgPSAwOwo+ICsKPiArCXJldHVybiBf X2d1Y19kZWFsbG9jYXRlX2Rvb3JiZWxsKGNsaWVudC0+Z3VjLCBjbGllbnQtPmN0eF9pbmRleCk7 Cj4gIH0KPgo+IC1zdGF0aWMgdWludDE2X3QKPiAtc2VsZWN0X2Rvb3JiZWxsX3JlZ2lzdGVyKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YywgdWludDMyX3QgcHJpb3JpdHkpCj4gK3N0YXRpYyBpbnQgZGVz dHJveV9kb29yYmVsbChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQpCj4gIHsKPiAtCS8q Cj4gLQkgKiBUaGUgYml0bWFwIHRyYWNrcyB3aGljaCBkb29yYmVsbCByZWdpc3RlcnMgYXJlIGN1 cnJlbnRseSBpbiB1c2UuCj4gLQkgKiBJdCBpcyBzcGxpdCBpbnRvIHR3byBoYWx2ZXM7IHRoZSBm aXJzdCBoYWxmIGlzIHVzZWQgZm9yIG5vcm1hbAo+IC0JICogcHJpb3JpdHkgY29udGV4dHMsIHRo ZSBzZWNvbmQgaGFsZiBmb3IgaGlnaC1wcmlvcml0eSBvbmVzLgo+IC0JICogTm90ZSB0aGF0IGxv Z2ljYWxseSBoaWdoZXIgcHJpb3JpdGllcyBhcmUgbnVtZXJpY2FsbHkgbGVzcyB0aGFuCj4gLQkg KiBub3JtYWwgb25lcywgc28gdGhlIHRlc3QgYmVsb3cgbWVhbnMgImlzIGl0IGhpZ2gtcHJpb3Jp dHk/Igo+IC0JICovCj4gLQljb25zdCBib29sIGhpX3ByaSA9IChwcmlvcml0eSA8PSBHVUNfQ1RY X1BSSU9SSVRZX0hJR0gpOwo+IC0JY29uc3QgdWludDE2X3QgaGFsZiA9IEdVQ19NQVhfRE9PUkJF TExTIC8gMjsKPiAtCWNvbnN0IHVpbnQxNl90IHN0YXJ0ID0gaGlfcHJpID8gaGFsZiA6IDA7Cj4g LQljb25zdCB1aW50MTZfdCBlbmQgPSBzdGFydCArIGhhbGY7Cj4gLQl1aW50MTZfdCBpZDsKPiAr CWludCBlcnI7Cj4KPiAtCWlkID0gZmluZF9uZXh0X3plcm9fYml0KGd1Yy0+ZG9vcmJlbGxfYml0 bWFwLCBlbmQsIHN0YXJ0KTsKPiAtCWlmIChpZCA9PSBlbmQpCj4gLQkJaWQgPSBHVUNfSU5WQUxJ RF9ET09SQkVMTF9JRDsKPiArCUdFTV9CVUdfT04oIWhhc19kb29yYmVsbChjbGllbnQpKTsKPgo+ IC0JRFJNX0RFQlVHX0RSSVZFUigiYXNzaWduZWQgJXMgcHJpb3JpdHkgZG9vcmJlbGwgaWQgMHgl eFxuIiwKPiAtCQkJaGlfcHJpID8gImhpZ2giIDogIm5vcm1hbCIsIGlkKTsKPiArCS8qIFhYWDog d2FpdCBmb3IgYW55IGludGVycnVwdHMgKi8KPiArCS8qIFhYWDogd2FpdCBmb3Igd29ya3F1ZXVl IHRvIGRyYWluICovCj4KPiAtCXJldHVybiBpZDsKPiAtfQo+ICsJZXJyID0gX19kZXN0cm95X2Rv b3JiZWxsKGNsaWVudCk7Cj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4KPiAtLyoKPiAt ICogU2VsZWN0LCBhc3NpZ24gYW5kIHJlbGFzZSBkb29yYmVsbCBjYWNoZWxpbmVzCj4gLSAqCj4g LSAqIFRoZXNlIGZ1bmN0aW9ucyB0cmFjayB3aGljaCBkb29yYmVsbCBjYWNoZWxpbmVzIGFyZSBp biB1c2UuCj4gLSAqIFRoZSBkYXRhIHRoZXkgbWFuaXB1bGF0ZSBpcyBwcm90ZWN0ZWQgYnkgdGhl IGludGVsX2d1Y19zZW5kIGxvY2suCj4gLSAqLwo+ICsJX191cGRhdGVfZG9vcmJlbGxfZGVzYyhj bGllbnQsIEdVQ19ET09SQkVMTF9JTlZBTElEKTsKPiArCj4gKwlfX3VucmVzZXJ2ZV9kb29yYmVs bChjbGllbnQpOwo+Cj4gLXN0YXRpYyB1aW50MzJfdCBzZWxlY3RfZG9vcmJlbGxfY2FjaGVsaW5l KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dW5zaWduZWQgbG9uZyBfX3NlbGVjdF9jYWNoZWxpbmUoc3RydWN0IGludGVsX2d1YyogZ3VjKQo+ ICB7Cj4gLQljb25zdCB1aW50MzJfdCBjYWNoZWxpbmVfc2l6ZSA9IGNhY2hlX2xpbmVfc2l6ZSgp Owo+IC0JdWludDMyX3Qgb2Zmc2V0Owo+ICsJdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cj4KPiAgCS8q IERvb3JiZWxsIHVzZXMgYSBzaW5nbGUgY2FjaGUgbGluZSB3aXRoaW4gYSBwYWdlICovCj4gIAlv ZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShndWMtPmRiX2NhY2hlbGluZSk7Cj4KPiAgCS8qIE1vdmlu ZyB0byBuZXh0IGNhY2hlIGxpbmUgdG8gcmVkdWNlIGNvbnRlbnRpb24gKi8KPiAtCWd1Yy0+ZGJf Y2FjaGVsaW5lICs9IGNhY2hlbGluZV9zaXplOwo+IC0KPiAtCURSTV9ERUJVR19EUklWRVIoInNl bGVjdGVkIGRvb3JiZWxsIGNhY2hlbGluZSAweCV4LCBuZXh0IDB4JXgsIGxpbmVzaXplICV1XG4i LAo+IC0JCQlvZmZzZXQsIGd1Yy0+ZGJfY2FjaGVsaW5lLCBjYWNoZWxpbmVfc2l6ZSk7Cj4gKwln dWMtPmRiX2NhY2hlbGluZSArPSBjYWNoZV9saW5lX3NpemUoKTsKPgo+ICsJRFJNX0RFQlVHX0RS SVZFUigicmVzZXJ2ZWQgY2FjaGVsaW5lIDB4JWx4LCBuZXh0IDB4JXgsIGxpbmVzaXplICV1XG4i LAo+ICsJCQlvZmZzZXQsIGd1Yy0+ZGJfY2FjaGVsaW5lLCBjYWNoZV9saW5lX3NpemUoKSk7Cj4g IAlyZXR1cm4gb2Zmc2V0Owo+ICB9Cj4KPiBAQCAtNTk0LDkzICs2MzYsOTYgQEAgc3RydWN0IGk5 MTVfdm1hICppbnRlbF9ndWNfYWxsb2NhdGVfdm1hKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMy IHNpemUpCj4gIAlyZXR1cm4gdm1hOwo+ICB9Cj4KPiAtc3RhdGljIHZvaWQKPiAtZ3VjX2NsaWVu dF9mcmVlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQlzdHJ1Y3QgaTkx NV9ndWNfY2xpZW50ICpjbGllbnQpCj4gK3N0YXRpYyB2b2lkIGd1Y19jbGllbnRfZnJlZShzdHJ1 Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9ndWMgKmd1 YyA9ICZkZXZfcHJpdi0+Z3VjOwo+IC0KPiAtCWlmICghY2xpZW50KQo+IC0JCXJldHVybjsKPiAt Cj4gIAkvKgo+ICAJICogWFhYOiB3YWl0IGZvciBhbnkgb3V0c3RhbmRpbmcgc3VibWlzc2lvbnMg YmVmb3JlIGZyZWVpbmcgbWVtb3J5Lgo+ICAJICogQmUgc3VyZSB0byBkcm9wIGFueSBsb2Nrcwo+ ICAJICovCj4gLQo+IC0JaWYgKGNsaWVudC0+dmFkZHIpIHsKPiAtCQkvKgo+IC0JCSAqIElmIHdl IGdvdCBhcyBmYXIgYXMgc2V0dGluZyB1cCBhIGRvb3JiZWxsLCBtYWtlIHN1cmUgd2UKPiAtCQkg KiBzaHV0IGl0IGRvd24gYmVmb3JlIHVubWFwcGluZyAmIGRlYWxsb2NhdGluZyB0aGUgbWVtb3J5 Lgo+IC0JCSAqLwo+IC0JCWd1Y19kaXNhYmxlX2Rvb3JiZWxsKGd1YywgY2xpZW50KTsKPiAtCj4g LQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChjbGllbnQtPnZtYS0+b2JqKTsKPiAtCX0KPiAt Cj4gKwlndWNfY3R4X2Rlc2NfZmluaShjbGllbnQtPmd1YywgY2xpZW50KTsKPiArCWk5MTVfZ2Vt X29iamVjdF91bnBpbl9tYXAoY2xpZW50LT52bWEtPm9iaik7Cj4gIAlpOTE1X3ZtYV91bnBpbl9h bmRfcmVsZWFzZSgmY2xpZW50LT52bWEpOwo+IC0KPiAtCWlmIChjbGllbnQtPmN0eF9pbmRleCAh PSBHVUNfSU5WQUxJRF9DVFhfSUQpIHsKPiAtCQlndWNfY3R4X2Rlc2NfZmluaShndWMsIGNsaWVu dCk7Cj4gLQkJaWRhX3NpbXBsZV9yZW1vdmUoJmd1Yy0+Y3R4X2lkcywgY2xpZW50LT5jdHhfaW5k ZXgpOwo+IC0JfQo+IC0KPiArCWlkYV9zaW1wbGVfcmVtb3ZlKCZjbGllbnQtPmd1Yy0+Y3R4X2lk cywgY2xpZW50LT5jdHhfaW5kZXgpOwo+ICAJa2ZyZWUoY2xpZW50KTsKPiAgfQo+Cj4gIC8qIENo ZWNrIHRoYXQgYSBkb29yYmVsbCByZWdpc3RlciBpcyBpbiB0aGUgZXhwZWN0ZWQgc3RhdGUgKi8K PiAtc3RhdGljIGJvb2wgZ3VjX2Rvb3JiZWxsX2NoZWNrKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywg dWludDE2X3QgZGJfaWQpCj4gK3N0YXRpYyBib29sIGRvb3JiZWxsX29rKHN0cnVjdCBpbnRlbF9n dWMgKmd1YywgdTE2IGRiX2lkKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+IC0JaTkxNV9yZWdfdCBkcmJyZWcgPSBHRU44X0RS QlJFR0woZGJfaWQpOwo+IC0JdWludDMyX3QgdmFsdWUgPSBJOTE1X1JFQUQoZHJicmVnKTsKPiAt CWJvb2wgZW5hYmxlZCA9ICh2YWx1ZSAmIEdVQ19ET09SQkVMTF9FTkFCTEVEKSAhPSAwOwo+IC0J Ym9vbCBleHBlY3RlZCA9IHRlc3RfYml0KGRiX2lkLCBndWMtPmRvb3JiZWxsX2JpdG1hcCk7Cj4g Kwl1MzIgZHJicmVnbDsKPiArCWJvb2wgdmFsaWQ7Cj4KPiAtCWlmIChlbmFibGVkID09IGV4cGVj dGVkKQo+ICsJR0VNX0JVR19PTihkYl9pZCA+PSBHVUNfRE9PUkJFTExfSU5WQUxJRCk7Cj4gKwo+ ICsJZHJicmVnbCA9IEk5MTVfUkVBRChHRU44X0RSQlJFR0woZGJfaWQpKTsKPiArCXZhbGlkID0g ZHJicmVnbCAmIEdFTjhfRFJCX1ZBTElEOwo+ICsKPiArCWlmICh0ZXN0X2JpdChkYl9pZCwgZ3Vj LT5kb29yYmVsbF9iaXRtYXApID09IHZhbGlkKQo+ICAJCXJldHVybiB0cnVlOwo+Cj4gLQlEUk1f REVCVUdfRFJJVkVSKCJEb29yYmVsbCAlZCAocmVnIDB4JXgpIDB4JXgsIHNob3VsZCBiZSAlc1xu IiwKPiAtCQkJIGRiX2lkLCBkcmJyZWcucmVnLCB2YWx1ZSwKPiAtCQkJIGV4cGVjdGVkID8gImFj dGl2ZSIgOiAiaW5hY3RpdmUiKTsKPiArCURSTV9ERUJVR19EUklWRVIoIkRvb3JiZWxsICVkIGhh cyB1bmV4cGVjdGVkIHN0YXRlICgweCV4KTogdmFsaWQ9JXNcbiIsCj4gKwkJCSBkYl9pZCwgZHJi cmVnbCwgeWVzbm8odmFsaWQpKTsKPgo+ICAJcmV0dXJuIGZhbHNlOwo+ICB9Cj4KPiArc3RhdGlj IGludCBfX3Jlc2V0X2Rvb3JiZWxsKHN0cnVjdCBpOTE1X2d1Y19jbGllbnQqIGNsaWVudCwgdTE2 IGRiX2lkKQoKVGhpcyByZXNldCBvbmx5IHdvcmtzIGlmIHRoZSBHdUMgRlcgdGhpbmtzIHRoYXQg dGhlIGRvb3JiZWxsIGlzIAp1bmFzc2lnbmVkLCBvdGhlcndpc2UgdGhlIEFMTE9DQVRFX0RPT1JC RUxMIGFjdGlvbiB3aWxsIGZhaWwuIFdlIApjdXJyZW50bHkgb25seSB1c2UgaXQgdG8gcmVzZXQg dGhlIGRvb3JiZWxsIEhXIHN0YXR1cyBhZnRlciByZXNldHRpbmcgCkd1QyBhbmQgcmVsb2FkaW5n IHRoZSBGVyBzbyBpdCBpcyBvaywgYnV0IHdlIGNvdWxkIHVzZSBhIGNvbW1lbnQgdG8gCmV4cGxh aW4gdGhlIGxpbWl0YXRpb24gb2YgdGhpcyByZXNldC4KClRoZSBwYXRjaCBsb29rcyBmdW5jdGlv bmFsbHkgb2ssIHNvIHdpdGggdGhlIG1pbm9yIGNvbW1lbnRzIGFkZHJlc3NlZDoKClJldmlld2Vk LWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwu Y29tPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==