From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 2/5] drm/i915: Use batch pools with the command parser Date: Tue, 4 Nov 2014 11:17:59 +0100 Message-ID: <20141104101759.GF26941@phenom.ffwll.local> References: <1415042385-26445-1-git-send-email-bradley.d.volkin@intel.com> <1415042385-26445-3-git-send-email-bradley.d.volkin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f41.google.com (mail-wg0-f41.google.com [74.125.82.41]) by gabe.freedesktop.org (Postfix) with ESMTP id 90EB46E02E for ; Tue, 4 Nov 2014 02:17:46 -0800 (PST) Received: by mail-wg0-f41.google.com with SMTP id k14so14585211wgh.0 for ; Tue, 04 Nov 2014 02:17:45 -0800 (PST) Content-Disposition: inline In-Reply-To: <1415042385-26445-3-git-send-email-bradley.d.volkin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: bradley.d.volkin@intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBOb3YgMDMsIDIwMTQgYXQgMTE6MTk6NDJBTSAtMDgwMCwgYnJhZGxleS5kLnZvbGtp bkBpbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogQnJhZCBWb2xraW4gPGJyYWRsZXkuZC52b2xraW5A aW50ZWwuY29tPgo+IAo+IFRoaXMgcGF0Y2ggc2V0cyB1cCBhbGwgb2YgdGhlIHRyYWNraW5nIGFu ZCBjb3B5aW5nIG5lY2Vzc2FyeSB0bwo+IHVzZSBiYXRjaCBwb29scyB3aXRoIHRoZSBjb21tYW5k IHBhcnNlciBhbmQgZGlzcGF0Y2hlcyB0aGUgY29waWVkCj4gKHNoYWRvdykgYmF0Y2ggdG8gdGhl IGhhcmR3YXJlLgo+IAo+IEFmdGVyIHRoaXMgcGF0Y2gsIHRoZSBwYXJzZXIgaXMgaW4gJ2VuYWJs aW5nJyBtb2RlLgoKQXdlc29tZS4gT2ssIGEgZmV3IHNtYWxsIGNvbW1lbnRzIGFuZCBub3RlcyBm b3IgcG9saXNoIG9uIHRoaXMgb25lLgoKPiAKPiBOb3RlIHRoYXQgcGVyZm9ybWFuY2UgdGFrZXMg YSBoaXQgZnJvbSB0aGUgY29weSBpbiBzb21lIGNhc2VzCj4gYW5kIHdpbGwgbGlrZWx5IG5lZWQg c29tZSB3b3JrLiBBdCBhIHJvdWdoIHBhc3MsIHRoZSBtZW1jcHkKPiBhcHBlYXJzIHRvIGJlIHRo ZSBib3R0bGVuZWNrLiBXaXRob3V0IGhhdmluZyBkb25lIGEgZGVlcGVyCj4gYW5hbHlzaXMsIHR3 byBpZGVhcyB0aGF0IGNvbWUgdG8gbWluZCBhcmU6Cj4gMSkgQ29weSBzZWN0aW9ucyBvZiB0aGUg YmF0Y2ggYXQgYSB0aW1lLCBhcyB0aGV5IGFyZSByZWFjaGVkCj4gICAgYnkgcGFyc2luZy4gTWln aHQgaW1wcm92ZSBjYWNoZSBsb2NhbGl0eS4KPiAyKSBDb3B5IG9ubHkgdXAgdG8gdGhlIHVzZXJz cGFjZS1zdXBwbGllZCBiYXRjaCBsZW5ndGggYW5kCj4gICAgbWVtc2V0IHRoZSByZXN0IG9mIHRo ZSBidWZmZXIuIFJlZHVjZXMgdGhlIG51bWJlciBvZiByZWFkcy4KPiAKPiB2MjoKPiAtIFJlbW92 ZSBzZXR0aW5nIHRoZSBjYXBhY2l0eSBvZiB0aGUgcG9vbAo+IC0gT25lIGdsb2JhbCBwb29sIGlu c3RlYWQgb2YgcGVyLXJpbmcgcG9vbHMKPiAtIFJlcGxhY2UgYmF0Y2hfb2JqIHdpdGggc2hhZG93 X2JhdGNoX29iaiBhbmQgaG9vayBpbnRvIGViLT52bWFzCj4gLSBNZW1zZXQgYW55IHNwYWNlIGlu IHRoZSBzaGFkb3cgYmF0Y2ggYmV5b25kIHdoYXQgZ2V0cyBjb3BpZWQKCkhtLCB3aGF0IGlzIHRo YXQgbWVtc2V0IGZvcj8gSnVzdCBhcHBlYXNpbmcgdGhlIGNtZHBhcnNlcj8KCkluIHRoYXQgY2Fz ZSB3aHkgY2FuJ3Qgd2UganVzdCBmYWlsIHRoZSBzY2FubmluZyBpZiB3ZSBkb24ndCBmaW5kIHRo ZQpNSV9CQl9FTkQgd2l0aGluIHRoZSBsaW1pdCAtIHRoZSBoYXJkd2FyZSBzaG91bGQgbmV2ZXIg ZXhlY3V0ZSBiZXlvbmQKdGhhdCwgc28gZ2FyYmFnZSBiZXlvbmQgaXMgb2suIE9yIGRvIEkgbWlz cyBzb21ldGhpbmcuCgo+IC0gUmViYXNlZCBvbiBleGVjbGlzdCBwcmVwIHJlZmFjdG9yaW5nCj4g Cj4gdjM6Cj4gLSBSZWJhc2Ugb24gY2hhaW5lZCBiYXRjaCBoYW5kbGluZwo+IC0gU3F1YXNoIGlu IHNldHRpbmcgdGhlIHNlY3VyZSBkaXNwYXRjaCBmbGFnCj4gLSBBZGQgYSBub3RlIGFib3V0IHRo ZSBpbnRlcmFjdGlvbiB3L3NlY3VyZSBkaXNwYXRjaCBwaW5uaW5nCj4gLSBDaGVjayBmb3IgcmVx dWVzdC0+YmF0Y2hfb2JqID09IE5VTEwgaW4gaTkxNV9nZW1fZnJlZV9yZXF1ZXN0Cj4gCj4gU2ln bmVkLW9mZi1ieTogQnJhZCBWb2xraW4gPGJyYWRsZXkuZC52b2xraW5AaW50ZWwuY29tPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyAgICAgfCA4NCArKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k bWEuYyAgICAgICAgICAgIHwgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgICAgICAgfCAgOCArKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAg ICAgICAgICAgIHwgMTAgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMgfCA2MSArKysrKysrKysrKysrKysrKysrKy0tCj4gIDUgZmlsZXMgY2hhbmdlZCwg MTQzIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfY21kX3BhcnNlci5jCj4gaW5kZXggODA5YmI5NS4uYzhmZTQwMyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jCj4gQEAgLTgzOCw2ICs4MzgsNTYgQEAgZmlu aXNoOgo+ICAJcmV0dXJuICh1MzIqKWFkZHI7Cj4gIH0KPiAgCj4gKy8qIFJldHVybnMgYSB2bWFw J2QgcG9pbnRlciB0byBkZXN0X29iaiwgd2hpY2ggdGhlIGNhbGxlciBtdXN0IHVubWFwICovCj4g K3N0YXRpYyB1MzIgKmNvcHlfYmF0Y2goc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmRlc3Rf b2JqLAo+ICsJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3JjX29iaikKPiAr ewo+ICsJaW50IHJldCA9IDA7Cj4gKwlpbnQgbmVlZHNfY2xmbHVzaCA9IDA7Cj4gKwl1MzIgKnNy Y19hZGRyLCAqZGVzdF9hZGRyID0gTlVMTDsKPiArCj4gKwlyZXQgPSBpOTE1X2dlbV9vYmpfcHJl cGFyZV9zaG1lbV9yZWFkKHNyY19vYmosICZuZWVkc19jbGZsdXNoKTsKPiArCWlmIChyZXQpIHsK PiArCQlEUk1fREVCVUdfRFJJVkVSKCJDTUQ6IGZhaWxlZCB0byBwcmVwIHJlYWRcbiIpOwo+ICsJ CXJldHVybiBFUlJfUFRSKHJldCk7Cj4gKwl9Cj4gKwo+ICsJc3JjX2FkZHIgPSB2bWFwX2JhdGNo KHNyY19vYmopOwo+ICsJaWYgKCFzcmNfYWRkcikgewo+ICsJCURSTV9ERUJVR19EUklWRVIoIkNN RDogRmFpbGVkIHRvIHZtYXAgYmF0Y2hcbiIpOwo+ICsJCXJldCA9IC1FTk9NRU07Cj4gKwkJZ290 byB1bnBpbl9zcmM7Cj4gKwl9Cj4gKwo+ICsJaWYgKG5lZWRzX2NsZmx1c2gpCj4gKwkJZHJtX2Ns Zmx1c2hfdmlydF9yYW5nZSgoY2hhciAqKXNyY19hZGRyLCBzcmNfb2JqLT5iYXNlLnNpemUpOwo+ ICsKPiArCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbihkZXN0X29iaiwg dHJ1ZSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiQ01EOiBGYWlsZWQg dG8gc2V0IGJhdGNoIENQVSBkb21haW5cbiIpOwo+ICsJCWdvdG8gdW5tYXBfc3JjOwo+ICsJfQo+ ICsKPiArCWRlc3RfYWRkciA9IHZtYXBfYmF0Y2goZGVzdF9vYmopOwo+ICsJaWYgKCFkZXN0X2Fk ZHIpIHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJDTUQ6IEZhaWxlZCB0byB2bWFwIHNoYWRvdyBi YXRjaFxuIik7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlnb3RvIHVubWFwX3NyYzsKPiArCX0K PiArCj4gKwltZW1jcHkoZGVzdF9hZGRyLCBzcmNfYWRkciwgc3JjX29iai0+YmFzZS5zaXplKTsK PiArCWlmIChkZXN0X29iai0+YmFzZS5zaXplID4gc3JjX29iai0+YmFzZS5zaXplKQo+ICsJCW1l bXNldCgodTggKilkZXN0X2FkZHIgKyBzcmNfb2JqLT5iYXNlLnNpemUsIDAsCj4gKwkJICAgICAg IGRlc3Rfb2JqLT5iYXNlLnNpemUgLSBzcmNfb2JqLT5iYXNlLnNpemUpOwoKSG0sIG5vIGluLWxp bmUgY2xmbHVzaCBhbmQgY2FjaGVkIGNwdSBtbWFwcy4gSG93IHNsb3cgaXMgdGhpcyBvbiB2bHY/ Cgo+ICsKPiArdW5tYXBfc3JjOgo+ICsJdnVubWFwKHNyY19hZGRyKTsKPiArdW5waW5fc3JjOgo+ ICsJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHNyY19vYmopOwo+ICsKPiArCXJldHVybiBy ZXQgPyBFUlJfUFRSKHJldCkgOiBkZXN0X2FkZHI7Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBpOTE1 X25lZWRzX2NtZF9wYXJzZXIoKSAtIHNob3VsZCBhIGdpdmVuIHJpbmcgdXNlIHNvZnR3YXJlIGNv bW1hbmQgcGFyc2luZz8KPiAgICogQHJpbmc6IHRoZSByaW5nIGluIHF1ZXN0aW9uCj4gQEAgLTk1 NCw2ICsxMDA0LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tfY21kKGNvbnN0IHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCj4gICAqIGk5MTVfcGFyc2VfY21kcygpIC0gcGFyc2UgYSBzdWJtaXR0 ZWQgYmF0Y2ggYnVmZmVyIGZvciBwcml2aWxlZ2UgdmlvbGF0aW9ucwo+ICAgKiBAcmluZzogdGhl IHJpbmcgb24gd2hpY2ggdGhlIGJhdGNoIGlzIHRvIGV4ZWN1dGUKPiAgICogQGJhdGNoX29iajog dGhlIGJhdGNoIGJ1ZmZlciBpbiBxdWVzdGlvbgo+ICsgKiBAc2hhZG93X2JhdGNoX29iajogY29w eSBvZiB0aGUgYmF0Y2ggYnVmZmVyIGluIHF1ZXN0aW9uCj4gICAqIEBiYXRjaF9zdGFydF9vZmZz ZXQ6IGJ5dGUgb2Zmc2V0IGluIHRoZSBiYXRjaCBhdCB3aGljaCBleGVjdXRpb24gc3RhcnRzCj4g ICAqIEBpc19tYXN0ZXI6IGlzIHRoZSBzdWJtaXR0aW5nIHByb2Nlc3MgdGhlIGRybSBtYXN0ZXI/ Cj4gICAqCj4gQEAgLTk2NSwzMiArMTAxNiwyOCBAQCBzdGF0aWMgYm9vbCBjaGVja19jbWQoY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgICovCj4gIGludCBpOTE1X3BhcnNl X2NtZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgCQkgICAgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKmJhdGNoX29iaiwKPiArCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKnNoYWRvd19iYXRjaF9vYmosCj4gIAkJICAgIHUzMiBiYXRjaF9zdGFydF9vZmZzZXQs Cj4gIAkJICAgIGJvb2wgaXNfbWFzdGVyKQo+ICB7Cj4gIAlpbnQgcmV0ID0gMDsKPiAgCXUzMiAq Y21kLCAqYmF0Y2hfYmFzZSwgKmJhdGNoX2VuZDsKPiAgCXN0cnVjdCBkcm1faTkxNV9jbWRfZGVz Y3JpcHRvciBkZWZhdWx0X2Rlc2MgPSB7IDAgfTsKPiAtCWludCBuZWVkc19jbGZsdXNoID0gMDsK PiAgCWJvb2wgb2Fjb250cm9sX3NldCA9IGZhbHNlOyAvKiBPQUNPTlRST0wgdHJhY2tpbmcuIFNl ZSBjaGVja19jbWQoKSAqLwo+ICAKPiAtCXJldCA9IGk5MTVfZ2VtX29ial9wcmVwYXJlX3NobWVt X3JlYWQoYmF0Y2hfb2JqLCAmbmVlZHNfY2xmbHVzaCk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJRFJN X0RFQlVHX0RSSVZFUigiQ01EOiBmYWlsZWQgdG8gcHJlcCByZWFkXG4iKTsKPiAtCQlyZXR1cm4g cmV0Owo+ICsJYmF0Y2hfYmFzZSA9IGNvcHlfYmF0Y2goc2hhZG93X2JhdGNoX29iaiwgYmF0Y2hf b2JqKTsKPiArCWlmIChJU19FUlIoYmF0Y2hfYmFzZSkpIHsKPiArCQlEUk1fREVCVUdfRFJJVkVS KCJDTUQ6IEZhaWxlZCB0byBjb3B5IGJhdGNoXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihiYXRj aF9iYXNlKTsKPiAgCX0KPiAgCj4gLQliYXRjaF9iYXNlID0gdm1hcF9iYXRjaChiYXRjaF9vYmop Owo+IC0JaWYgKCFiYXRjaF9iYXNlKSB7Cj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiQ01EOiBGYWls ZWQgdG8gdm1hcCBiYXRjaFxuIik7Cj4gLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKGJh dGNoX29iaik7Cj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQl9Cj4gLQo+IC0JaWYgKG5lZWRzX2Ns Zmx1c2gpCj4gLQkJZHJtX2NsZmx1c2hfdmlydF9yYW5nZSgoY2hhciAqKWJhdGNoX2Jhc2UsIGJh dGNoX29iai0+YmFzZS5zaXplKTsKPiAtCj4gIAljbWQgPSBiYXRjaF9iYXNlICsgKGJhdGNoX3N0 YXJ0X29mZnNldCAvIHNpemVvZigqY21kKSk7Cj4gKwo+ICsJLyoKPiArCSAqIFdlIHVzZSB0aGUg c291cmNlIG9iamVjdCdzIHNpemUgYmVjYXVzZSB0aGUgc2hhZG93IG9iamVjdCBpcyBhcwo+ICsJ ICogbGFyZ2Ugb3IgbGFyZ2VyIGFuZCBjb3B5X2JhdGNoKCkgd2lsbCB3cml0ZSBNSV9OT1BzIHRv IHRoZSBleHRyYQo+ICsJICogc3BhY2UuIFBhcnNpbmcgc2hvdWxkIGJlIGZhc3RlciBpbiBzb21l IGNhc2VzIHRoaXMgd2F5Lgo+ICsJICovCj4gIAliYXRjaF9lbmQgPSBjbWQgKyAoYmF0Y2hfb2Jq LT5iYXNlLnNpemUgLyBzaXplb2YoKmJhdGNoX2VuZCkpOwo+ICAKPiAgCXdoaWxlIChjbWQgPCBi YXRjaF9lbmQpIHsKPiBAQCAtMTA1Miw3ICsxMDk5LDEyIEBAIGludCBpOTE1X3BhcnNlX2NtZHMo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgCj4gIAl2dW5tYXAoYmF0Y2hfYmFzZSk7 Cj4gIAo+IC0JaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKGJhdGNoX29iaik7Cj4gKwlpZiAo IXJldCkgewo+ICsJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihzaGFk b3dfYmF0Y2hfb2JqLAo+ICsJCQkJCQkJZmFsc2UpOwoKVGhpcyBzbWVsbHMgbGlrZSBoYWNraW5n IGFyb3VuZCB0aGUgZG9tYWluIHRyYWNraW5nIHN5c3RlbS4gVGhlIGJhdGNoIGlzCmV4ZWN1dGVk IGJ5IHRoZSBncHUsIGd0dCBkb21haW4gaXMgZm9yIGNwdSBhY2Nlc3MuIFRoaXMgbWlnaHQgYWxz byBiZSBhCnJlYXNvbiB3aHkgdGhlIHNocmlua2VyIHdyZWFrcyBoYXZvYyB3aXRoIHlvdSBzaGFk b3cgcGF0Y2hlcy4gV2l0aCB0aGUKY29ycmVjdCBwZW5kaW5nX3JlYWRfZG9tYWlucyBtb3ZlX3Rv X2FjdGl2ZSBzaG91bGQgdGFrZSBjYXJlIG9mIHRoaW5ncwptb3N0bHkuCgo+ICsJCWlmIChyZXQp Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogRmFpbGVkIHRvIHNldCBiYXRjaCBHVFQgZG9t YWluXG4iKTsKPiArCX0KPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RtYS5jCj4gaW5kZXggOWE3MzUzMy4uZGVhMGY0NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k bWEuYwo+IEBAIC0xODkxLDYgKzE4OTEsNyBAQCBpbnQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPiAgCQlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKPiArCQlpOTE1X2dlbV9i YXRjaF9wb29sX2ZpbmkoJmRldl9wcml2LT5tbS5iYXRjaF9wb29sKTsKPiAgCQlpOTE1X2dlbV9j b250ZXh0X2ZpbmkoZGV2KTsKPiAgCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiAgCQlpOTE1X2dlbV9jbGVhbnVwX3N0b2xlbihkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+IGluZGV4IGZiZjEwY2MuLjUwZDk3NGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiBAQCAtMTE0NSw2ICsxMTQ1LDEzIEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7Cj4gIAkgKi8KPiAg CXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0Owo+ICAKPiArCS8qCj4gKwkgKiBBIHBvb2wg b2Ygb2JqZWN0cyB0byB1c2UgYXMgc2hhZG93IGNvcGllcyBvZiBjbGllbnQgYmF0Y2ggYnVmZmVy cwo+ICsJICogd2hlbiB0aGUgY29tbWFuZCBwYXJzZXIgaXMgZW5hYmxlZC4gUHJldmVudHMgdGhl IGNsaWVudCBmcm9tCj4gKwkgKiBtb2RpZnlpbmcgdGhlIGJhdGNoIGNvbnRlbnRzIGFmdGVyIHNv ZnR3YXJlIHBhcnNpbmcuCj4gKwkgKi8KPiArCXN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sIGJh dGNoX3Bvb2w7Cj4gKwo+ICAJLyoqIFVzYWJsZSBwb3J0aW9uIG9mIHRoZSBHVFQgZm9yIEdFTSAq Lwo+ICAJdW5zaWduZWQgbG9uZyBzdG9sZW5fYmFzZTsgLyogbGltaXRlZCB0byBsb3cgbWVtb3J5 ICgzMi1iaXQpICovCj4gIAo+IEBAIC0yNzgyLDYgKzI3ODksNyBAQCB2b2lkIGk5MTVfY21kX3Bh cnNlcl9maW5pX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Cj4gIGJvb2wgaTkx NV9uZWVkc19jbWRfcGFyc2VyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICBpbnQg aTkxNV9wYXJzZV9jbWRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gIAkJICAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiYXRjaF9vYmosCj4gKwkJICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpzaGFkb3dfYmF0Y2hfb2JqLAo+ICAJCSAgICB1MzIgYmF0Y2hfc3Rh cnRfb2Zmc2V0LAo+ICAJCSAgICBib29sIGlzX21hc3Rlcik7Cj4gIAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+IGluZGV4IDRkYmQ3YjkuLmM1OTEwMGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBAQCAtMjUwMCw2ICsyNTAwLDE0IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2ZyZWVf cmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIAlpZiAocmVx dWVzdC0+Y3R4KQo+ICAJCWk5MTVfZ2VtX2NvbnRleHRfdW5yZWZlcmVuY2UocmVxdWVzdC0+Y3R4 KTsKPiAgCj4gKwlpZiAocmVxdWVzdC0+YmF0Y2hfb2JqICYmCj4gKwkgICAgIWxpc3RfZW1wdHko JnJlcXVlc3QtPmJhdGNoX29iai0+YmF0Y2hfcG9vbF9saXN0KSkgewo+ICsJCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocmVxdWVzdC0+cmluZy0+ZGV2KTsKPiAr Cj4gKwkJaTkxNV9nZW1fYmF0Y2hfcG9vbF9wdXQoJmRldl9wcml2LT5tbS5iYXRjaF9wb29sLAo+ ICsJCQkJCXJlcXVlc3QtPmJhdGNoX29iaik7Cj4gKwl9CgpUaGlzIGxvb2tzIGEgYml0IGxpa2Ug cmVpbnZlbnRlZCBhY3RpdmUgdHJhY2tpbmcuIElmIHdlIGNvcHkgdGhlIGxpYmRybQpjYWNoZSBk ZXNpZ24gYSBiaXQgbW9yZSB0aGUgY2FjaGUgd291bGQgc2ltcGx5IHdhbGsgdGhlIGFjdGl2ZSBs aXN0IHdoZW4KdGhlcmUncyBub3RoaW5nIGluIHRoZSBpbmFjdGl2ZSBsaXN0IGFuZCBzaG92ZWwg YWxsIHRoZSBvYmplY3RzIHdpdGgKLT5hY3RpdmUuCgpUaGUgYWR2YW50YWdlIHdvdWxkIGJlIHRo YXQgd2Ugd291bGRuJ3QgbGVhayBzcGVjaWFsIGJhdGNoX3Bvb2xfcHV0IGNvZGUKYWxsIG92ZXIg dGhlIHBsYWNlLCBrZWVwaW5nIHRoaW5ncyBuaWNlJnRpZHkuCgo+ICsKPiAgCWtmcmVlKHJlcXVl c3QpOwo+ICB9Cj4gIAo+IEBAIC01MDE5LDYgKzUwMjcsOCBAQCBpOTE1X2dlbV9sb2FkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAlkZXZfcHJpdi0+bW0ub29tX25vdGlmaWVyLm5vdGlmaWVy X2NhbGwgPSBpOTE1X2dlbV9zaHJpbmtlcl9vb207Cj4gIAlyZWdpc3Rlcl9vb21fbm90aWZpZXIo JmRldl9wcml2LT5tbS5vb21fbm90aWZpZXIpOwo+ICAKPiArCWk5MTVfZ2VtX2JhdGNoX3Bvb2xf aW5pdChkZXYsICZkZXZfcHJpdi0+bW0uYmF0Y2hfcG9vbCk7Cj4gKwo+ICAJbXV0ZXhfaW5pdCgm ZGV2X3ByaXYtPmZiX3RyYWNraW5nLmxvY2spOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCA0YjdmNWMxLi5jMjE2ZmYyIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0xMjM2 LDYgKzEyMzYsOCBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGViX3ZtYXMgKmViOwo+ICAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKmJhdGNoX29iajsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpzaGFkb3dfYmF0Y2hfb2JqID0gTlVMTDsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyIHNoYWRvd19leGVjX2VudHJ5Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZzsKPiAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHg7Cj4gIAlzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bTsKPiBAQCAtMTM2MSwyMiArMTM2Myw2MyBAQCBpOTE1X2dlbV9kb19leGVjYnVm ZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAliYXRjaF9vYmotPmJh c2UucGVuZGluZ19yZWFkX2RvbWFpbnMgfD0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7CgpUaGlz IGxpbmUgaGVyZSB0byBhc3NpZ24gcmVhZCBkb21haW5zIGlzIG9ubHkgcmVxdWlyZWQgb24gdGhl IHJlYWwgYmF0Y2gKb2JqLiBTbyBJIHRoaW5rIHRoaXMgc2hvdWxkIGJlIGludG8gdGhlIGlmIG1h emUgYmVsb3cgdG8gbWFrZSBzdXJlIHdlIG9ubHkKc2V0IGl0IG9uIHRoZSByZWFsIGJhdGNoIChl aXRoZXIgdGhlIHVzZXJzcGFjZSBvbmUgb3IgdGhlIHNoYWRvdyBjb3B5KS4KCj4gIAo+ICAJaWYg KGk5MTVfbmVlZHNfY21kX3BhcnNlcihyaW5nKSkgewo+ICsJCXNoYWRvd19iYXRjaF9vYmogPQo+ ICsJCQlpOTE1X2dlbV9iYXRjaF9wb29sX2dldCgmZGV2X3ByaXYtPm1tLmJhdGNoX3Bvb2wsCj4g KwkJCQkJCWJhdGNoX29iai0+YmFzZS5zaXplKTsKPiArCQlpZiAoSVNfRVJSKHNoYWRvd19iYXRj aF9vYmopKSB7Cj4gKwkJCXJldCA9IFBUUl9FUlIoc2hhZG93X2JhdGNoX29iaik7Cj4gKwkJCS8q IERvbid0IHRyeSB0byBjbGVhbiB1cCB0aGUgb2JqIGluIHRoZSBlcnJvciBwYXRoICovCj4gKwkJ CXNoYWRvd19iYXRjaF9vYmogPSBOVUxMOwo+ICsJCQlnb3RvIGVycjsKPiArCQl9Cj4gKwo+ICsJ CXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihzaGFkb3dfYmF0Y2hfb2JqLCA0MDk2LCAwKTsK PiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycjsKPiArCj4gIAkJcmV0ID0gaTkxNV9wYXJzZV9j bWRzKHJpbmcsCj4gIAkJCQkgICAgICBiYXRjaF9vYmosCj4gKwkJCQkgICAgICBzaGFkb3dfYmF0 Y2hfb2JqLAo+ICAJCQkJICAgICAgYXJncy0+YmF0Y2hfc3RhcnRfb2Zmc2V0LAo+ICAJCQkJICAg ICAgZmlsZS0+aXNfbWFzdGVyKTsKPiAgCQlpZiAocmV0KSB7Cj4gIAkJCWlmIChyZXQgIT0gLUVB Q0NFUykKPiAgCQkJCWdvdG8gZXJyOwo+ICsJCQllbHNlIHsKPiArCQkJCWk5MTVfZ2VtX29iamVj dF9nZ3R0X3VucGluKHNoYWRvd19iYXRjaF9vYmopOwo+ICsJCQkJaTkxNV9nZW1fYmF0Y2hfcG9v bF9wdXQoJmRldl9wcml2LT5tbS5iYXRjaF9wb29sLAo+ICsJCQkJCQkJc2hhZG93X2JhdGNoX29i aik7Cj4gKwkJCX0KPiAgCQl9IGVsc2Ugewo+ICsJCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAr Cj4gKwkJCW1lbXNldCgmc2hhZG93X2V4ZWNfZW50cnksIDAsCj4gKwkJCSAgICAgICBzaXplb2Yo c2hhZG93X2V4ZWNfZW50cnkpKTsKPiArCj4gKwkJCXZtYSA9IGk5MTVfZ2VtX29ial90b19nZ3R0 KHNoYWRvd19iYXRjaF9vYmopOwo+ICsJCQl2bWEtPmV4ZWNfZW50cnkgPSAmc2hhZG93X2V4ZWNf ZW50cnk7Cj4gKwkJCXZtYS0+ZXhlY19lbnRyeS0+ZmxhZ3MgPSBfX0VYRUNfT0JKRUNUX0hBU19Q SU47Cj4gKwkJCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgmc2hhZG93X2JhdGNoX29iai0+YmFz ZSk7Cj4gKwkJCWxpc3RfYWRkX3RhaWwoJnZtYS0+ZXhlY19saXN0LCAmZWItPnZtYXMpOwo+ICsK PiArCQkJYmF0Y2hfb2JqID0gc2hhZG93X2JhdGNoX29iajsKPiArCj4gIAkJCS8qCj4gLQkJCSAq IFhYWDogQWN0dWFsbHkgZG8gdGhpcyB3aGVuIGVuYWJsaW5nIGJhdGNoIGNvcHkuLi4KPiArCQkJ ICogU2V0IHRoZSBESVNQQVRDSF9TRUNVUkUgYml0IHRvIHJlbW92ZSB0aGUgTk9OX1NFQ1VSRQo+ ICsJCQkgKiBiaXQgZnJvbSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgY29tbWFuZHMgaXNzdWVkIGlu IHRoZQo+ICsJCQkgKiBkaXNwYXRjaF9leGVjYnVmZmVyIGltcGxlbWVudGF0aW9ucy4gV2Ugc3Bl Y2lmaWNhbGx5Cj4gKwkJCSAqIGRvbid0IHdhbnQgdGhhdCBzZXQgd2hlbiB0aGUgY29tbWFuZCBw YXJzZXIgaXMKPiArCQkJICogZW5hYmxlZC4KPiAgCQkJICoKPiAtCQkJICogU2V0IHRoZSBESVNQ QVRDSF9TRUNVUkUgYml0IHRvIHJlbW92ZSB0aGUgTk9OX1NFQ1VSRSBiaXQKPiAtCQkJICogZnJv bSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgY29tbWFuZHMgaXNzdWVkIGluIHRoZQo+IC0JCQkgKiBk aXNwYXRjaF9leGVjYnVmZmVyIGltcGxlbWVudGF0aW9ucy4gV2Ugc3BlY2lmaWNhbGx5IGRvbid0 Cj4gLQkJCSAqIHdhbnQgdGhhdCBzZXQgd2hlbiB0aGUgY29tbWFuZCBwYXJzZXIgaXMgZW5hYmxl ZC4KPiArCQkJICogTkI6IEJ5IHNldHRpbmcgdGhpcyBmbGFnLCB3ZSdyZSBnb2luZyB0byBoaXQg dGhlCj4gKwkJCSAqIG5vcm1hbCBzZWN1cmUgZGlzcGF0Y2ggcGF0aCBiZWxvdy4gVGhhdCBwYXRo IHdpbGwKPiArCQkJICogZG8gYW4gZXh0cmEgcGluIG9mIHRoZSBzaGFkb3cgYmF0Y2ggb2JqZWN0 IGFuZCB0aGVuCj4gKwkJCSAqIHVucGluIGFmdGVyIC0+Z3QuZG9fZXhlY2J1ZigpLiBBdCB0aGF0 IHBvaW50LCB0aGUKPiArCQkJICogb2JqZWN0IHdpbGwgaGF2ZSB0aGUgc2luZ2xlIG91dHN0YW5k aW5nIHBpbiBmcm9tCj4gKwkJCSAqIGp1c3QgYmVmb3JlIGNhbGxpbmcgaTkxNV9wYXJzZV9jbWRz KCksIGFuZCB3aWxsIGdldAo+ICsJCQkgKiB1bnBpbm5lZCB2aWEgZWJfZGVzdHJveSgpIGFuZCBf X0VYRUNfT0JKRUNUX0hBU19QSU4uCj4gIAkJCSAqLwoKVGhhdCBzb3VuZHMgbGlrZSB0aGlzIGFk ZGl0aW9uYWwgcGluIHNob3VsZCBiZSBwdXQgaW50byB0aGUgY21kIHBhcnNlciwKanVzdCBhcm91 bmQgdGhlIGNvcHkgZnVuY3Rpb24uCgpBbHNvIGRvX2V4ZWNidWYgaXMgYWxyZWFkeSB3YXkgdG9v IGJpZyBhIGZ1bmN0aW9uLiBJIHRoaW5rIGl0IHdvdWxkIGJlCmdvb2QgdG8gZXh0cmFjdCBhbGwg dGhlIFNFQ1VSRV9ESVNQQVRDSC9jbWQgcGFyc2VyL2JhdGNoX2JvIHNwZWNpYWwKaGFuZGxpbmcg Y29kZSBpbnRvIGEgbmV3IGZ1bmN0aW9uIGZvciBjbGFyaXR5LiBBbmQgdGhlbiBpZiBwb3NzaWJs ZSBub3QKbGVhayBhbnkgb2YgdGhlIGNsZWFudXAgY29kZSBvdXQuCgoKPiArCQkJZmxhZ3MgfD0g STkxNV9ESVNQQVRDSF9TRUNVUkU7Cj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAtMTQxOCw2ICsxNDYx LDE0IEBAIGVycjoKPiAgCWk5MTVfZ2VtX2NvbnRleHRfdW5yZWZlcmVuY2UoY3R4KTsKPiAgCWVi X2Rlc3Ryb3koZWIpOwo+ICAKPiArCWlmIChyZXQgJiYgcmluZyAmJiBzaGFkb3dfYmF0Y2hfb2Jq KSB7Cj4gKwkJaWYgKGk5MTVfZ2VtX29ial9pc19waW5uZWQoc2hhZG93X2JhdGNoX29iaikpCj4g KwkJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKHNoYWRvd19iYXRjaF9vYmopOwoKV2hpY2gg d291bGQgYWxzbyBjbGVhbiB1cCB0aGlzIGNvZGUsIHdoaWNoIGxvb2tzIG1vcmUgbGlrZSBhIGhh Y2sgdG8gd29yawphcm91bmQgdGhlIHBpbl9jb3VudCBjaGVjayBvbiBmaW5hbCB1bnJlZiB0aGFu IGFueXRoaW5nIHNvbGlkIGFuZAppbnRlbnRpb25hbCA7LSkKCj4gKwo+ICsJCWk5MTVfZ2VtX2Jh dGNoX3Bvb2xfcHV0KCZkZXZfcHJpdi0+bW0uYmF0Y2hfcG9vbCwKPiArCQkJCQlzaGFkb3dfYmF0 Y2hfb2JqKTsKPiArCX0KPiArCj4gIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiAgCj4gIHByZV9tdXRleF9lcnI6Cj4gLS0gCj4gMS45LjEKPiAKPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0g aHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK