From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 19/39] drm/i915: Added scheduler support to __wait_request() calls Date: Tue, 21 Jul 2015 11:27:17 +0200 Message-ID: <20150721092717.GF16722@phenom.ffwll.local> References: <1437143628-6329-1-git-send-email-John.C.Harrison@Intel.com> <1437143628-6329-20-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f176.google.com (mail-wi0-f176.google.com [209.85.212.176]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE5F17206E for ; Tue, 21 Jul 2015 02:24:38 -0700 (PDT) Received: by wicmv11 with SMTP id mv11so36034682wic.0 for ; Tue, 21 Jul 2015 02:24:37 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1437143628-6329-20-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John.C.Harrison@Intel.com Cc: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdWwgMTcsIDIwMTUgYXQgMDM6MzM6MjhQTSArMDEwMCwgSm9obi5DLkhhcnJpc29u QEludGVsLmNvbSB3cm90ZToKPiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25A SW50ZWwuY29tPgo+IAo+IFRoZSBzY2hlZHVsZXIgY2FuIGNhdXNlIGJhdGNoIGJ1ZmZlcnMsIGFu ZCBoZW5jZSByZXF1ZXN0cywgdG8gYmUgc3VibWl0dGVkIHRvCj4gdGhlIHJpbmcgb3V0IG9mIG9y ZGVyIGFuZCBhc3luY2hyb25vdXNseSB0byB0aGVpciBzdWJtaXNzaW9uIHRvIHRoZSBkcml2ZXIu IFRodXMKPiBhdCB0aGUgcG9pbnQgb2Ygd2FpdGluZyBmb3IgdGhlIGNvbXBsZXRpb24gb2YgYSBn aXZlbiByZXF1ZXN0LCBpdCBpcyBub3QgZXZlbgo+IGd1YXJhbnRlZWQgdGhhdCB0aGUgcmVxdWVz dCBoYXMgYWN0dWFsbHkgYmVlbiBzZW50IHRvIHRoZSBoYXJkd2FyZSB5ZXQuIEV2ZW4gaXQKPiBp cyBoYXMgYmVlbiBzZW50LCBpdCBpcyBwb3NzaWJsZSB0aGF0IGl0IGNvdWxkIGJlIHByZS1lbXB0 ZWQgYW5kIHRodXMgJ3Vuc2VudCcuCj4gCj4gVGhpcyBtZWFucyB0aGF0IGl0IGlzIG5lY2Vzc2Fy eSB0byBiZSBhYmxlIHRvIHN1Ym1pdCByZXF1ZXN0cyB0byB0aGUgaGFyZHdhcmUKPiBkdXJpbmcg dGhlIHdhaXQgY2FsbCBpdHNlbGYuIFVuZm9ydHVuYXRlbHksIHdoaWxlIHNvbWUgY2FsbGVycyBv Zgo+IF9fd2FpdF9yZXF1ZXN0KCkgcmVsZWFzZSB0aGUgbXV0ZXggbG9jayBmaXJzdCwgb3RoZXJz IGRvIG5vdCAoYW5kIGFwcGFyZW50bHkgY2FuCj4gbm90KS4gSGVuY2UgdGhlcmUgaXMgdGhlIGFi aWxpdHkgdG8gZGVhZGxvY2sgYXMgdGhlIHdhaXQgc3RhbGxzIGZvciBzdWJtaXNzaW9uCj4gYnV0 IHRoZSBhc3luY2hyb25vdXMgc3VibWlzc2lvbiBpcyBzdGFsbGVkIGZvciB0aGUgbXV0ZXggbG9j ay4KPiAKPiBUaGlzIGNoYW5nZSBob29rcyB0aGUgc2NoZWR1bGVyIGluIHRvIHRoZSBfX3dhaXRf cmVxdWVzdCgpIGNvZGUgdG8gZW5zdXJlCj4gY29ycmVjdCBiZWhhdmlvdXIuIFRoYXQgaXMsIGZs dXNoIHRoZSB0YXJnZXQgYmF0Y2ggYnVmZmVyIHRocm91Z2ggdG8gdGhlCj4gaGFyZHdhcmUgYW5k IGRvIG5vdCBkZWFkbG9jayB3YWl0aW5nIGZvciBzb21ldGhpbmcgdGhhdCBjYW5ub3QgY3VycmVu dGx5IGJlCj4gc3VibWl0dGVkLiBJbnN0ZWFkLCB0aGUgd2FpdCBjYWxsIG11c3QgcmV0dXJuIEVB R0FJTiBhdCBsZWFzdCBhcyBmYXIgYmFjayBhcwo+IG5lY2Vzc2FyeSB0byByZWxlYXNlIHRoZSBt dXRleCBsb2NrIGFuZCBhbGxvdyB0aGUgc2NoZWR1bGVyJ3MgYXN5bmNocm9ub3VzCj4gcHJvY2Vz c2luZyB0byBnZXQgaW4gYW5kIGhhbmRsZSB0aGUgcHJlLWVtcHRpb24gb3BlcmF0aW9uIGFuZCBl dmVudHVhbGx5Cj4gKHJlLSlzdWJtaXQgdGhlIHdvcmsuCgpJIGV4cGVjdCB0aGlzIHRvIGJyZWFr IHRoZSBzaHJpbmtlciBsb2dpYyBhbmQgdGhhdCBtZWFucyBmaXhpbmcgdXAgYWxsIHRoZQpjYWxs ZXJzIHRoYXQgYmluZCBvYmplY3RzIGludG8gZ2d0dCwgbGlrZSB5b3UgYWxyZWFkeSBkbyAod2Vs bCBjb21tZW50CmFib3V0KSBmb3IgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlci4gQW5kIGp1c3QgZG9p bmcgLUVBR0FJTiBzcGlubmluZyBpc24ndApwcmV0dHkgZWl0aGVyLgoKSW5zdGVhZCB3ZSBuZWVk IGEgcHJvcGVyIGxvY2tpbmcgc2NoZW1lIGhlcmUgc28gdGhhdCB0aGUgc2NoZWR1bGVyIGNhbiBy dW4Kd2hpbGUgdGhlIHN0cnVjdCBtdXRleCBpcyBoZWxkLiBleGVjbGlzdCBzdWJtaXNzaW9uIGhh ZCB0aGUgc2FtZQpyZXF1aXJlbWVudCBhbmQgaGVuY2UgaGFzIGdyb3duIGl0cyBvd24gbG9ja3Mu CgpOb3RlIHRoYXQgdGhlcmUncyBjdXJyZW50bHkgb25lIHR5cGUgb2YgbWVtb3J5IHRoYXQgd2Ug Y2FuIGV2aWN0IHdoaWNoIHRoZQpzaHJpbmtlciBkb2Vzbid0IHRha2UgY2FyZSBvZiwgYW5kIHRo YXQncyB0by1iZS11bnBpbm5lZCBidWZmZXJzIGFmdGVyCnBhZ2VmbGlwcy4gV2UncmUgd29ya2lu ZyB0byBmaXggdGhhdC4KLURhbmllbAoKPiAKPiBDaGFuZ2UtSWQ6IEkzMWZlNmJjN2UzOGY2ZmZk ZDg0M2ZjYWUxNmU3Y2M4YjFlNTJhOTMxCj4gRm9yOiBWSVotMTU4Nwo+IFNpZ25lZC1vZmYtYnk6 IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAzICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDM3ICsrKysrKysrKysrLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgICB8IDkxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5o ICAgfCAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICB8ICAz ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8ICAyICstCj4g IDYgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDJiM2ZhYjYuLmU5ZTA3MzYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjk3Miw3ICsyOTcyLDggQEAgaW50IF9faTkxNV93 YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJCXVuc2ln bmVkIHJlc2V0X2NvdW50ZXIsCj4gIAkJCWJvb2wgaW50ZXJydXB0aWJsZSwKPiAgCQkJczY0ICp0 aW1lb3V0LAo+IC0JCQlzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKTsKPiArCQkJc3RydWN0 IGludGVsX3Jwc19jbGllbnQgKnJwcywKPiArCQkJYm9vbCBpc19sb2NrZWQpOwo+ICBpbnQgX19t dXN0X2NoZWNrIGk5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKTsKPiAgaW50IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBz dHJ1Y3Qgdm1fZmF1bHQgKnZtZik7Cj4gIGludCBfX211c3RfY2hlY2sKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBpbmRleCBjYjVhZjVkLi5mNzEzY2RhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gQEAgLTEyMTksNyArMTIxOSw4IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCQl1bnNpZ25lZCByZXNldF9jb3Vu dGVyLAo+ICAJCQlib29sIGludGVycnVwdGlibGUsCj4gIAkJCXM2NCAqdGltZW91dCwKPiAtCQkJ c3RydWN0IGludGVsX3Jwc19jbGllbnQgKnJwcykKPiArCQkJc3RydWN0IGludGVsX3Jwc19jbGll bnQgKnJwcywKPiArCQkJYm9vbCBpc19sb2NrZWQpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcgPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9yaW5nKHJlcSk7Cj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+IEBAIC0xMjI5LDggKzEyMzAsMTAgQEAgaW50 IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4g IAlERUZJTkVfV0FJVCh3YWl0KTsKPiAgCXVuc2lnbmVkIGxvbmcgdGltZW91dF9leHBpcmU7Cj4g IAlzNjQgYmVmb3JlLCBub3c7Cj4gLQlpbnQgcmV0Owo+ICsJaW50IHJldCA9IDA7Cj4gKwlib29s ICAgIGJ1c3k7Cj4gIAo+ICsJbWlnaHRfc2xlZXAoKTsKPiAgCVdBUk4oIWludGVsX2lycXNfZW5h YmxlZChkZXZfcHJpdiksICJJUlFzIGRpc2FibGVkIik7Cj4gIAo+ICAJaWYgKGxpc3RfZW1wdHko JnJlcS0+bGlzdCkpCj4gQEAgLTEyODEsNiArMTI4NCwyMiBAQCBpbnQgX19pOTE1X3dhaXRfcmVx dWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJYnJlYWs7Cj4gIAkJ fQo+ICAKPiArCQlpZiAoaXNfbG9ja2VkKSB7Cj4gKwkJCS8qIElmIHRoaXMgcmVxdWVzdCBpcyBi ZWluZyBwcm9jZXNzZWQgYnkgdGhlIHNjaGVkdWxlcgo+ICsJCQkgKiB0aGVuIGl0IGlzIHVuc2Fm ZSB0byBzbGVlcCB3aXRoIHRoZSBtdXRleCBsb2NrIGhlbGQKPiArCQkJICogYXMgdGhlIHNjaGVk dWxlciBtYXkgcmVxdWlyZSB0aGUgbG9jayBpbiBvcmRlciB0bwo+ICsJCQkgKiBwcm9ncmVzcyB0 aGUgcmVxdWVzdC4gKi8KPiArCQkJaWYgKGk5MTVfc2NoZWR1bGVyX2lzX3JlcXVlc3RfdHJhY2tl ZChyZXEsIE5VTEwsICZidXN5KSkgewo+ICsJCQkJaWYgKGJ1c3kpIHsKPiArCQkJCQlyZXQgPSAt RUFHQUlOOwo+ICsJCQkJCWJyZWFrOwo+ICsJCQkJfQo+ICsJCQl9Cj4gKwo+ICsJCQkvKiBJZiB0 aGUgcmVxdWVzdCBpcyBub3QgdHJhY2tlZCBieSB0aGUgc2NoZWR1bGVyIHRoZW4gdGhlCj4gKwkJ CSAqIHJlZ3VsYXIgdGVzdCBjYW4gYmUgZG9uZS4gKi8KPiArCQl9Cj4gKwo+ICAJCWlmIChpOTE1 X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKSB7Cj4gIAkJCXJldCA9IDA7Cj4gIAkJCWJyZWFr Owo+IEBAIC0xNDUyLDEzICsxNDcxLDE3IEBAIGk5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAKPiAgCUJVR19PTighbXV0ZXhfaXNfbG9ja2VkKCZk ZXYtPnN0cnVjdF9tdXRleCkpOwo+ICAKPiArCXJldCA9IGk5MTVfc2NoZWR1bGVyX2ZsdXNoX3Jl cXVlc3QocmVxLCB0cnVlKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ ICAJcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2VkZ2UoJmRldl9wcml2LT5ncHVfZXJyb3IsIGludGVy cnVwdGlibGUpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCXJldCA9IF9f aTkxNV93YWl0X3JlcXVlc3QocmVxLAo+ICAJCQkJICBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPmdw dV9lcnJvci5yZXNldF9jb3VudGVyKSwKPiAtCQkJCSAgaW50ZXJydXB0aWJsZSwgTlVMTCwgTlVM TCk7Cj4gKwkJCQkgIGludGVycnVwdGlibGUsIE5VTEwsIE5VTEwsIHRydWUpOwo+ICAJaWYgKHJl dCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiBAQCAtMTU3MSw3ICsxNTk0LDcgQEAgaTkxNV9nZW1f b2JqZWN0X3dhaXRfcmVuZGVyaW5nX19ub25ibG9ja2luZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAlmb3Ig KGkgPSAwOyByZXQgPT0gMCAmJiBpIDwgbjsgaSsrKQo+ICAJCXJldCA9IF9faTkxNV93YWl0X3Jl cXVlc3QocmVxdWVzdHNbaV0sIHJlc2V0X2NvdW50ZXIsIHRydWUsCj4gLQkJCQkJICBOVUxMLCBy cHMpOwo+ICsJCQkJCSAgTlVMTCwgcnBzLCBmYWxzZSk7Cj4gIAltdXRleF9sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewo+IEBAIC0zNDQz LDcgKzM0NjYsNyBAQCBpOTE1X2dlbV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgCQlpZiAocmV0ID09IDApCj4g IAkJCXJldCA9IF9faTkxNV93YWl0X3JlcXVlc3QocmVxW2ldLCByZXNldF9jb3VudGVyLCB0cnVl LAo+ICAJCQkJCQkgIGFyZ3MtPnRpbWVvdXRfbnMgPiAwID8gJmFyZ3MtPnRpbWVvdXRfbnMgOiBO VUxMLAo+IC0JCQkJCQkgIGZpbGUtPmRyaXZlcl9wcml2KTsKPiArCQkJCQkJICBmaWxlLT5kcml2 ZXJfcHJpdiwgZmFsc2UpOwo+ICAJCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2UocmVxW2ld KTsKPiAgCX0KPiAgCXJldHVybiByZXQ7Cj4gQEAgLTM0NzYsNyArMzQ5OSw3IEBAIF9faTkxNV9n ZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJCQkg IGF0b21pY19yZWFkKCZpOTE1LT5ncHVfZXJyb3IucmVzZXRfY291bnRlciksCj4gIAkJCQkJICBp OTE1LT5tbS5pbnRlcnJ1cHRpYmxlLAo+ICAJCQkJCSAgTlVMTCwKPiAtCQkJCQkgICZpOTE1LT5y cHMuc2VtYXBob3Jlcyk7Cj4gKwkJCQkJICAmaTkxNS0+cnBzLnNlbWFwaG9yZXMsIHRydWUpOwo+ ICAJCWlmIChyZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4gIAo+IEBAIC00NjgzLDcgKzQ3MDYsNyBA QCBpOTE1X2dlbV9yaW5nX3Rocm90dGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSkKPiAgCWlmICh0YXJnZXQgPT0gTlVMTCkKPiAgCQlyZXR1cm4gMDsKPiAg Cj4gLQlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KHRhcmdldCwgcmVzZXRfY291bnRlciwgdHJ1 ZSwgTlVMTCwgTlVMTCk7Cj4gKwlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KHRhcmdldCwgcmVz ZXRfY291bnRlciwgdHJ1ZSwgTlVMTCwgTlVMTCwgZmFsc2UpOwo+ICAJaWYgKHJldCA9PSAwKQo+ ICAJCXF1ZXVlX2RlbGF5ZWRfd29yayhkZXZfcHJpdi0+d3EsICZkZXZfcHJpdi0+bW0ucmV0aXJl X3dvcmssIDApOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9z Y2hlZHVsZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKPiBpbmRl eCBkZjJlMjdmLi44MTFjYmU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc2NoZWR1bGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxl ci5jCj4gQEAgLTMxLDYgKzMxLDggQEAgc3RhdGljIGludCAgICAgICAgIGk5MTVfc2NoZWR1bGVy X3JlbW92ZV9kZXBlbmRlbnQoc3RydWN0IGk5MTVfc2NoZWR1bGVyICpzY2hlZHUKPiAgCQkJCQkJ ICAgc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5ICpyZW1vdmUpOwo+ICBzdGF0aWMg aW50ICAgICAgICAgaTkxNV9zY2hlZHVsZXJfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCj4gIAkJCQkJIGJvb2wgaXNfbG9ja2VkKTsKPiArc3RhdGljIGludCAgICAgICAgIGk5 MTVfc2NoZWR1bGVyX3N1Ym1pdF9tYXhfcHJpb3JpdHkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZywKPiArCQkJCQkgICAgICAgYm9vbCBpc19sb2NrZWQpOwo+ICBzdGF0aWMgdWludDMyX3Qg ICAgaTkxNV9zY2hlZHVsZXJfY291bnRfZmx5aW5nKHN0cnVjdCBpOTE1X3NjaGVkdWxlciAqc2No ZWR1bGVyLAo+ICAJCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiAg c3RhdGljIHZvaWQgICAgICAgIGk5MTVfc2NoZWR1bGVyX3ByaW9yaXR5X2J1bXBfY2xlYXIoc3Ry dWN0IGk5MTVfc2NoZWR1bGVyICpzY2hlZHVsZXIpOwo+IEBAIC02MDAsNiArNjAyLDU3IEBAIHZv aWQgaTkxNV9nZW1fc2NoZWR1bGVyX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCj4gIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgfQo+ICAKPiAraW50 IGk5MTVfc2NoZWR1bGVyX2ZsdXNoX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCj4gKwkJCQkgYm9vbCBpc19sb2NrZWQpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICAgICAgICAgICAgKmRldl9wcml2Owo+ICsJc3RydWN0IGk5MTVfc2NoZWR1bGVyICAg ICAgICAgICAgICAqc2NoZWR1bGVyOwo+ICsJdW5zaWduZWQgbG9uZyAgICAgICBmbGFnczsKPiAr CWludCAgICAgICAgICAgICAgICAgZmx1c2hfY291bnQ7Cj4gKwl1aW50MzJfdCAgICAgICAgICAg IHJpbmdfaWQ7Cj4gKwo+ICsJaWYgKCFyZXEpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ ZGV2X3ByaXYgID0gcmVxLT5yaW5nLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc2NoZWR1bGVyID0g ZGV2X3ByaXYtPnNjaGVkdWxlcjsKPiArCj4gKwlpZiAoIXNjaGVkdWxlcikKPiArCQlyZXR1cm4g MDsKPiArCj4gKwlpZiAoIXJlcS0+c2NoZWR1bGVyX3FlKQo+ICsJCXJldHVybiAwOwo+ICsKPiAr CWlmICghSTkxNV9TUVNfSVNfUVVFVUVEKHJlcS0+c2NoZWR1bGVyX3FlKSkKPiArCQlyZXR1cm4g MDsKPiArCj4gKwlyaW5nX2lkID0gcmVxLT5yaW5nLT5pZDsKPiArCWlmIChpc19sb2NrZWQgJiYg KHNjaGVkdWxlci0+ZmxhZ3NbcmluZ19pZF0gJiBpOTE1X3NmX3N1Ym1pdHRpbmcpKSB7Cj4gKwkJ LyogU2NoZWR1bGVyIGlzIGJ1c3kgYWxyZWFkeSBzdWJtaXR0aW5nIGFub3RoZXIgYmF0Y2gsCj4g KwkJICogY29tZSBiYWNrIGxhdGVyIHJhdGhlciB0aGFuIGdvaW5nIHJlY3Vyc2l2ZS4uLiAqLwo+ ICsJCXJldHVybiAtRUFHQUlOOwo+ICsJfQo+ICsKPiArCWlmIChsaXN0X2VtcHR5KCZzY2hlZHVs ZXItPm5vZGVfcXVldWVbcmluZ19pZF0pKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCXNwaW5fbG9j a19pcnFzYXZlKCZzY2hlZHVsZXItPmxvY2ssIGZsYWdzKTsKPiArCj4gKwlpOTE1X3NjaGVkdWxl cl9wcmlvcml0eV9idW1wX2NsZWFyKHNjaGVkdWxlcik7Cj4gKwo+ICsJZmx1c2hfY291bnQgPSBp OTE1X3NjaGVkdWxlcl9wcmlvcml0eV9idW1wKHNjaGVkdWxlciwKPiArCQkJICAgIHJlcS0+c2No ZWR1bGVyX3FlLCBzY2hlZHVsZXItPnByaW9yaXR5X2xldmVsX21heCk7Cj4gKwo+ICsJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWR1bGVyLT5sb2NrLCBmbGFncyk7Cj4gKwo+ICsJaWYgKGZs dXNoX2NvdW50KSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiPCVzPiBCdW1wZWQgJWQgZW50cmll c1xuIiwgcmVxLT5yaW5nLT5uYW1lLCBmbHVzaF9jb3VudCk7Cj4gKwkJZmx1c2hfY291bnQgPSBp OTE1X3NjaGVkdWxlcl9zdWJtaXRfbWF4X3ByaW9yaXR5KHJlcS0+cmluZywgaXNfbG9ja2VkKTsK PiArCX0KPiArCj4gKwlyZXR1cm4gZmx1c2hfY291bnQ7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lk IGk5MTVfc2NoZWR1bGVyX3ByaW9yaXR5X2J1bXBfY2xlYXIoc3RydWN0IGk5MTVfc2NoZWR1bGVy ICpzY2hlZHVsZXIpCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeSAq bm9kZTsKPiBAQCAtNjUzLDYgKzcwNiw0NCBAQCBzdGF0aWMgaW50IGk5MTVfc2NoZWR1bGVyX3By aW9yaXR5X2J1bXAoc3RydWN0IGk5MTVfc2NoZWR1bGVyICpzY2hlZHVsZXIsCj4gIAlyZXR1cm4g Y291bnQ7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgaTkxNV9zY2hlZHVsZXJfc3VibWl0X21heF9w cmlvcml0eShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICsJCQkJCSAgICAgIGJvb2wg aXNfbG9ja2VkKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkgICpu b2RlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgICAgICAgICAgICAqZGV2X3ByaXYgPSBy aW5nLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGk5MTVfc2NoZWR1bGVyICAgICAgICAg ICAgICAqc2NoZWR1bGVyID0gZGV2X3ByaXYtPnNjaGVkdWxlcjsKPiArCXVuc2lnbmVkIGxvbmcJ ZmxhZ3M7Cj4gKwlpbnQgICAgICAgICAgICAgcmV0LCBjb3VudCA9IDA7Cj4gKwlib29sICAgICAg ICAgICAgZm91bmQ7Cj4gKwo+ICsJZG8gewo+ICsJCWZvdW5kID0gZmFsc2U7Cj4gKwkJc3Bpbl9s b2NrX2lycXNhdmUoJnNjaGVkdWxlci0+bG9jaywgZmxhZ3MpOwo+ICsJCWxpc3RfZm9yX2VhY2hf ZW50cnkobm9kZSwgJnNjaGVkdWxlci0+bm9kZV9xdWV1ZVtyaW5nLT5pZF0sIGxpbmspIHsKPiAr CQkJaWYgKCFJOTE1X1NRU19JU19RVUVVRUQobm9kZSkpCj4gKwkJCQljb250aW51ZTsKPiArCj4g KwkJCWlmIChub2RlLT5wcmlvcml0eSA8IHNjaGVkdWxlci0+cHJpb3JpdHlfbGV2ZWxfbWF4KQo+ ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlmb3VuZCA9IHRydWU7Cj4gKwkJCWJyZWFrOwo+ICsJ CX0KPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZHVsZXItPmxvY2ssIGZsYWdzKTsK PiArCj4gKwkJaWYgKCFmb3VuZCkKPiArCQkJYnJlYWs7Cj4gKwo+ICsJCXJldCA9IGk5MTVfc2No ZWR1bGVyX3N1Ym1pdChyaW5nLCBpc19sb2NrZWQpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQly ZXR1cm4gcmV0Owo+ICsKPiArCQljb3VudCArPSByZXQ7Cj4gKwl9IHdoaWxlIChmb3VuZCk7Cj4g Kwo+ICsJcmV0dXJuIGNvdW50Owo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IGk5MTVfc2NoZWR1bGVy X3BvcF9mcm9tX3F1ZXVlX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAJ CQkJICAgIHN0cnVjdCBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeSAqKnBvcF9ub2RlLAo+ICAJ CQkJICAgIHVuc2lnbmVkIGxvbmcgKmZsYWdzKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hl ZHVsZXIuaAo+IGluZGV4IDczYzVlN2QuLmZjZjI2NDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfc2NoZWR1bGVyLmgKPiBAQCAtOTIsNiArOTIsOCBAQCB2b2lkICAgICAgICBpOTE1X2dl bV9zY2hlZHVsZXJfY2xlYW5fbm9kZShzdHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkg Km5vZAo+ICBpbnQgICAgICAgICBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9leGVjYnVmZmVyKHN0cnVj dCBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeSAqcWUpOwo+ICBpbnQgICAgICAgICBpOTE1X3Nj aGVkdWxlcl9oYW5kbGVfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICB2b2lk ICAgICAgICBpOTE1X2dlbV9zY2hlZHVsZXJfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yayk7Cj4gK2ludCAgICAgICAgIGk5MTVfc2NoZWR1bGVyX2ZsdXNoX3JlcXVlc3Qoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gKwkJCQkJIGJvb2wgaXNfbG9ja2VkKTsK PiAgYm9vbCAgICAgICAgaTkxNV9zY2hlZHVsZXJfaXNfcmVxdWVzdF90cmFja2VkKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCQkJCSAgICAgIGJvb2wgKmNvbXBsZXRlZCwg Ym9vbCAqYnVzeSk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRl eCA5NjI5ZGFiLi4xMjljODI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+IEBAIC0xMTI5MSw3ICsxMTI5MSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93 b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAJCVdBUk5fT04oX19pOTE1X3dh aXRfcmVxdWVzdChtbWlvX2ZsaXAtPnJlcSwKPiAgCQkJCQkgICAgbW1pb19mbGlwLT5jcnRjLT5y ZXNldF9jb3VudGVyLAo+ICAJCQkJCSAgICBmYWxzZSwgTlVMTCwKPiAtCQkJCQkgICAgJm1taW9f ZmxpcC0+aTkxNS0+cnBzLm1taW9mbGlwcykpOwo+ICsJCQkJCSAgICAmbW1pb19mbGlwLT5pOTE1 LT5ycHMubW1pb2ZsaXBzLAo+ICsJCQkJCSAgICBmYWxzZSkpOwo+ICAKPiAgCWludGVsX2RvX21t aW9fZmxpcChtbWlvX2ZsaXAtPmNydGMpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jCj4gaW5kZXggZGYwY2Q0OC4uZTA5OTJiNyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMjE5Myw3ICsyMTkzLDcgQEAgaW50IGlu dGVsX3JpbmdfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAJcmV0dXJuIF9f aTkxNV93YWl0X3JlcXVlc3QocmVxLAo+ICAJCQkJICAgYXRvbWljX3JlYWQoJnRvX2k5MTUocmlu Zy0+ZGV2KS0+Z3B1X2Vycm9yLnJlc2V0X2NvdW50ZXIpLAo+ICAJCQkJICAgdG9faTkxNShyaW5n LT5kZXYpLT5tbS5pbnRlcnJ1cHRpYmxlLAo+IC0JCQkJICAgTlVMTCwgTlVMTCk7Cj4gKwkJCQkg ICBOVUxMLCBOVUxMLCB0cnVlKTsKPiAgfQo+ICAKPiAgaW50IGludGVsX3JpbmdfYWxsb2NfcmVx dWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+IC0tIAo+ IDEuOS4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3Jh dGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=