From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 15/40] drm/i915: Apply an execution_mask to the virtual_engine Date: Wed, 8 May 2019 11:13:32 +0100 Message-ID: <295baf29-7b55-837e-d221-e54c67903a32@linux.intel.com> References: <20190508080704.24223-1-chris@chris-wilson.co.uk> <20190508080704.24223-15-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9DB2789159 for ; Wed, 8 May 2019 10:13:34 +0000 (UTC) In-Reply-To: <20190508080704.24223-15-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA4LzA1LzIwMTkgMDk6MDYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBbGxvdyB0aGUgdXNl ciB0byBkaXJlY3Qgd2hpY2ggcGh5c2ljYWwgZW5naW5lcyBvZiB0aGUgdmlydHVhbCBlbmdpbmUK PiB0aGV5IHdpc2ggdG8gZXhlY3V0ZSBvbmUsIGFzIHNvbWV0aW1lcyBpdCBpcyBuZWNlc3Nhcnkg dG8gb3ZlcnJpZGUgdGhlCj4gbG9hZCBiYWxhbmNpbmcgYWxnb3JpdGhtLgo+IAo+IHYyOiBPbmx5 IGtpY2sgdGhlIHZpcnR1YWwgZW5naW5lcyBvbiBjb250ZXh0LW91dCBpZiByZXF1aXJlZAo+IAo+ IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+ IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgfCAgNjcgKysrKysrKysrKysr Kwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMgfCAxMzEgKysrKysr KysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmMgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAg fCAgIDMgKwo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAyMDIgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4gaW5kZXggYmMzODhkZjM5ODAyLi42OTg0OWZmYjlj ODIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+IEBAIC01NTAsNiArNTUw LDE1IEBAIGV4ZWNsaXN0c19jb250ZXh0X3NjaGVkdWxlX2luKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQo+ICAgCXJxLT5od19jb250ZXh0LT5hY3RpdmUgPSBycS0+ZW5naW5lOwo+ICAgfQo+ICAg Cj4gK3N0YXRpYyB2b2lkIGtpY2tfc2libGluZ3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4g K3sKPiArCXN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUgPSB0b192aXJ0dWFsX2VuZ2luZShycS0+ aHdfY29udGV4dC0+ZW5naW5lKTsKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKm5leHQgPSBSRUFE X09OQ0UodmUtPnJlcXVlc3QpOwo+ICsKPiArCWlmIChuZXh0ICYmIG5leHQtPmV4ZWN1dGlvbl9t YXNrICYgfnJxLT5leGVjdXRpb25fbWFzaykKPiArCQl0YXNrbGV0X3NjaGVkdWxlKCZ2ZS0+YmFz ZS5leGVjbGlzdHMudGFza2xldCk7Cj4gK30KPiArCj4gICBzdGF0aWMgaW5saW5lIHZvaWQKPiAg IGV4ZWNsaXN0c19jb250ZXh0X3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwg dW5zaWduZWQgbG9uZyBzdGF0dXMpCj4gICB7Cj4gQEAgLTU1Nyw2ICs1NjYsMTggQEAgZXhlY2xp c3RzX2NvbnRleHRfc2NoZWR1bGVfb3V0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25l ZCBsb25nIHN0YXR1cykKPiAgIAlpbnRlbF9lbmdpbmVfY29udGV4dF9vdXQocnEtPmVuZ2luZSk7 Cj4gICAJZXhlY2xpc3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShycSwgc3RhdHVzKTsKPiAgIAl0 cmFjZV9pOTE1X3JlcXVlc3Rfb3V0KHJxKTsKPiArCj4gKwkvKgo+ICsJICogSWYgdGhpcyBpcyBw YXJ0IG9mIGEgdmlydHVhbCBlbmdpbmUsIGl0cyBuZXh0IHJlcXVlc3QgbWF5IGhhdmUKPiArCSAq IGJlZW4gYmxvY2tlZCB3YWl0aW5nIGZvciBhY2Nlc3MgdG8gdGhlIGFjdGl2ZSBjb250ZXh0LiBX ZSBoYXZlCj4gKwkgKiB0byBraWNrIGFsbCB0aGUgc2libGluZ3MgYWdhaW4gaW4gY2FzZSB3ZSBu ZWVkIHRvIHN3aXRjaCAoZS5nLgo+ICsJICogdGhlIG5leHQgcmVxdWVzdCBpcyBub3QgcnVubmFi bGUgb24gdGhpcyBlbmdpbmUpLiBIb3BlZnVsbHksCj4gKwkgKiB3ZSB3aWxsIGFscmVhZHkgaGF2 ZSBzdWJtaXR0ZWQgdGhlIG5leHQgcmVxdWVzdCBiZWZvcmUgdGhlCj4gKwkgKiB0YXNrbGV0IHJ1 bnMgYW5kIGRvIG5vdCBuZWVkIHRvIHJlYnVpbGQgZWFjaCB2aXJ0dWFsIHRyZWUKPiArCSAqIGFu ZCBraWNrIGV2ZXJ5b25lIGFnYWluLgo+ICsJICovCj4gKwlpZiAocnEtPmVuZ2luZSAhPSBycS0+ aHdfY29udGV4dC0+ZW5naW5lKQo+ICsJCWtpY2tfc2libGluZ3MocnEpOwo+ICAgfQo+ICAgCj4g ICBzdGF0aWMgdTY0IGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSkKPiBAQCAtNzg3LDYgKzgwOCw5IEBAIHN0YXRpYyBib29sIHZpcnR1YWxfbWF0Y2hlcyhj b25zdCBzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKnZlLAo+ICAgewo+ICAgCWNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmFjdGl2ZTsKPiAgIAo+ICsJaWYgKCEocnEtPmV4ZWN1dGlvbl9tYXNr ICYgZW5naW5lLT5tYXNrKSkgLyogV2UgcGVla2VkIHRvbyBzb29uISAqLwo+ICsJCXJldHVybiBm YWxzZTsKPiArCj4gICAJLyoKPiAgIAkgKiBXZSB0cmFjayB3aGVuIHRoZSBIVyBoYXMgY29tcGxl dGVkIHNhdmluZyB0aGUgY29udGV4dCBpbWFnZQo+ICAgCSAqIChpLmUuIHdoZW4gd2UgaGF2ZSBz ZWVuIHRoZSBmaW5hbCBDUyBldmVudCBzd2l0Y2hpbmcgb3V0IG9mCj4gQEAgLTMxNTksMTIgKzMx ODMsNDQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyB2aXJ0dWFsX2Nv bnRleHRfb3BzID0gewo+ICAgCS5kZXN0cm95ID0gdmlydHVhbF9jb250ZXh0X2Rlc3Ryb3ksCj4g ICB9Owo+ICAgCj4gK3N0YXRpYyBpbnRlbF9lbmdpbmVfbWFza190IHZpcnR1YWxfc3VibWlzc2lv bl9tYXNrKHN0cnVjdCB2aXJ0dWFsX2VuZ2luZSAqdmUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxOwo+ICsJaW50ZWxfZW5naW5lX21hc2tfdCBtYXNrOwo+ICsKPiArCXJxID0gUkVB RF9PTkNFKHZlLT5yZXF1ZXN0KTsKPiArCWlmICghcnEpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJ LyogVGhlIHJxIGlzIHJlYWR5IGZvciBzdWJtaXNzaW9uOyBycS0+ZXhlY3V0aW9uX21hc2sgaXMg bm93IHN0YWJsZS4gKi8KPiArCW1hc2sgPSBycS0+ZXhlY3V0aW9uX21hc2s7Cj4gKwlpZiAodW5s aWtlbHkoIW1hc2spKSB7Cj4gKwkJLyogSW52YWxpZCBzZWxlY3Rpb24sIHN1Ym1pdCB0byBhIHJh bmRvbSBlbmdpbmUgaW4gZXJyb3IgKi8KPiArCQlpOTE1X3JlcXVlc3Rfc2tpcChycSwgLUVOT0RF Vik7Cj4gKwkJbWFzayA9IHZlLT5zaWJsaW5nc1swXS0+bWFzazsKPiArCX0KPiArCj4gKwlHRU1f VFJBQ0UoIiVzOiBycT0lbGx4OiVsbGQsIG1hc2s9JXgsIHByaW89JWRcbiIsCj4gKwkJICB2ZS0+ YmFzZS5uYW1lLAo+ICsJCSAgcnEtPmZlbmNlLmNvbnRleHQsIHJxLT5mZW5jZS5zZXFubywKPiAr CQkgIG1hc2ssIHZlLT5iYXNlLmV4ZWNsaXN0cy5xdWV1ZV9wcmlvcml0eV9oaW50KTsKPiArCj4g KwlyZXR1cm4gbWFzazsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIHZpcnR1YWxfc3VibWlzc2lv bl90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKPiAgIHsKPiAgIAlzdHJ1Y3QgdmlydHVhbF9l bmdpbmUgKiBjb25zdCB2ZSA9IChzdHJ1Y3QgdmlydHVhbF9lbmdpbmUgKilkYXRhOwo+ICAgCWNv bnN0IGludCBwcmlvID0gdmUtPmJhc2UuZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5X2hpbnQ7Cj4g KwlpbnRlbF9lbmdpbmVfbWFza190IG1hc2s7Cj4gICAJdW5zaWduZWQgaW50IG47Cj4gICAKPiAr CXJjdV9yZWFkX2xvY2soKTsKPiArCW1hc2sgPSB2aXJ0dWFsX3N1Ym1pc3Npb25fbWFzayh2ZSk7 Cj4gKwlyY3VfcmVhZF91bmxvY2soKTsKPiArCWlmICh1bmxpa2VseSghbWFzaykpCj4gKwkJcmV0 dXJuOwo+ICsKPiAgIAlsb2NhbF9pcnFfZGlzYWJsZSgpOwo+ICAgCWZvciAobiA9IDA7IFJFQURf T05DRSh2ZS0+cmVxdWVzdCkgJiYgbiA8IHZlLT5udW1fc2libGluZ3M7IG4rKykgewo+ICAgCQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWJsaW5nID0gdmUtPnNpYmxpbmdzW25dOwo+IEBAIC0z MTcyLDYgKzMyMjgsMTcgQEAgc3RhdGljIHZvaWQgdmlydHVhbF9zdWJtaXNzaW9uX3Rhc2tsZXQo dW5zaWduZWQgbG9uZyBkYXRhKQo+ICAgCQlzdHJ1Y3QgcmJfbm9kZSAqKnBhcmVudCwgKnJiOwo+ ICAgCQlib29sIGZpcnN0Owo+ICAgCj4gKwkJaWYgKHVubGlrZWx5KCEobWFzayAmIHNpYmxpbmct Pm1hc2spKSkgewo+ICsJCQlpZiAoIVJCX0VNUFRZX05PREUoJm5vZGUtPnJiKSkgewo+ICsJCQkJ c3Bpbl9sb2NrKCZzaWJsaW5nLT50aW1lbGluZS5sb2NrKTsKPiArCQkJCXJiX2VyYXNlX2NhY2hl ZCgmbm9kZS0+cmIsCj4gKwkJCQkJCSZzaWJsaW5nLT5leGVjbGlzdHMudmlydHVhbCk7Cj4gKwkJ CQlSQl9DTEVBUl9OT0RFKCZub2RlLT5yYik7Cj4gKwkJCQlzcGluX3VubG9jaygmc2libGluZy0+ dGltZWxpbmUubG9jayk7Cj4gKwkJCX0KPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiAgIAkJ c3Bpbl9sb2NrKCZzaWJsaW5nLT50aW1lbGluZS5sb2NrKTsKPiAgIAo+ICAgCQlpZiAoIVJCX0VN UFRZX05PREUoJm5vZGUtPnJiKSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xy Yy5jCj4gaW5kZXggY2NjMGI2MzUwMTIzLi4yZWY3NjM5ZWU2NjUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+IEBAIC0xNDg5LDYgKzE0ODksMTM2IEBAIHN0YXRp YyBpbnQgbGl2ZV92aXJ0dWFsX2VuZ2luZSh2b2lkICphcmcpCj4gICAJcmV0dXJuIGVycjsKPiAg IH0KPiAgIAo+ICtzdGF0aWMgaW50IG1hc2tfdmlydHVhbF9lbmdpbmUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoqc2li bGluZ3MsCj4gKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgbnNpYmxpbmcpCj4gK3sKPiArCXN0cnVj dCBpOTE1X3JlcXVlc3QgKnJlcXVlc3RbTUFYX0VOR0lORV9JTlNUQU5DRSArIDFdOwo+ICsJc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICp2ZTsK PiArCXN0cnVjdCBpZ3RfbGl2ZV90ZXN0IHQ7Cj4gKwl1bnNpZ25lZCBpbnQgbjsKPiArCWludCBl cnI7Cj4gKwo+ICsJLyoKPiArCSAqIENoZWNrIHRoYXQgYnkgc2V0dGluZyB0aGUgZXhlY3V0aW9u IG1hc2sgb24gYSByZXF1ZXN0LCB3ZSBjYW4KPiArCSAqIHJlc3RyaWN0IGl0IHRvIG91ciBkZXNp cmVkIGVuZ2luZSB3aXRoaW4gdGhlIHZpcnR1YWwgZW5naW5lLgo+ICsJICovCj4gKwo+ICsJY3R4 ID0ga2VybmVsX2NvbnRleHQoaTkxNSk7Cj4gKwlpZiAoIWN0eCkKPiArCQlyZXR1cm4gLUVOT01F TTsKPiArCj4gKwl2ZSA9IGludGVsX2V4ZWNsaXN0c19jcmVhdGVfdmlydHVhbChjdHgsIHNpYmxp bmdzLCBuc2libGluZyk7Cj4gKwlpZiAoSVNfRVJSKHZlKSkgewo+ICsJCWVyciA9IFBUUl9FUlIo dmUpOwo+ICsJCWdvdG8gb3V0X2Nsb3NlOwo+ICsJfQo+ICsKPiArCWVyciA9IGludGVsX2NvbnRl eHRfcGluKHZlKTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBvdXRfcHV0Owo+ICsKPiArCWVyciA9 IGlndF9saXZlX3Rlc3RfYmVnaW4oJnQsIGk5MTUsIF9fZnVuY19fLCB2ZS0+ZW5naW5lLT5uYW1l KTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBvdXRfdW5waW47Cj4gKwo+ICsJZm9yIChuID0gMDsg biA8IG5zaWJsaW5nOyBuKyspIHsKPiArCQlyZXF1ZXN0W25dID0gaTkxNV9yZXF1ZXN0X2NyZWF0 ZSh2ZSk7Cj4gKwkJaWYgKElTX0VSUihyZXF1ZXN0KSkgewo+ICsJCQllcnIgPSBQVFJfRVJSKHJl cXVlc3QpOwo+ICsJCQluc2libGluZyA9IG47Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCj4g KwkJLyogUmV2ZXJzZSBvcmRlciBhcyBpdCdzIG1vcmUgbGlrZWx5IHRvIGJlIHVubmF0dXJhbCAq Lwo+ICsJCXJlcXVlc3Rbbl0tPmV4ZWN1dGlvbl9tYXNrID0gc2libGluZ3NbbnNpYmxpbmcgLSBu IC0gMV0tPm1hc2s7Cj4gKwo+ICsJCWk5MTVfcmVxdWVzdF9nZXQocmVxdWVzdFtuXSk7Cj4gKwkJ aTkxNV9yZXF1ZXN0X2FkZChyZXF1ZXN0W25dKTsKPiArCX0KPiArCj4gKwlmb3IgKG4gPSAwOyBu IDwgbnNpYmxpbmc7IG4rKykgewo+ICsJCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChyZXF1ZXN0W25d LCBJOTE1X1dBSVRfTE9DS0VELCBIWiAvIDEwKSA8IDApIHsKPiArCQkJcHJfZXJyKCIlcyglcyk6 IHdhaXQgZm9yICVsbHg6JWxsZCB0aW1lZCBvdXRcbiIsCj4gKwkJCSAgICAgICBfX2Z1bmNfXywg dmUtPmVuZ2luZS0+bmFtZSwKPiArCQkJICAgICAgIHJlcXVlc3Rbbl0tPmZlbmNlLmNvbnRleHQs Cj4gKwkJCSAgICAgICByZXF1ZXN0W25dLT5mZW5jZS5zZXFubyk7Cj4gKwo+ICsJCQlHRU1fVFJB Q0UoIiVzKCVzKSBmYWlsZWQgYXQgcmVxdWVzdCAlbGx4OiVsbGRcbiIsCj4gKwkJCQkgIF9fZnVu Y19fLCB2ZS0+ZW5naW5lLT5uYW1lLAo+ICsJCQkJICByZXF1ZXN0W25dLT5mZW5jZS5jb250ZXh0 LAo+ICsJCQkJICByZXF1ZXN0W25dLT5mZW5jZS5zZXFubyk7Cj4gKwkJCUdFTV9UUkFDRV9EVU1Q KCk7Cj4gKwkJCWk5MTVfZ2VtX3NldF93ZWRnZWQoaTkxNSk7Cj4gKwkJCWVyciA9IC1FSU87Cj4g KwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCj4gKwkJaWYgKHJlcXVlc3Rbbl0tPmVuZ2luZSAhPSBz aWJsaW5nc1tuc2libGluZyAtIG4gLSAxXSkgewo+ICsJCQlwcl9lcnIoIkV4ZWN1dGVkIG9uIHdy b25nIHNpYmxpbmcgJyVzJywgZXhwZWN0ZWQgJyVzJ1xuIiwKPiArCQkJICAgICAgIHJlcXVlc3Rb bl0tPmVuZ2luZS0+bmFtZSwKPiArCQkJICAgICAgIHNpYmxpbmdzW25zaWJsaW5nIC0gbiAtIDFd LT5uYW1lKTsKPiArCQkJZXJyID0gLUVJTlZBTDsKPiArCQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsJ fQo+ICsKPiArCWVyciA9IGlndF9saXZlX3Rlc3RfZW5kKCZ0KTsKPiArCWlmIChlcnIpCj4gKwkJ Z290byBvdXQ7Cj4gKwo+ICtvdXQ6Cj4gKwlpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9X QUlUX0xPQ0tFRCkpCj4gKwkJZXJyID0gLUVJTzsKPiArCj4gKwlmb3IgKG4gPSAwOyBuIDwgbnNp Ymxpbmc7IG4rKykKPiArCQlpOTE1X3JlcXVlc3RfcHV0KHJlcXVlc3Rbbl0pOwo+ICsKPiArb3V0 X3VucGluOgo+ICsJaW50ZWxfY29udGV4dF91bnBpbih2ZSk7Cj4gK291dF9wdXQ6Cj4gKwlpbnRl bF9jb250ZXh0X3B1dCh2ZSk7Cj4gK291dF9jbG9zZToKPiArCWtlcm5lbF9jb250ZXh0X2Nsb3Nl KGN0eCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGxpdmVfdmlydHVh bF9tYXNrKHZvaWQgKmFyZykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUg PSBhcmc7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWJsaW5nc1tNQVhfRU5HSU5FX0lO U1RBTkNFICsgMV07Cj4gKwl1bnNpZ25lZCBpbnQgY2xhc3MsIGluc3Q7Cj4gKwlpbnQgZXJyID0g MDsKPiArCj4gKwlpZiAoVVNFU19HVUNfU1VCTUlTU0lPTihpOTE1KSkKPiArCQlyZXR1cm4gMDsK PiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwlmb3Ig KGNsYXNzID0gMDsgY2xhc3MgPD0gTUFYX0VOR0lORV9DTEFTUzsgY2xhc3MrKykgewo+ICsJCXVu c2lnbmVkIGludCBuc2libGluZzsKPiArCj4gKwkJbnNpYmxpbmcgPSAwOwo+ICsJCWZvciAoaW5z dCA9IDA7IGluc3QgPD0gTUFYX0VOR0lORV9JTlNUQU5DRTsgaW5zdCsrKSB7Cj4gKwkJCWlmICgh aTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0XSkKPiArCQkJCWJyZWFrOwo+ICsKPiArCQkJ c2libGluZ3NbbnNpYmxpbmcrK10gPSBpOTE1LT5lbmdpbmVfY2xhc3NbY2xhc3NdW2luc3RdOwo+ ICsJCX0KPiArCQlpZiAobnNpYmxpbmcgPCAyKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJZXJy ID0gbWFza192aXJ0dWFsX2VuZ2luZShpOTE1LCBzaWJsaW5ncywgbnNpYmxpbmcpOwo+ICsJCWlm IChlcnIpCj4gKwkJCWdvdG8gb3V0X3VubG9jazsKPiArCX0KPiArCj4gK291dF91bmxvY2s6Cj4g KwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJcmV0dXJuIGVycjsK PiArfQo+ICsKPiAgIGludCBpbnRlbF9leGVjbGlzdHNfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gICAJc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X3N1YnRlc3QgdGVzdHNbXSA9IHsKPiBAQCAtMTUwMiw2ICsxNjMyLDcgQEAgaW50IGludGVsX2V4 ZWNsaXN0c19saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAg IAkJU1VCVEVTVChsaXZlX3ByZWVtcHRfaGFuZyksCj4gICAJCVNVQlRFU1QobGl2ZV9wcmVlbXB0 X3Ntb2tlKSwKPiAgIAkJU1VCVEVTVChsaXZlX3ZpcnR1YWxfZW5naW5lKSwKPiArCQlTVUJURVNU KGxpdmVfdmlydHVhbF9tYXNrKSwKPiAgIAl9Owo+ICAgCj4gICAJaWYgKCFIQVNfRVhFQ0xJU1RT KGk5MTUpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXggY2JlNDA5OGNk NmVjLi4zYmVjZWQ3ZGFhMTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+ IEBAIC02OTksNiArNjk5LDcgQEAgX19pOTE1X3JlcXVlc3RfY3JlYXRlKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSwgZ2ZwX3QgZ2ZwKQo+ICAgCXJxLT5iYXRjaCA9IE5VTEw7Cj4gICAJcnEtPmNh cHR1cmVfbGlzdCA9IE5VTEw7Cj4gICAJcnEtPndhaXRib29zdCA9IGZhbHNlOwo+ICsJcnEtPmV4 ZWN1dGlvbl9tYXNrID0gQUxMX0VOR0lORVM7Cj4gICAKPiAgIAlJTklUX0xJU1RfSEVBRCgmcnEt PmFjdGl2ZV9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcnEtPmV4ZWN1dGVfY2IpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gaW5kZXggODAyNWE4OWI1OTk5Li5kN2Y5YjIx OTQ1NjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IEBAIC0yOCw2ICsy OCw4IEBACj4gICAjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLmg+Cj4gICAjaW5jbHVkZSA8bGlu dXgvbG9ja2RlcC5oPgo+ICAgCj4gKyNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCIK PiArCj4gICAjaW5jbHVkZSAiaTkxNV9nZW0uaCIKPiAgICNpbmNsdWRlICJpOTE1X3NjaGVkdWxl ci5oIgo+ICAgI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiBAQCAtMTU2LDYgKzE1OCw3IEBA IHN0cnVjdCBpOTE1X3JlcXVlc3Qgewo+ICAgCSAqLwo+ICAgCXN0cnVjdCBpOTE1X3NjaGVkX25v ZGUgc2NoZWQ7Cj4gICAJc3RydWN0IGk5MTVfZGVwZW5kZW5jeSBkZXA7Cj4gKwlpbnRlbF9lbmdp bmVfbWFza190IGV4ZWN1dGlvbl9tYXNrOwo+ICAgCj4gICAJLyoKPiAgIAkgKiBBIGNvbnZlbmll bmNlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgYnJlYWRjcnVtYiB2YWx1ZSBzdG9yZWQgaW4KPiAK ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoK UmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZng=