From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomas Elf Subject: Re: [PATCH 02/55] drm/i915: Reserve ring buffer space for i915_add_request() commands Date: Tue, 09 Jun 2015 17:00:19 +0100 Message-ID: <55770D93.6070109@intel.com> References: <1432917856-12261-3-git-send-email-John.C.Harrison@Intel.com> <1433419594-32559-1-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 431246E78C for ; Tue, 9 Jun 2015 09:19:28 -0700 (PDT) In-Reply-To: <1433419594-32559-1-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" , "Intel-GFX@Lists.FreeDesktop.Org" List-Id: intel-gfx@lists.freedesktop.org T24gMDQvMDYvMjAxNSAxMzowNiwgSm9obi5DLkhhcnJpc29uQEludGVsLmNvbSB3cm90ZToKPiBG cm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Cj4gSXQgaXMg YSBiYWQgaWRlYSBmb3IgaTkxNV9hZGRfcmVxdWVzdCgpIHRvIGZhaWwuIFRoZSB3b3JrIHdpbGwg YWxyZWFkeSBoYXZlIGJlZW4KPiBzZW5kIHRvIHRoZSByaW5nIGFuZCB3aWxsIGJlIHByb2Nlc3Nl ZCwgYnV0IHRoZXJlIHdpbGwgbm90IGJlIGFueSB0cmFja2luZyBvcgo+IG1hbmFnZW1lbnQgb2Yg dGhhdCB3b3JrLgo+Cj4gVGhlIG9ubHkgd2F5IHRoZSBhZGQgcmVxdWVzdCBjYWxsIGNhbiBmYWls IGlzIGlmIGl0IGNhbid0IHdyaXRlIGl0cyBlcGlsb2d1ZQo+IGNvbW1hbmRzIHRvIHRoZSByaW5n IChjYWNoZSBmbHVzaGluZywgc2Vxbm8gdXBkYXRlcywgaW50ZXJydXB0IHNpZ25hbGxpbmcpLiBU aGUKPiByZWFzb25zIGZvciB0aGF0IGFyZSBtb3N0bHkgZG93biB0byBydW5uaW5nIG91dCBvZiBy aW5nIGJ1ZmZlciBzcGFjZSBhbmQgdGhlCj4gcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoIHRyeWlu ZyB0byBnZXQgc29tZSBtb3JlLiBUaGlzIHBhdGNoIHByZXZlbnRzIHRoYXQKPiBzaXR1YXRpb24g ZnJvbSBoYXBwZW5pbmcgaW4gdGhlIGZpcnN0IHBsYWNlLgo+Cj4gV2hlbiBhIHJlcXVlc3QgaXMg Y3JlYXRlZCwgaXQgbWFya3Mgc3VmZmljaWVudCBzcGFjZSBhcyByZXNlcnZlZCBmb3IgdGhlCj4g ZXBpbG9ndWUgY29tbWFuZHMuIFRodXMgZ3VhcmFudGVlaW5nIHRoYXQgYnkgdGhlIHRpbWUgdGhl IGVwaWxvZ3VlIGlzIHdyaXR0ZW4sCj4gdGhlcmUgd2lsbCBiZSBwbGVudHkgb2Ygc3BhY2UgZm9y IGl0LiBOb3RlIHRoYXQgYSByaW5nX2JlZ2luKCkgY2FsbCBpcyByZXF1aXJlZAo+IHRvIGFjdHVh bGx5IHJlc2VydmUgdGhlIHNwYWNlIChhbmQgZG8gYW55IHBvdGVudGlhbCB3YWl0aW5nKS4gSG93 ZXZlciwgdGhhdCBpcwo+IG5vdCBjdXJyZW50bHkgZG9uZSBhdCByZXF1ZXN0IGNyZWF0aW9uIHRp bWUuIFRoaXMgaXMgYmVjYXVzZSB0aGUgcmluZ19iZWdpbigpCj4gY29kZSBjYW4gYWxsb2NhdGUg YSByZXF1ZXN0LiBIZW5jZSBjYWxsaW5nIGJlZ2luKCkgZnJvbSB0aGUgcmVxdWVzdCBhbGxvY2F0 aW9uCj4gY29kZSB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbiEgTGF0ZXIgcGF0Y2hl cyBpbiB0aGlzIHNlcmllcyByZW1vdmUgdGhlCj4gbmVlZCBmb3IgYmVnaW4oKSB0byBkbyB0aGUg YWxsb2NhdGUuIEF0IHRoYXQgcG9pbnQsIGl0IGJlY29tZXMgc2FmZSBmb3IgdGhlCj4gYWxsb2Nh dGUgdG8gY2FsbCBiZWdpbigpIGFuZCByZWFsbHkgcmVzZXJ2ZSB0aGUgc3BhY2UuCj4KPiBVbnRp bCB0aGVuLCB0aGVyZSBpcyBhIHBvdGVudGlhbCBmb3IgaW5zdWZmaWNpZW50IHNwYWNlIHRvIGJl IGF2YWlsYWJsZSBhdCB0aGUKPiBwb2ludCBvZiBjYWxsaW5nIGk5MTVfYWRkX3JlcXVlc3QoKS4g SG93ZXZlciwgdGhhdCB3b3VsZCBvbmx5IGJlIGluIHRoZSBjYXNlCj4gd2hlcmUgdGhlIHJlcXVl c3Qgd2FzIGNyZWF0ZWQgYW5kIGltbWVkaWF0ZWx5IHN1Ym1pdHRlZCB3aXRob3V0IGV2ZXIgY2Fs bGluZwo+IHJpbmdfYmVnaW4oKSBhbmQgYWRkaW5nIGFueSB3b3JrIHRvIHRoYXQgcmVxdWVzdC4g V2hpY2ggc2hvdWxkIG5ldmVyIGhhcHBlbi4gQW5kCj4gZXZlbiBpZiBpdCBkb2VzLCBhbmQgaWYg dGhhdCByZXF1ZXN0IGhhcHBlbnMgdG8gZmFsbCBkb3duIHRoZSB0aW55IHdpbmRvdyBvZgo+IG9w cG9ydHVuaXR5IGZvciBmYWlsaW5nIGR1ZSB0byBiZWluZyBvdXQgb2YgcmluZyBzcGFjZSB0aGVu IGRvZXMgaXQgcmVhbGx5Cj4gbWF0dGVyIGJlY2F1c2UgdGhlIHJlcXVlc3Qgd2Fzbid0IGRvaW5n IGFueXRoaW5nIGluIHRoZSBmaXJzdCBwbGFjZT8KPgo+IHYyOiBVcGRhdGVkIHRoZSAncmVzZXJ2 ZWQgc3BhY2UgdG9vIHNtYWxsJyB3YXJuaW5nIHRvIGluY2x1ZGUgdGhlIG9mZmVuZGluZwo+IHNp emVzLiBBZGRlZCBhICdjYW5jZWwnIG9wZXJhdGlvbiB0byBjbGVhbiB1cCB3aGVuIGEgcmVxdWVz dCBpcyBhYmFuZG9uZWQuIEFkZGVkCj4gcmUtaW5pdGlhbGlzYXRpb24gb2YgdHJhY2tpbmcgc3Rh dGUgYWZ0ZXIgYSBidWZmZXIgd3JhcCB0byBrZWVwIHRoZSBzYW5pdHkKPiBjaGVja3MgYWNjdXJh dGUuCj4KPiB2MzogSW5jcmVtZW50ZWQgdGhlIHJlc2VydmVkIHNpemUgdG8gYWNjb21tb2RhdGUg SXJvbmxha2UgKGFmdGVyIGZpbmFsbHkKPiBtYW5hZ2luZyB0byBydW4gb24gYW4gSUxLIHN5c3Rl bSkuIEFsc28gZml4ZWQgbWlzc2luZyB3cmFwIGNvZGUgaW4gTFJDIG1vZGUuCj4KPiBGb3I6IFZJ Wi01MTE1Cj4gU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQElu dGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg ICB8ICAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwg ICAzNyArKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgICAgICAgIHwgICAxOCArKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jIHwgICA2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgIDI1ICsrKysrKysrKysr Kwo+ICAgNSBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGU5ZDc2ZjMuLjQ0ZGVlMzEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjE4Nyw2ICsyMTg3LDcgQEAgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0IHsKPgo+ICAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAkJCSAgIHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjdHgpOwo+ICt2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKTsKPiAgIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVjdCBr cmVmICpyZXFfcmVmKTsKPgo+ICAgc3RhdGljIGlubGluZSB1aW50MzJfdAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+IGluZGV4IDc4ZjZhODkuLjUxNmU5YjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBAQCAtMjQ5NSw2ICsyNDk1LDEzIEBAIGludCBfX2k5MTVfYWRkX3JlcXVlc3Qo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAl9IGVsc2UKPiAgIAkJcmluZ2J1ZiA9 IHJpbmctPmJ1ZmZlcjsKPgo+ICsJLyoKPiArCSAqIFRvIGVuc3VyZSB0aGF0IHRoaXMgY2FsbCB3 aWxsIG5vdCBmYWlsLCBzcGFjZSBmb3IgaXRzIGVtaXNzaW9ucwo+ICsJICogc2hvdWxkIGFscmVh ZHkgaGF2ZSBiZWVuIHJlc2VydmVkIGluIHRoZSByaW5nIGJ1ZmZlci4gTGV0IHRoZSByaW5nCj4g KwkgKiBrbm93IHRoYXQgaXQgaXMgdGltZSB0byB1c2UgdGhhdCBzcGFjZSB1cC4KPiArCSAqLwo+ ICsJaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV91c2UocmluZ2J1Zik7Cj4gKwo+ICAgCXJlcXVl c3Rfc3RhcnQgPSBpbnRlbF9yaW5nX2dldF90YWlsKHJpbmdidWYpOwo+ICAgCS8qCj4gICAJICog RW1pdCBhbnkgb3V0c3RhbmRpbmcgZmx1c2hlcyAtIGV4ZWNidWYgY2FuIGZhaWwgdG8gZW1pdCB0 aGUgZmx1c2gKPiBAQCAtMjU3Nyw2ICsyNTg0LDkgQEAgaW50IF9faTkxNV9hZGRfcmVxdWVzdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAgCQkJICAgcm91bmRfamlmZmllc191cF9y ZWxhdGl2ZShIWikpOwo+ICAgCWludGVsX21hcmtfYnVzeShkZXZfcHJpdi0+ZGV2KTsKPgo+ICsJ LyogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIHJlc2VydmVkIHNpemUgd2FzIGxhcmdlIGVub3VnaC4g Ki8KPiArCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfZW5kKHJpbmdidWYpOwo+ICsKPiAgIAly ZXR1cm4gMDsKPiAgIH0KPgo+IEBAIC0yNjc2LDYgKzI2ODYsMjYgQEAgaW50IGk5MTVfZ2VtX3Jl cXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAlpZiAocmV0KQo+ ICAgCQlnb3RvIGVycjsKPgo+ICsJLyoKPiArCSAqIFJlc2VydmUgc3BhY2UgaW4gdGhlIHJpbmcg YnVmZmVyIGZvciBhbGwgdGhlIGNvbW1hbmRzIHJlcXVpcmVkIHRvCj4gKwkgKiBldmVudHVhbGx5 IGVtaXQgdGhpcyByZXF1ZXN0LiBUaGlzIGlzIHRvIGd1YXJhbnRlZSB0aGF0IHRoZQo+ICsJICog aTkxNV9hZGRfcmVxdWVzdCgpIGNhbGwgY2FuJ3QgZmFpbC4gTm90ZSB0aGF0IHRoZSByZXNlcnZl IG1heSBuZWVkCj4gKwkgKiB0byBiZSByZWRvbmUgaWYgdGhlIHJlcXVlc3QgaXMgbm90IGFjdHVh bGx5IHN1Ym1pdHRlZCBzdHJhaWdodAo+ICsJICogYXdheSwgZS5nLiBiZWNhdXNlIGEgR1BVIHNj aGVkdWxlciBoYXMgZGVmZXJyZWQgaXQuCj4gKwkgKgo+ICsJICogTm90ZSBmdXJ0aGVyIHRoYXQg dGhpcyBjYWxsIG1lcmVseSBub3RlcyB0aGUgcmVzZXJ2ZSByZXF1ZXN0LiBBCj4gKwkgKiBzdWJz ZXF1ZW50IGNhbGwgdG8gKl9yaW5nX2JlZ2luKCkgaXMgcmVxdWlyZWQgdG8gYWN0dWFsbHkgZW5z dXJlCj4gKwkgKiB0aGF0IHRoZSByZXNlcnZhdGlvbiBpcyBhdmFpbGFibGUuIFdpdGhvdXQgdGhl IGJlZ2luLCBpZiB0aGUKPiArCSAqIHJlcXVlc3QgY3JlYXRvciBpbW1lZGlhdGVseSBzdWJtaXR0 ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBhZGRpbmcKPiArCSAqIGFueSBjb21tYW5kcyB0byBpdCB0 aGVuIHRoZXJlIG1pZ2h0IG5vdCBhY3R1YWxseSBiZSBzdWZmaWNpZW50Cj4gKwkgKiByb29tIGZv ciB0aGUgc3VibWlzc2lvbiBjb21tYW5kcy4gVW5mb3J0dW5hdGVseSwgdGhlIGN1cnJlbnQKPiAr CSAqICpfcmluZ19iZWdpbigpIGltcGxlbWVudGF0aW9ucyBwb3RlbnRpYWxseSBjYWxsIGJhY2sg aGVyZSB0bwo+ICsJICogaTkxNV9nZW1fcmVxdWVzdF9hbGxvYygpLiBUaHVzIGNhbGxpbmcgX2Jl Z2luKCkgaGVyZSB3b3VsZCBsZWFkIHRvCj4gKwkgKiBpbmZpbml0ZSByZWN1cnNpb24hIFVudGls IHRoYXQgYmFjayBjYWxsIHBhdGggaXMgcmVtb3ZlZCwgaXQgaXMKPiArCSAqIG5lY2Vzc2FyeSB0 byBkbyBhIG1hbnVhbCBfYmVnaW4oKSBvdXRzaWRlLgo+ICsJICovCj4gKwlpbnRlbF9yaW5nX3Jl c2VydmVkX3NwYWNlX3Jlc2VydmUocmVxLT5yaW5nYnVmLCBNSU5fU1BBQ0VfRk9SX0FERF9SRVFV RVNUKTsKPiArCj4gICAJcmluZy0+b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0ID0gcmVxOwo+ICAg CXJldHVybiAwOwo+Cj4gQEAgLTI2ODQsNiArMjcxNCwxMyBAQCBlcnI6Cj4gICAJcmV0dXJuIHJl dDsKPiAgIH0KPgo+ICt2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxKQo+ICt7Cj4gKwlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2Nh bmNlbChyZXEtPnJpbmdidWYpOwo+ICsKPiArCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2Uo cmVxKTsKPiArfQo+ICsKPiAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gICBpOTE1 X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4g ICB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA2YTVlZDA3Li40MmE3NTZkIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtNjg3LDYgKzY4Nyw5IEBAIHN0YXRp YyBpbnQgbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpyaW5nYnVmLAo+ICAgCXVuc2lnbmVkIHNwYWNlOwo+ICAgCWludCByZXQ7Cj4KPiArCS8qIFRo ZSB3aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8gbm90IHdhaXQhICovCj4gKwlX QVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gKwo+ICAgCWlmIChpbnRlbF9yaW5n X3NwYWNlKHJpbmdidWYpID49IGJ5dGVzKQo+ICAgCQlyZXR1cm4gMDsKPgo+IEBAIC03NDcsNiAr NzUwLDkgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIoc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmdidWYsCj4gICAJdWludDMyX3QgX19pb21lbSAqdmlydDsKPiAgIAlp bnQgcmVtID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4KPiArCS8qIENhbid0IHdy YXAgaWYgc3BhY2UgaGFzIGFscmVhZHkgYmVlbiByZXNlcnZlZCEgKi8KPiArCVdBUk5fT04ocmlu Z2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPiArCj4gICAJaWYgKHJpbmdidWYtPnNwYWNlIDwgcmVt KSB7Cj4gICAJCWludCByZXQgPSBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2UocmluZ2J1Ziwg Y3R4LCByZW0pOwo+Cj4gQEAgLTc3MCwxMCArNzc2LDIyIEBAIHN0YXRpYyBpbnQgbG9naWNhbF9y aW5nX3ByZXBhcmUoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYsCj4gICB7Cj4gICAJ aW50IHJldDsKPgo+ICsJaWYgKCFyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpCj4gKwkJYnl0ZXMg Kz0gcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKClRoaXMgbGluZSByaWdodCBoZXJlIGlzIHRoZSBt YWluIGludGVncmF0aW9uIHBvaW50IGJldHdlZW4gdGhlIGJ1ZmZlciAKcmVzZXJ2YXRpb24gc2No ZW1lIGFuZCB0aGUgZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuIFBsZWFzZSBwb2ludCB0aGlzIApv dXQgaW4gYSBjb21tZW50IGRvd24gdG9nZXRoZXIgd2l0aCB0aGUgc3BhY2UgcmVzZXJ2YXRpb24g cHJvdG90eXBlcyAKd2hlcmUgeW91IGRlc2NyaWJlIF93aGVyZV8gdGhpcyByZXNlcnZlZCByaW5n IHNwYWNlIHNpemUgYWN0dWFsbHkgY29tZXMgCnRvIG1hdHRlciBpbiB0aGUgZW5kLiBPciBpbmNs dWRlIGEgY29tbWVudCBoZXJlLiBPciBib3RoLiBJdCdzIGtpbmRhIAppbXBvcnRhbnQgdG8ga25v dyB3aGVyZSB0aGUgcmVzZXJ2ZWQgc3BhY2UgZW5kcyB1cCBpbiB0aGUgZW5kIGFuZCB3aGVyZSAK aXQgaW50ZWdyYXRlcy4KCj4gKwo+ICAgCWlmICh1bmxpa2VseShyaW5nYnVmLT50YWlsICsgYnl0 ZXMgPiByaW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSkpIHsKPiArCQlXQVJOX09OKHJpbmdidWYtPnJl c2VydmVkX2luX3VzZSk7CgpUaGlzIFdBUk5fT04gaXMgYWxyZWFkeSBkb25lIGluIGxvZ2ljYWxf cmluZ193cmFwX2J1ZmZlci4gVW5sZXNzIHRoZXJlIAppcyBhIHJlYXNvbiBmb3IgYSBzZWNvbmQg d2FybmluZyBwbGVhc2UgcmVtb3ZlIHRoaXMgb25lLgoKPiArCj4gICAJCXJldCA9IGxvZ2ljYWxf cmluZ193cmFwX2J1ZmZlcihyaW5nYnVmLCBjdHgpOwo+ICAgCQlpZiAodW5saWtlbHkocmV0KSkK PiAgIAkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCWlmKHJpbmdidWYtPnJlc2VydmVkX3NpemUpIHsK PiArCQkJdWludDMyX3Qgc2l6ZSA9IHJpbmdidWYtPnJlc2VydmVkX3NpemU7Cj4gKwo+ICsJCQlp bnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2NhbmNlbChyaW5nYnVmKTsKPiArCQkJaW50ZWxfcmlu Z19yZXNlcnZlZF9zcGFjZV9yZXNlcnZlKHJpbmdidWYsIHNpemUpOwo+ICsJCX0KPiAgIAl9Cj4K PiAgIAlpZiAodW5saWtlbHkocmluZ2J1Zi0+c3BhY2UgPCBieXRlcykpIHsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggZDkzNGY4NS4uNzRjMjIyMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMjEwMyw2ICsy MTAzLDkgQEAgc3RhdGljIGludCByaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsIGludCBuKQo+ICAgCXVuc2lnbmVkIHNwYWNlOwo+ICAgCWludCByZXQ7Cj4K PiArCS8qIFRoZSB3aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8gbm90IHdhaXQh ICovCj4gKwlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gKwo+ICAgCWlmIChp bnRlbF9yaW5nX3NwYWNlKHJpbmdidWYpID49IG4pCj4gICAJCXJldHVybiAwOwo+Cj4gQEAgLTIx MzAsNiArMjEzMyw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfd3JhcF9yaW5nX2J1ZmZlcihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmID0gcmluZy0+YnVmZmVyOwo+ICAgCWludCByZW0gPSByaW5nYnVmLT5zaXplIC0gcmluZ2J1 Zi0+dGFpbDsKPgo+ICsJLyogQ2FuJ3Qgd3JhcCBpZiBzcGFjZSBoYXMgYWxyZWFkeSBiZWVuIHJl c2VydmVkISAqLwo+ICsJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+ICsKPiAg IAlpZiAocmluZ2J1Zi0+c3BhY2UgPCByZW0pIHsKPiAgIAkJaW50IHJldCA9IHJpbmdfd2FpdF9m b3Jfc3BhY2UocmluZywgcmVtKTsKPiAgIAkJaWYgKHJldCkKPiBAQCAtMjE4MCwxNiArMjE4Niw3 NCBAQCBpbnQgaW50ZWxfcmluZ19hbGxvY19yZXF1ZXN0X2V4dHJhcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4KPiAtc3RhdGljIGlu dCBfX2ludGVsX3JpbmdfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+IC0J CQkJaW50IGJ5dGVzKQo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwgaW50IHNpemUpCj4gK3sKPiArCS8qIE5C OiBVbnRpbCByZXF1ZXN0IG1hbmFnZW1lbnQgaXMgZnVsbHkgdGlkaWVkIHVwIGFuZCB0aGUgT0xS IGlzCj4gKwkgKiByZW1vdmVkLCB0aGVyZSBhcmUgdG9vIG1hbnkgd2F5cyBmb3IgZ2V0IGZhbHNl IGhpdHMgb24gdGhpcwo+ICsJICogYW50aS1yZWN1cnNpb24gY2hlY2shICovCj4gKwkvKldBUk5f T04ocmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSk7Ki8KPiArCVdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2 ZWRfaW5fdXNlKTsKPiArCj4gKwlyaW5nYnVmLT5yZXNlcnZlZF9zaXplID0gc2l6ZTsKPiArCj4g KwkvKgo+ICsJICogUmVhbGx5IG5lZWQgdG8gY2FsbCBfYmVnaW4oKSBoZXJlIGJ1dCB0aGF0IGN1 cnJlbnRseSBsZWFkcyB0bwo+ICsJICogcmVjdXJzaW9uIHByb2JsZW1zISBUaGlzIHdpbGwgYmUg Zml4ZWQgbGF0ZXIgYnV0IGZvciBub3cganVzdAo+ICsJICogcmV0dXJuIGFuZCBob3BlIGZvciB0 aGUgYmVzdC4gTm90ZSB0aGF0IHRoZXJlIGlzIG9ubHkgYSByZWFsCj4gKwkgKiBwcm9ibGVtIGlm IHRoZSBjcmVhdGUgb2YgdGhlIHJlcXVlc3QgbmV2ZXIgYWN0dWFsbHkgY2FsbHMgX2JlZ2luKCkK PiArCSAqIGJ1dCBpZiB0aGV5IGFyZSBub3Qgc3VibWl0dGluZyBhbnkgd29yayB0aGVuIHdoeSBk aWQgdGhleSBjcmVhdGUKPiArCSAqIHRoZSByZXF1ZXN0IGluIHRoZSBmaXJzdCBwbGFjZT8KPiAr CSAqLwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ICt7Cj4gKwlXQVJOX09OKHJpbmdidWYt PnJlc2VydmVkX2luX3VzZSk7Cj4gKwo+ICsJcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSAgID0gMDsK PiArCXJpbmdidWYtPnJlc2VydmVkX2luX3VzZSA9IGZhbHNlOwo+ICt9Cj4gKwo+ICt2b2lkIGlu dGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfdXNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmKQo+ICt7Cj4gKwlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gKwo+ICsJ cmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlID0gdHJ1ZTsKPiArCXJpbmdidWYtPnJlc2VydmVkX3Rh aWwgICA9IHJpbmdidWYtPnRhaWw7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfcmluZ19yZXNlcnZl ZF9zcGFjZV9lbmQoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gK3sKPiArCVdB Uk5fT04oIXJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gKwlXQVJOKHJpbmdidWYtPnRhaWwg PiByaW5nYnVmLT5yZXNlcnZlZF90YWlsICsgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSwKPiArCSAg ICAgInJlcXVlc3QgcmVzZXJ2ZWQgc2l6ZSB0b28gc21hbGw6ICVkIHZzICVkIVxuIiwKPiArCSAg ICAgcmluZ2J1Zi0+dGFpbCAtIHJpbmdidWYtPnJlc2VydmVkX3RhaWwsIHJpbmdidWYtPnJlc2Vy dmVkX3NpemUpOwo+ICsKPiArCXJpbmdidWYtPnJlc2VydmVkX3NpemUgICA9IDA7Cj4gKwlyaW5n YnVmLT5yZXNlcnZlZF9pbl91c2UgPSBmYWxzZTsKPiArfQo+ICsKPiArc3RhdGljIGludCBfX2lu dGVsX3JpbmdfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQgYnl0ZXMp Cj4gICB7Cj4gICAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByaW5nLT5idWZm ZXI7Cj4gICAJaW50IHJldDsKPgo+ICsJaWYgKCFyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpCj4g KwkJYnl0ZXMgKz0gcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKPiArCj4gICAJaWYgKHVubGlrZWx5 KHJpbmdidWYtPnRhaWwgKyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplKSkgewo+ICsJ CVdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPiArCgpUaGlzIFdBUk5fT04gaXMg YWxyZWFkeSBkb25lIGluIGludGVsX3dyYXBfcmluZ19idWZmZXIuIFVubGVzcyB0aGVyZSBpcyAK YSByZWFzb24gZm9yIGEgc2Vjb25kIHdhcm5pbmcgcGxlYXNlIHJlbW92ZSB0aGlzIG9uZS4KClRo YW5rcywKVG9tYXMKCj4gICAJCXJldCA9IGludGVsX3dyYXBfcmluZ19idWZmZXIocmluZyk7Cj4g ICAJCWlmICh1bmxpa2VseShyZXQpKQo+ICAgCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJaWYocmlu Z2J1Zi0+cmVzZXJ2ZWRfc2l6ZSkgewo+ICsJCQl1aW50MzJfdCBzaXplID0gcmluZ2J1Zi0+cmVz ZXJ2ZWRfc2l6ZTsKPiArCj4gKwkJCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHJp bmdidWYpOwo+ICsJCQlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2VydmUocmluZ2J1Ziwg c2l6ZSk7Cj4gKwkJfQo+ICAgCX0KPgo+ICAgCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFjZSA8 IGJ5dGVzKSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRl eCAzOWY2ZGZjLi5iZjJhYzI4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAo+IEBAIC0xMDUsNiArMTA1LDkgQEAgc3RydWN0IGludGVsX3JpbmdidWZmZXIgewo+ ICAgCWludCBzcGFjZTsKPiAgIAlpbnQgc2l6ZTsKPiAgIAlpbnQgZWZmZWN0aXZlX3NpemU7Cj4g KwlpbnQgcmVzZXJ2ZWRfc2l6ZTsKPiArCWludCByZXNlcnZlZF90YWlsOwo+ICsJYm9vbCByZXNl cnZlZF9pbl91c2U7Cj4KPiAgIAkvKiogV2UgdHJhY2sgdGhlIHBvc2l0aW9uIG9mIHRoZSByZXF1 ZXN0cyBpbiB0aGUgcmluZyBidWZmZXIsIGFuZAo+ICAgCSAqIHdoZW4gZWFjaCBpcyByZXRpcmVk IHdlIGluY3JlbWVudCBsYXN0X3JldGlyZWRfaGVhZCBhcyB0aGUgR1BVCj4gQEAgLTQ1MCw0ICs0 NTMsMjYgQEAgaW50ZWxfcmluZ19nZXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKQo+ICAgCXJldHVybiByaW5nLT5vdXRzdGFuZGluZ19sYXp5X3JlcXVlc3Q7Cj4gICB9Cj4K PiArLyoKPiArICogQXJiaXRyYXJ5IHNpemUgZm9yIGxhcmdlc3QgcG9zc2libGUgJ2FkZCByZXF1 ZXN0JyBzZXF1ZW5jZS4gVGhlIGNvZGUgcGF0aHMKPiArICogYXJlIGNvbXBsZXggYW5kIHZhcmlh YmxlLiBFbXBpcmljYWwgbWVhc3VyZW1lbnQgc2hvd3MgdGhhdCB0aGUgd29yc3QgY2FzZQo+ICsg KiBpcyBJTEsgYXQgMTM2IHdvcmRzLiBSZXNlcnZpbmcgdG9vIG11Y2ggaXMgYmV0dGVyIHRoYW4g cmVzZXJ2aW5nIHRvbyBsaXR0bGUKPiArICogYXMgdGhhdCBhbGxvd3MgZm9yIGNvcm5lciBjYXNl cyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBtaXNzZWQuIFNvIHRoZSBmaWd1cmUKPiArICogaGFzIGJl ZW4gcm91bmRlZCB1cCB0byAxNjAgd29yZHMuCj4gKyAqLwo+ICsjZGVmaW5lIE1JTl9TUEFDRV9G T1JfQUREX1JFUVVFU1QJMTYwCj4gKwo+ICsvKgo+ICsgKiBSZXNlcnZlIHNwYWNlIGluIHRoZSBy aW5nIHRvIGd1YXJhbnRlZSB0aGF0IHRoZSBpOTE1X2FkZF9yZXF1ZXN0KCkgY2FsbAo+ICsgKiB3 aWxsIGFsd2F5cyBoYXZlIHN1ZmZpY2llbnQgcm9vbSB0byBkbyBpdHMgc3R1ZmYuIFRoZSByZXF1 ZXN0IGNyZWF0aW9uCj4gKyAqIGNvZGUgY2FsbHMgdGhpcyBhdXRvbWF0aWNhbGx5Lgo+ICsgKi8K PiArdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2VydmUoc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYsIGludCBzaXplKTsKPiArLyogQ2FuY2VsIHRoZSByZXNlcnZhdGlv biwgZS5nLiBiZWNhdXNlIHRoZSByZXF1ZXN0IGlzIGJlaW5nIGRpc2NhcmRlZC4gKi8KPiArdm9p ZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2NhbmNlbChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1Zik7Cj4gKy8qIFVzZSB0aGUgcmVzZXJ2ZWQgc3BhY2UgLSBmb3IgdXNlIGJ5IGk5 MTVfYWRkX3JlcXVlc3QoKSBvbmx5LiAqLwo+ICt2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3Bh Y2VfdXNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKPiArLyogRmluaXNoIHdp dGggdGhlIHJlc2VydmVkIHNwYWNlIC0gZm9yIHVzZSBieSBpOTE1X2FkZF9yZXF1ZXN0KCkgb25s eS4gKi8KPiArdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2VuZChzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4gKwo+ICAgI2VuZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVS X0hfICovCj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==