From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 02/55] drm/i915: Reserve ring buffer space for i915_add_request() commands Date: Thu, 18 Jun 2015 11:43:22 +0100 Message-ID: <5582A0CA.3080603@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> <20150617140441.GY23637@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 8F5F46E619 for ; Thu, 18 Jun 2015 03:43:25 -0700 (PDT) In-Reply-To: <20150617140441.GY23637@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMTcvMDYvMjAxNSAxNTowNCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBUaHUsIEp1biAw NCwgMjAxNSBhdCAwMTowNjozNFBNICswMTAwLCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdy b3RlOgo+PiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+ Pgo+PiBJdCBpcyBhIGJhZCBpZGVhIGZvciBpOTE1X2FkZF9yZXF1ZXN0KCkgdG8gZmFpbC4gVGhl IHdvcmsgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbgo+PiBzZW5kIHRvIHRoZSByaW5nIGFuZCB3aWxs IGJlIHByb2Nlc3NlZCwgYnV0IHRoZXJlIHdpbGwgbm90IGJlIGFueSB0cmFja2luZyBvcgo+PiBt YW5hZ2VtZW50IG9mIHRoYXQgd29yay4KPj4KPj4gVGhlIG9ubHkgd2F5IHRoZSBhZGQgcmVxdWVz dCBjYWxsIGNhbiBmYWlsIGlzIGlmIGl0IGNhbid0IHdyaXRlIGl0cyBlcGlsb2d1ZQo+PiBjb21t YW5kcyB0byB0aGUgcmluZyAoY2FjaGUgZmx1c2hpbmcsIHNlcW5vIHVwZGF0ZXMsIGludGVycnVw dCBzaWduYWxsaW5nKS4gVGhlCj4+IHJlYXNvbnMgZm9yIHRoYXQgYXJlIG1vc3RseSBkb3duIHRv IHJ1bm5pbmcgb3V0IG9mIHJpbmcgYnVmZmVyIHNwYWNlIGFuZCB0aGUKPj4gcHJvYmxlbXMgYXNz b2NpYXRlZCB3aXRoIHRyeWluZyB0byBnZXQgc29tZSBtb3JlLiBUaGlzIHBhdGNoIHByZXZlbnRz IHRoYXQKPj4gc2l0dWF0aW9uIGZyb20gaGFwcGVuaW5nIGluIHRoZSBmaXJzdCBwbGFjZS4KPj4K Pj4gV2hlbiBhIHJlcXVlc3QgaXMgY3JlYXRlZCwgaXQgbWFya3Mgc3VmZmljaWVudCBzcGFjZSBh cyByZXNlcnZlZCBmb3IgdGhlCj4+IGVwaWxvZ3VlIGNvbW1hbmRzLiBUaHVzIGd1YXJhbnRlZWlu ZyB0aGF0IGJ5IHRoZSB0aW1lIHRoZSBlcGlsb2d1ZSBpcyB3cml0dGVuLAo+PiB0aGVyZSB3aWxs IGJlIHBsZW50eSBvZiBzcGFjZSBmb3IgaXQuIE5vdGUgdGhhdCBhIHJpbmdfYmVnaW4oKSBjYWxs IGlzIHJlcXVpcmVkCj4+IHRvIGFjdHVhbGx5IHJlc2VydmUgdGhlIHNwYWNlIChhbmQgZG8gYW55 IHBvdGVudGlhbCB3YWl0aW5nKS4gSG93ZXZlciwgdGhhdCBpcwo+PiBub3QgY3VycmVudGx5IGRv bmUgYXQgcmVxdWVzdCBjcmVhdGlvbiB0aW1lLiBUaGlzIGlzIGJlY2F1c2UgdGhlIHJpbmdfYmVn aW4oKQo+PiBjb2RlIGNhbiBhbGxvY2F0ZSBhIHJlcXVlc3QuIEhlbmNlIGNhbGxpbmcgYmVnaW4o KSBmcm9tIHRoZSByZXF1ZXN0IGFsbG9jYXRpb24KPj4gY29kZSB3b3VsZCBsZWFkIHRvIGluZmlu aXRlIHJlY3Vyc2lvbiEgTGF0ZXIgcGF0Y2hlcyBpbiB0aGlzIHNlcmllcyByZW1vdmUgdGhlCj4+ IG5lZWQgZm9yIGJlZ2luKCkgdG8gZG8gdGhlIGFsbG9jYXRlLiBBdCB0aGF0IHBvaW50LCBpdCBi ZWNvbWVzIHNhZmUgZm9yIHRoZQo+PiBhbGxvY2F0ZSB0byBjYWxsIGJlZ2luKCkgYW5kIHJlYWxs eSByZXNlcnZlIHRoZSBzcGFjZS4KPj4KPj4gVW50aWwgdGhlbiwgdGhlcmUgaXMgYSBwb3RlbnRp YWwgZm9yIGluc3VmZmljaWVudCBzcGFjZSB0byBiZSBhdmFpbGFibGUgYXQgdGhlCj4+IHBvaW50 IG9mIGNhbGxpbmcgaTkxNV9hZGRfcmVxdWVzdCgpLiBIb3dldmVyLCB0aGF0IHdvdWxkIG9ubHkg YmUgaW4gdGhlIGNhc2UKPj4gd2hlcmUgdGhlIHJlcXVlc3Qgd2FzIGNyZWF0ZWQgYW5kIGltbWVk aWF0ZWx5IHN1Ym1pdHRlZCB3aXRob3V0IGV2ZXIgY2FsbGluZwo+PiByaW5nX2JlZ2luKCkgYW5k IGFkZGluZyBhbnkgd29yayB0byB0aGF0IHJlcXVlc3QuIFdoaWNoIHNob3VsZCBuZXZlciBoYXBw ZW4uIEFuZAo+PiBldmVuIGlmIGl0IGRvZXMsIGFuZCBpZiB0aGF0IHJlcXVlc3QgaGFwcGVucyB0 byBmYWxsIGRvd24gdGhlIHRpbnkgd2luZG93IG9mCj4+IG9wcG9ydHVuaXR5IGZvciBmYWlsaW5n IGR1ZSB0byBiZWluZyBvdXQgb2YgcmluZyBzcGFjZSB0aGVuIGRvZXMgaXQgcmVhbGx5Cj4+IG1h dHRlciBiZWNhdXNlIHRoZSByZXF1ZXN0IHdhc24ndCBkb2luZyBhbnl0aGluZyBpbiB0aGUgZmly c3QgcGxhY2U/Cj4+Cj4+IHYyOiBVcGRhdGVkIHRoZSAncmVzZXJ2ZWQgc3BhY2UgdG9vIHNtYWxs JyB3YXJuaW5nIHRvIGluY2x1ZGUgdGhlIG9mZmVuZGluZwo+PiBzaXplcy4gQWRkZWQgYSAnY2Fu Y2VsJyBvcGVyYXRpb24gdG8gY2xlYW4gdXAgd2hlbiBhIHJlcXVlc3QgaXMgYWJhbmRvbmVkLiBB ZGRlZAo+PiByZS1pbml0aWFsaXNhdGlvbiBvZiB0cmFja2luZyBzdGF0ZSBhZnRlciBhIGJ1ZmZl ciB3cmFwIHRvIGtlZXAgdGhlIHNhbml0eQo+PiBjaGVja3MgYWNjdXJhdGUuCj4+Cj4+IHYzOiBJ bmNyZW1lbnRlZCB0aGUgcmVzZXJ2ZWQgc2l6ZSB0byBhY2NvbW1vZGF0ZSBJcm9ubGFrZSAoYWZ0 ZXIgZmluYWxseQo+PiBtYW5hZ2luZyB0byBydW4gb24gYW4gSUxLIHN5c3RlbSkuIEFsc28gZml4 ZWQgbWlzc2luZyB3cmFwIGNvZGUgaW4gTFJDIG1vZGUuCj4+Cj4+IEZvcjogVklaLTUxMTUKPj4g U2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4K PiAgRnJvbSB0aGUgbGFzdCByZXZpZXcgcm91bmQgdGhlcmUncyBzdGlsbCBteSBxdWVzdGlvbiB3 cnQgdGhlIGNvcnJlY3RuZXNzCj4gb2YgdGhlIHJlc2VydmF0aW9uIG92ZXJmbG93IHZzLiB3cmFw cGluZyBvdXRzdGFuZGluZzoKPgo+IGh0dHA6Ly9hcnRpY2xlLmdtYW5lLm9yZy9nbWFuZS5jb21w LmZyZWVkZXNrdG9wLnhvcmcuZHJpdmVycy5pbnRlbC81NjU3NQoKdjIgLSAnYWRkZWQgcmUtaW50 aWFsaXNhdGlvbiBvZiB0cmFja2luZyBzdGF0ZSBhZnRlciBhIGJ1ZmZlciB3cmFwIHRvIAprZWVw IHRoZSBzYW5pdHkgY2hlY2tzIGFjY3VyYXRlJy4gRG9lcyB0aGF0IG5vdCBhZGRyZXNzIHlvdXIg aXNzdWUgd2l0aCAKd3JhcHBpbmc/CgoKPiBBbHNvIHdoZW4gcmVzZW5kaW5nIHBhdGNoZXMsIGVz cGVjaWFsbHkgYWZ0ZXIgc3VjaCBhIGxvbmcgZGVsYXkgcGxlYXNlCj4gbGVhdmUgc29tZSBpbmRp Y2F0aW9uIG9mIHdoYXQgeW91J3ZlIGRlY2lkZWQgdG8gZG8gd3J0IHJldmlldyBjb21tZW50cy4K PiBFaXRoZXIgYXMgYSByZXBseSBpbiB0aGUgcmV2aWV3IGRpc2N1c3Npb24gKHByZWZlcnJlZCkg b3IgYXQgbGVhc3QgYXMgYW4KPiB1cGRhdGUgaW4gdGhlIGNvdmVyIGxldHRlciBvciBwZXItcGF0 Y2ggY2hhbmdlbG9nLiBPdGhlcndpc2UgcmV2aWV3ZXJzCj4gbmVlZCB0byByZXZlcnNlLWVuZ2lu ZWVyIHdoYXQgeW91IGhhdmUgb3IgaGF2ZW4ndCBkb25lIGJ5IGRpZmZpbmcgcGF0Y2hlcywKPiB3 aGljaCBpcyBqdXN0IG5vdCB0aGF0IGVmZmljaWVudC4KPiAtRGFuaWVsCj4KPj4gLS0tCj4+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAgMSArCj4+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgICAzNyArKysrKysrKysrKysr KysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAgMTgg KysrKysrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAg IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgIDI1ICsrKysrKysrKysrKwo+PiAgIDUgZmlsZXMg Y2hhbmdlZCwgMTQ3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+PiBpbmRleCBlOWQ3NmYzLi40NGRlZTMxIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPj4gQEAgLTIxODcsNiArMjE4Nyw3IEBAIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCB7Cj4+ICAgCj4+ICAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4gICAJCQkgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4KTsKPj4gK3ZvaWQgaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpOwo+PiAgIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVjdCBr cmVmICpyZXFfcmVmKTsKPj4gICAKPj4gICBzdGF0aWMgaW5saW5lIHVpbnQzMl90Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+PiBpbmRleCA3OGY2YTg5Li41MTZlOWI3IDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKPj4gQEAgLTI0OTUsNiArMjQ5NSwxMyBAQCBpbnQgX19pOTE1X2Fk ZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ICAgCX0gZWxzZQo+PiAg IAkJcmluZ2J1ZiA9IHJpbmctPmJ1ZmZlcjsKPj4gICAKPj4gKwkvKgo+PiArCSAqIFRvIGVuc3Vy ZSB0aGF0IHRoaXMgY2FsbCB3aWxsIG5vdCBmYWlsLCBzcGFjZSBmb3IgaXRzIGVtaXNzaW9ucwo+ PiArCSAqIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiByZXNlcnZlZCBpbiB0aGUgcmluZyBidWZm ZXIuIExldCB0aGUgcmluZwo+PiArCSAqIGtub3cgdGhhdCBpdCBpcyB0aW1lIHRvIHVzZSB0aGF0 IHNwYWNlIHVwLgo+PiArCSAqLwo+PiArCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfdXNlKHJp bmdidWYpOwo+PiArCj4+ICAgCXJlcXVlc3Rfc3RhcnQgPSBpbnRlbF9yaW5nX2dldF90YWlsKHJp bmdidWYpOwo+PiAgIAkvKgo+PiAgIAkgKiBFbWl0IGFueSBvdXRzdGFuZGluZyBmbHVzaGVzIC0g ZXhlY2J1ZiBjYW4gZmFpbCB0byBlbWl0IHRoZSBmbHVzaAo+PiBAQCAtMjU3Nyw2ICsyNTg0LDkg QEAgaW50IF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ PiAgIAkJCSAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKPj4gICAJaW50ZWxfbWFy a19idXN5KGRldl9wcml2LT5kZXYpOwo+PiAgIAo+PiArCS8qIFNhbml0eSBjaGVjayB0aGF0IHRo ZSByZXNlcnZlZCBzaXplIHdhcyBsYXJnZSBlbm91Z2guICovCj4+ICsJaW50ZWxfcmluZ19yZXNl cnZlZF9zcGFjZV9lbmQocmluZ2J1Zik7Cj4+ICsKPj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+PiAg IAo+PiBAQCAtMjY3Niw2ICsyNjg2LDI2IEBAIGludCBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ICAgCWlmIChyZXQpCj4+ICAgCQlnb3RvIGVy cjsKPj4gICAKPj4gKwkvKgo+PiArCSAqIFJlc2VydmUgc3BhY2UgaW4gdGhlIHJpbmcgYnVmZmVy IGZvciBhbGwgdGhlIGNvbW1hbmRzIHJlcXVpcmVkIHRvCj4+ICsJICogZXZlbnR1YWxseSBlbWl0 IHRoaXMgcmVxdWVzdC4gVGhpcyBpcyB0byBndWFyYW50ZWUgdGhhdCB0aGUKPj4gKwkgKiBpOTE1 X2FkZF9yZXF1ZXN0KCkgY2FsbCBjYW4ndCBmYWlsLiBOb3RlIHRoYXQgdGhlIHJlc2VydmUgbWF5 IG5lZWQKPj4gKwkgKiB0byBiZSByZWRvbmUgaWYgdGhlIHJlcXVlc3QgaXMgbm90IGFjdHVhbGx5 IHN1Ym1pdHRlZCBzdHJhaWdodAo+PiArCSAqIGF3YXksIGUuZy4gYmVjYXVzZSBhIEdQVSBzY2hl ZHVsZXIgaGFzIGRlZmVycmVkIGl0Lgo+PiArCSAqCj4+ICsJICogTm90ZSBmdXJ0aGVyIHRoYXQg dGhpcyBjYWxsIG1lcmVseSBub3RlcyB0aGUgcmVzZXJ2ZSByZXF1ZXN0LiBBCj4+ICsJICogc3Vi c2VxdWVudCBjYWxsIHRvICpfcmluZ19iZWdpbigpIGlzIHJlcXVpcmVkIHRvIGFjdHVhbGx5IGVu c3VyZQo+PiArCSAqIHRoYXQgdGhlIHJlc2VydmF0aW9uIGlzIGF2YWlsYWJsZS4gV2l0aG91dCB0 aGUgYmVnaW4sIGlmIHRoZQo+PiArCSAqIHJlcXVlc3QgY3JlYXRvciBpbW1lZGlhdGVseSBzdWJt aXR0ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBhZGRpbmcKPj4gKwkgKiBhbnkgY29tbWFuZHMgdG8g aXQgdGhlbiB0aGVyZSBtaWdodCBub3QgYWN0dWFsbHkgYmUgc3VmZmljaWVudAo+PiArCSAqIHJv b20gZm9yIHRoZSBzdWJtaXNzaW9uIGNvbW1hbmRzLiBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVu dAo+PiArCSAqICpfcmluZ19iZWdpbigpIGltcGxlbWVudGF0aW9ucyBwb3RlbnRpYWxseSBjYWxs IGJhY2sgaGVyZSB0bwo+PiArCSAqIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoKS4gVGh1cyBjYWxs aW5nIF9iZWdpbigpIGhlcmUgd291bGQgbGVhZCB0bwo+PiArCSAqIGluZmluaXRlIHJlY3Vyc2lv biEgVW50aWwgdGhhdCBiYWNrIGNhbGwgcGF0aCBpcyByZW1vdmVkLCBpdCBpcwo+PiArCSAqIG5l Y2Vzc2FyeSB0byBkbyBhIG1hbnVhbCBfYmVnaW4oKSBvdXRzaWRlLgo+PiArCSAqLwo+PiArCWlu dGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShyZXEtPnJpbmdidWYsIE1JTl9TUEFDRV9G T1JfQUREX1JFUVVFU1QpOwo+PiArCj4+ICAgCXJpbmctPm91dHN0YW5kaW5nX2xhenlfcmVxdWVz dCA9IHJlcTsKPj4gICAJcmV0dXJuIDA7Cj4+ICAgCj4+IEBAIC0yNjg0LDYgKzI3MTQsMTMgQEAg ZXJyOgo+PiAgIAlyZXR1cm4gcmV0Owo+PiAgIH0KPj4gICAKPj4gK3ZvaWQgaTkxNV9nZW1fcmVx dWVzdF9jYW5jZWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4+ICt7Cj4+ICsJ aW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmVxLT5yaW5nYnVmKTsKPj4gKwo+PiAr CWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2UocmVxKTsKPj4gK30KPj4gKwo+PiAgIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4+ICAgaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVz dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+PiAgIHsKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPj4gaW5kZXggNmE1ZWQwNy4uNDJhNzU2ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPj4gQEAgLTY4Nyw2ICs2ODcsOSBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmlu Z193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPj4gICAJ dW5zaWduZWQgc3BhY2U7Cj4+ICAgCWludCByZXQ7Cj4+ICAgCj4+ICsJLyogVGhlIHdob2xlIHBv aW50IG9mIHJlc2VydmluZyBzcGFjZSBpcyB0byBub3Qgd2FpdCEgKi8KPj4gKwlXQVJOX09OKHJp bmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4+ICsKPj4gICAJaWYgKGludGVsX3Jpbmdfc3BhY2Uo cmluZ2J1ZikgPj0gYnl0ZXMpCj4+ICAgCQlyZXR1cm4gMDsKPj4gICAKPj4gQEAgLTc0Nyw2ICs3 NTAsOSBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZiwKPj4gICAJdWludDMyX3QgX19pb21lbSAqdmlydDsKPj4gICAJ aW50IHJlbSA9IHJpbmdidWYtPnNpemUgLSByaW5nYnVmLT50YWlsOwo+PiAgIAo+PiArCS8qIENh bid0IHdyYXAgaWYgc3BhY2UgaGFzIGFscmVhZHkgYmVlbiByZXNlcnZlZCEgKi8KPj4gKwlXQVJO X09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4+ICsKPj4gICAJaWYgKHJpbmdidWYtPnNw YWNlIDwgcmVtKSB7Cj4+ICAgCQlpbnQgcmV0ID0gbG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNl KHJpbmdidWYsIGN0eCwgcmVtKTsKPj4gICAKPj4gQEAgLTc3MCwxMCArNzc2LDIyIEBAIHN0YXRp YyBpbnQgbG9naWNhbF9yaW5nX3ByZXBhcmUoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdi dWYsCj4+ICAgewo+PiAgIAlpbnQgcmV0Owo+PiAgIAo+PiArCWlmICghcmluZ2J1Zi0+cmVzZXJ2 ZWRfaW5fdXNlKQo+PiArCQlieXRlcyArPSByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+PiArCj4+ ICAgCWlmICh1bmxpa2VseShyaW5nYnVmLT50YWlsICsgYnl0ZXMgPiByaW5nYnVmLT5lZmZlY3Rp dmVfc2l6ZSkpIHsKPj4gKwkJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+PiAr Cj4+ICAgCQlyZXQgPSBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIocmluZ2J1ZiwgY3R4KTsKPj4g ICAJCWlmICh1bmxpa2VseShyZXQpKQo+PiAgIAkJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwkJaWYo cmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSkgewo+PiArCQkJdWludDMyX3Qgc2l6ZSA9IHJpbmdidWYt PnJlc2VydmVkX3NpemU7Cj4+ICsKPj4gKwkJCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2Fu Y2VsKHJpbmdidWYpOwo+PiArCQkJaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9yZXNlcnZlKHJp bmdidWYsIHNpemUpOwo+PiArCQl9Cj4+ICAgCX0KPj4gICAKPj4gICAJaWYgKHVubGlrZWx5KHJp bmdidWYtPnNwYWNlIDwgYnl0ZXMpKSB7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKPj4gaW5kZXggZDkzNGY4NS4uNzRjMjIyMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+PiBAQCAtMjEwMyw2ICsyMTAzLDkgQEAgc3RhdGlj IGludCByaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGlu dCBuKQo+PiAgIAl1bnNpZ25lZCBzcGFjZTsKPj4gICAJaW50IHJldDsKPj4gICAKPj4gKwkvKiBU aGUgd2hvbGUgcG9pbnQgb2YgcmVzZXJ2aW5nIHNwYWNlIGlzIHRvIG5vdCB3YWl0ISAqLwo+PiAr CVdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPj4gKwo+PiAgIAlpZiAoaW50ZWxf cmluZ19zcGFjZShyaW5nYnVmKSA+PSBuKQo+PiAgIAkJcmV0dXJuIDA7Cj4+ICAgCj4+IEBAIC0y MTMwLDYgKzIxMzMsOSBAQCBzdGF0aWMgaW50IGludGVsX3dyYXBfcmluZ19idWZmZXIoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZykKPj4gICAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJp bmdidWYgPSByaW5nLT5idWZmZXI7Cj4+ICAgCWludCByZW0gPSByaW5nYnVmLT5zaXplIC0gcmlu Z2J1Zi0+dGFpbDsKPj4gICAKPj4gKwkvKiBDYW4ndCB3cmFwIGlmIHNwYWNlIGhhcyBhbHJlYWR5 IGJlZW4gcmVzZXJ2ZWQhICovCj4+ICsJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2Up Owo+PiArCj4+ICAgCWlmIChyaW5nYnVmLT5zcGFjZSA8IHJlbSkgewo+PiAgIAkJaW50IHJldCA9 IHJpbmdfd2FpdF9mb3Jfc3BhY2UocmluZywgcmVtKTsKPj4gICAJCWlmIChyZXQpCj4+IEBAIC0y MTgwLDE2ICsyMTg2LDc0IEBAIGludCBpbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPj4gICAJcmV0dXJuIDA7Cj4+ICAg fQo+PiAgIAo+PiAtc3RhdGljIGludCBfX2ludGVsX3JpbmdfcHJlcGFyZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nLAo+PiAtCQkJCWludCBieXRlcykKPj4gK3ZvaWQgaW50ZWxfcmluZ19y ZXNlcnZlZF9zcGFjZV9yZXNlcnZlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLCBp bnQgc2l6ZSkKPj4gK3sKPj4gKwkvKiBOQjogVW50aWwgcmVxdWVzdCBtYW5hZ2VtZW50IGlzIGZ1 bGx5IHRpZGllZCB1cCBhbmQgdGhlIE9MUiBpcwo+PiArCSAqIHJlbW92ZWQsIHRoZXJlIGFyZSB0 b28gbWFueSB3YXlzIGZvciBnZXQgZmFsc2UgaGl0cyBvbiB0aGlzCj4+ICsJICogYW50aS1yZWN1 cnNpb24gY2hlY2shICovCj4+ICsJLypXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX3NpemUpOyov Cj4+ICsJV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+PiArCj4+ICsJcmluZ2J1 Zi0+cmVzZXJ2ZWRfc2l6ZSA9IHNpemU7Cj4+ICsKPj4gKwkvKgo+PiArCSAqIFJlYWxseSBuZWVk IHRvIGNhbGwgX2JlZ2luKCkgaGVyZSBidXQgdGhhdCBjdXJyZW50bHkgbGVhZHMgdG8KPj4gKwkg KiByZWN1cnNpb24gcHJvYmxlbXMhIFRoaXMgd2lsbCBiZSBmaXhlZCBsYXRlciBidXQgZm9yIG5v dyBqdXN0Cj4+ICsJICogcmV0dXJuIGFuZCBob3BlIGZvciB0aGUgYmVzdC4gTm90ZSB0aGF0IHRo ZXJlIGlzIG9ubHkgYSByZWFsCj4+ICsJICogcHJvYmxlbSBpZiB0aGUgY3JlYXRlIG9mIHRoZSBy ZXF1ZXN0IG5ldmVyIGFjdHVhbGx5IGNhbGxzIF9iZWdpbigpCj4+ICsJICogYnV0IGlmIHRoZXkg YXJlIG5vdCBzdWJtaXR0aW5nIGFueSB3b3JrIHRoZW4gd2h5IGRpZCB0aGV5IGNyZWF0ZQo+PiAr CSAqIHRoZSByZXF1ZXN0IGluIHRoZSBmaXJzdCBwbGFjZT8KPj4gKwkgKi8KPj4gK30KPj4gKwo+ PiArdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2NhbmNlbChzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZ2J1ZikKPj4gK3sKPj4gKwlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2lu X3VzZSk7Cj4+ICsKPj4gKwlyaW5nYnVmLT5yZXNlcnZlZF9zaXplICAgPSAwOwo+PiArCXJpbmdi dWYtPnJlc2VydmVkX2luX3VzZSA9IGZhbHNlOwo+PiArfQo+PiArCj4+ICt2b2lkIGludGVsX3Jp bmdfcmVzZXJ2ZWRfc3BhY2VfdXNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ PiArewo+PiArCVdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPj4gKwo+PiArCXJp bmdidWYtPnJlc2VydmVkX2luX3VzZSA9IHRydWU7Cj4+ICsJcmluZ2J1Zi0+cmVzZXJ2ZWRfdGFp bCAgID0gcmluZ2J1Zi0+dGFpbDsKPj4gK30KPj4gKwo+PiArdm9pZCBpbnRlbF9yaW5nX3Jlc2Vy dmVkX3NwYWNlX2VuZChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPj4gK3sKPj4g KwlXQVJOX09OKCFyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+PiArCVdBUk4ocmluZ2J1Zi0+ dGFpbCA+IHJpbmdidWYtPnJlc2VydmVkX3RhaWwgKyByaW5nYnVmLT5yZXNlcnZlZF9zaXplLAo+ PiArCSAgICAgInJlcXVlc3QgcmVzZXJ2ZWQgc2l6ZSB0b28gc21hbGw6ICVkIHZzICVkIVxuIiwK Pj4gKwkgICAgIHJpbmdidWYtPnRhaWwgLSByaW5nYnVmLT5yZXNlcnZlZF90YWlsLCByaW5nYnVm LT5yZXNlcnZlZF9zaXplKTsKPj4gKwo+PiArCXJpbmdidWYtPnJlc2VydmVkX3NpemUgICA9IDA7 Cj4+ICsJcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlID0gZmFsc2U7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBpbnQgX19pbnRlbF9yaW5nX3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywgaW50IGJ5dGVzKQo+PiAgIHsKPj4gICAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdi dWYgPSByaW5nLT5idWZmZXI7Cj4+ICAgCWludCByZXQ7Cj4+ICAgCj4+ICsJaWYgKCFyaW5nYnVm LT5yZXNlcnZlZF9pbl91c2UpCj4+ICsJCWJ5dGVzICs9IHJpbmdidWYtPnJlc2VydmVkX3NpemU7 Cj4+ICsKPj4gICAJaWYgKHVubGlrZWx5KHJpbmdidWYtPnRhaWwgKyBieXRlcyA+IHJpbmdidWYt PmVmZmVjdGl2ZV9zaXplKSkgewo+PiArCQlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3Vz ZSk7Cj4+ICsKPj4gICAJCXJldCA9IGludGVsX3dyYXBfcmluZ19idWZmZXIocmluZyk7Cj4+ICAg CQlpZiAodW5saWtlbHkocmV0KSkKPj4gICAJCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJCWlmKHJp bmdidWYtPnJlc2VydmVkX3NpemUpIHsKPj4gKwkJCXVpbnQzMl90IHNpemUgPSByaW5nYnVmLT5y ZXNlcnZlZF9zaXplOwo+PiArCj4+ICsJCQlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2NhbmNl bChyaW5nYnVmKTsKPj4gKwkJCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVzZXJ2ZShyaW5n YnVmLCBzaXplKTsKPj4gKwkJfQo+PiAgIAl9Cj4+ICAgCj4+ICAgCWlmICh1bmxpa2VseShyaW5n YnVmLT5zcGFjZSA8IGJ5dGVzKSkgewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oCj4+IGluZGV4IDM5ZjZkZmMuLmJmMmFjMjggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPj4gQEAgLTEwNSw2ICsxMDUsOSBAQCBzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciB7Cj4+ICAgCWludCBzcGFjZTsKPj4gICAJaW50IHNpemU7Cj4+ICAgCWlu dCBlZmZlY3RpdmVfc2l6ZTsKPj4gKwlpbnQgcmVzZXJ2ZWRfc2l6ZTsKPj4gKwlpbnQgcmVzZXJ2 ZWRfdGFpbDsKPj4gKwlib29sIHJlc2VydmVkX2luX3VzZTsKPj4gICAKPj4gICAJLyoqIFdlIHRy YWNrIHRoZSBwb3NpdGlvbiBvZiB0aGUgcmVxdWVzdHMgaW4gdGhlIHJpbmcgYnVmZmVyLCBhbmQK Pj4gICAJICogd2hlbiBlYWNoIGlzIHJldGlyZWQgd2UgaW5jcmVtZW50IGxhc3RfcmV0aXJlZF9o ZWFkIGFzIHRoZSBHUFUKPj4gQEAgLTQ1MCw0ICs0NTMsMjYgQEAgaW50ZWxfcmluZ19nZXRfcmVx dWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+PiAgIAlyZXR1cm4gcmluZy0+b3V0 c3RhbmRpbmdfbGF6eV9yZXF1ZXN0Owo+PiAgIH0KPj4gICAKPj4gKy8qCj4+ICsgKiBBcmJpdHJh cnkgc2l6ZSBmb3IgbGFyZ2VzdCBwb3NzaWJsZSAnYWRkIHJlcXVlc3QnIHNlcXVlbmNlLiBUaGUg Y29kZSBwYXRocwo+PiArICogYXJlIGNvbXBsZXggYW5kIHZhcmlhYmxlLiBFbXBpcmljYWwgbWVh c3VyZW1lbnQgc2hvd3MgdGhhdCB0aGUgd29yc3QgY2FzZQo+PiArICogaXMgSUxLIGF0IDEzNiB3 b3Jkcy4gUmVzZXJ2aW5nIHRvbyBtdWNoIGlzIGJldHRlciB0aGFuIHJlc2VydmluZyB0b28gbGl0 dGxlCj4+ICsgKiBhcyB0aGF0IGFsbG93cyBmb3IgY29ybmVyIGNhc2VzIHRoYXQgbWlnaHQgaGF2 ZSBiZWVuIG1pc3NlZC4gU28gdGhlIGZpZ3VyZQo+PiArICogaGFzIGJlZW4gcm91bmRlZCB1cCB0 byAxNjAgd29yZHMuCj4+ICsgKi8KPj4gKyNkZWZpbmUgTUlOX1NQQUNFX0ZPUl9BRERfUkVRVUVT VAkxNjAKPj4gKwo+PiArLyoKPj4gKyAqIFJlc2VydmUgc3BhY2UgaW4gdGhlIHJpbmcgdG8gZ3Vh cmFudGVlIHRoYXQgdGhlIGk5MTVfYWRkX3JlcXVlc3QoKSBjYWxsCj4+ICsgKiB3aWxsIGFsd2F5 cyBoYXZlIHN1ZmZpY2llbnQgcm9vbSB0byBkbyBpdHMgc3R1ZmYuIFRoZSByZXF1ZXN0IGNyZWF0 aW9uCj4+ICsgKiBjb2RlIGNhbGxzIHRoaXMgYXV0b21hdGljYWxseS4KPj4gKyAqLwo+PiArdm9p ZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2VydmUoc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmdidWYsIGludCBzaXplKTsKPj4gKy8qIENhbmNlbCB0aGUgcmVzZXJ2YXRpb24sIGUu Zy4gYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBiZWluZyBkaXNjYXJkZWQuICovCj4+ICt2b2lkIGlu dGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmKTsKPj4gKy8qIFVzZSB0aGUgcmVzZXJ2ZWQgc3BhY2UgLSBmb3IgdXNlIGJ5IGk5MTVf YWRkX3JlcXVlc3QoKSBvbmx5LiAqLwo+PiArdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNl X3VzZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4+ICsvKiBGaW5pc2ggd2l0 aCB0aGUgcmVzZXJ2ZWQgc3BhY2UgLSBmb3IgdXNlIGJ5IGk5MTVfYWRkX3JlcXVlc3QoKSBvbmx5 LiAqLwo+PiArdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2VuZChzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4+ICsKPj4gICAjZW5kaWYgLyogX0lOVEVMX1JJTkdCVUZG RVJfSF8gKi8KPj4gLS0gCj4+IDEuNy45LjUKPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==