From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael H. Nguyen" Subject: Re: [PATCH v5 1/7] drm/i915: Implement a framework for batch buffer pools Date: Mon, 08 Dec 2014 10:29:27 -0800 Message-ID: <5485EE07.3050504@intel.com> References: <1417038821-13299-1-git-send-email-michael.h.nguyen@intel.com> <1417038821-13299-2-git-send-email-michael.h.nguyen@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 6EE156E6C5 for ; Mon, 8 Dec 2014 10:25:27 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Bloomfield, Jon" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxMi8wOC8yMDE0IDA3OjE5IEFNLCBCbG9vbWZpZWxkLCBKb24gd3JvdGU6Cj4+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+IEZyb206IE5ndXllbiwgTWljaGFlbCBICj4+IFNlbnQ6 IFdlZG5lc2RheSwgTm92ZW1iZXIgMjYsIDIwMTQgOTo1NCBQTQo+PiBUbzogaW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBDYzogQmxvb21maWVsZCwgSm9uOyBWb2xraW4sIEJyYWRs ZXkgRAo+PiBTdWJqZWN0OiBbUEFUQ0ggdjUgMS83XSBkcm0vaTkxNTogSW1wbGVtZW50IGEgZnJh bWV3b3JrIGZvciBiYXRjaCBidWZmZXIKPj4gcG9vbHMKPj4KPj4gRnJvbTogQnJhZCBWb2xraW4g PGJyYWRsZXkuZC52b2xraW5AaW50ZWwuY29tPgo+Pgo+PiBUaGlzIGFkZHMgYSBzbWFsbCBtb2R1 bGUgZm9yIG1hbmFnaW5nIGEgcG9vbCBvZiBiYXRjaCBidWZmZXJzLgo+PiBUaGUgb25seSBjdXJy ZW50IHVzZSBjYXNlIGlzIGZvciB0aGUgY29tbWFuZCBwYXJzZXIsIGFzIGRlc2NyaWJlZCBpbiB0 aGUKPj4ga2VybmVsZG9jIGluIHRoZSBwYXRjaC4gVGhlIGNvZGUgaXMgc2ltcGxlLCBidXQgc2Vw YXJhdGluZyBpdCBvdXQgbWFrZXMgaXQKPj4gZWFzaWVyIHRvIGNoYW5nZSB0aGUgdW5kZXJseWlu ZyBhbGdvcml0aG1zIGFuZCB0byBleHRlbmQgdG8gZnV0dXJlIHVzZSBjYXNlcwo+PiBzaG91bGQg dGhleSBhcmlzZS4KPj4KPj4gVGhlIGludGVyZmFjZSBpcyBzaW1wbGU6IGluaXQgdG8gY3JlYXRl IGFuIGVtcHR5IHBvb2wsIGZpbmkgdG8gY2xlYW4gaXQgdXAsIGdldCB0bwo+PiBvYnRhaW4gYSBu ZXcgYnVmZmVyLiBOb3RlIHRoYXQgYWxsIGJ1ZmZlcnMgYXJlIGV4cGVjdGVkIHRvIGJlIGluYWN0 aXZlIGJlZm9yZQo+PiBjbGVhbmluZyB1cCB0aGUgcG9vbC4KPj4KPj4gTG9ja2luZyBpcyBjdXJy ZW50bHkgYmFzZWQgb24gdGhlIGNhbGxlciBob2xkaW5nIHRoZSBzdHJ1Y3RfbXV0ZXguCj4+IFdl IGFscmVhZHkgZG8gdGhhdCBpbiB0aGUgcGxhY2VzIHdoZXJlIHdlIHdpbGwgdXNlIHRoZSBiYXRj aCBwb29sIGZvciB0aGUKPj4gY29tbWFuZCBwYXJzZXIuCj4+Cj4+IHYyOgo+PiAtIHMvQlVHX09O L1dBUk5fT04vIGZvciBsb2NraW5nIGFzc2VydGlvbnMKPj4gLSBSZW1vdmUgdGhlIGNhcCBvbiBw b29sIHNpemUKPj4gLSBTd2l0Y2ggZnJvbSBhbGxvYy9mcmVlIHRvIGluaXQvZmluaQo+Pgo+PiB2 MzoKPj4gLSBJZGlvbWF0aWMgbG9vcGluZyBzdHJ1Y3R1cmUgaW4gX2ZpbmkKPj4gLSBDb3JyZWN0 IGhhbmRsaW5nIG9mIHB1cmdlZCBvYmplY3RzCj4+IC0gRG9uJ3QgcmV0dXJuIGEgYnVmZmVyIHRo YXQncyB0b28gbXVjaCBsYXJnZXIgdGhhbiBuZWVkZWQKPj4KPj4gdjQ6Cj4+IC0gUmViYXNlZCB0 byBsYXRlc3QgLW5pZ2h0bHkKPj4KPj4gdjU6Cj4+IC0gUmVtb3ZlIF9wdXQoKSBmdW5jdGlvbiBh bmQgY2xlYW4gdXAgY29tbWVudHMgdG8gbWF0Y2gKPj4KPj4gdjY6Cj4+IC0gTW92ZSBwdXJnZWQg Y2hlY2sgaW5zaWRlIHRoZSBsb29wIChkYW52ZXQsIGZyb20gdjQgMS83IGZlZWRiYWNrKQo+Pgo+ PiBJc3N1ZTogVklaLTQ3MTkKPj4gU2lnbmVkLW9mZi1ieTogQnJhZCBWb2xraW4gPGJyYWRsZXku ZC52b2xraW5AaW50ZWwuY29tPgo+PiAtLS0KPj4gICBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJt LnRtcGwgICAgICAgICAgICAgfCAgIDUgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlICAgICAgICAgICAgICB8ICAgMSArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCAgICAgICAgICAgIHwgIDE1ICsrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgICAgICAgICAgICB8ICAgMSArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fYmF0Y2hfcG9vbC5jIHwgMTUyCj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ ICAgNSBmaWxlcyBjaGFuZ2VkLCAxNzQgaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKPj4KPj4gZGlm ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbAo+PiBiL0RvY3VtZW50YXRp b24vRG9jQm9vay9kcm0udG1wbCBpbmRleCA5NDRlOGVkLi5iNTk0M2Q0IDEwMDY0NAo+PiAtLS0g YS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKPj4gKysrIGIvRG9jdW1lbnRhdGlvbi9E b2NCb29rL2RybS50bXBsCj4+IEBAIC00MDI4LDYgKzQwMjgsMTEgQEAgaW50IG51bV9pb2N0bHM7 PC9zeW5vcHNpcz4KPj4gIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwo+ PiAgICAgICAgIDwvc2VjdDI+Cj4+ICAgICAgICAgPHNlY3QyPgo+PiArICAgICAgICA8dGl0bGU+ QmF0Y2hidWZmZXIgUG9vbHM8L3RpdGxlPgo+PiArIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9iYXRjaF9wb29sLmMgYmF0Y2ggcG9vbAo+PiArIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9iYXRjaF9wb29sLmMKPj4gKyAgICAgIDwvc2VjdDI+Cj4+ICsgICAgICA8c2VjdDI+ Cj4+ICAgICAgICAgICA8dGl0bGU+TG9naWNhbCBSaW5ncywgTG9naWNhbCBSaW5nIENvbnRleHRz IGFuZCBFeGVjbGlzdHM8L3RpdGxlPgo+PiAhUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jIExvZ2ljYWwgUmluZ3MsIExvZ2ljYWwgUmluZyBDb250ZXh0cyBhbmQKPj4gRXhlY2xpc3Rz ICAhSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl Cj4+IGluZGV4IGU0MDgzZTQuLmM4ZGJiMzdkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ PiBAQCAtMTksNiArMTksNyBAQCBpOTE1LSQoQ09ORklHX0RFQlVHX0ZTKSArPSBpOTE1X2RlYnVn ZnMubwo+Pgo+PiAgICMgR0VNIGNvZGUKPj4gICBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8g XAo+PiArCSAgaTkxNV9nZW1fYmF0Y2hfcG9vbC5vIFwKPj4gICAJICBpOTE1X2dlbV9jb250ZXh0 Lm8gXAo+PiAgIAkgIGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5vIFwKPj4gICAJICBpOTE1X2dlbV9k ZWJ1Zy5vIFwKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGluZGV4IGM0ZjJjYjYuLmIxMmEw NjIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtMTE1NCw2ICsxMTU0LDEy IEBAIHN0cnVjdCBpbnRlbF9sM19wYXJpdHkgewo+PiAgIAlpbnQgd2hpY2hfc2xpY2U7Cj4+ICAg fTsKPj4KPj4gK3N0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sIHsKPj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2Owo+PiArCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX2xpc3Q7Cj4+ICsJc3RydWN0 IGxpc3RfaGVhZCBpbmFjdGl2ZV9saXN0Owo+PiArfTsKPj4gKwo+PiAgIHN0cnVjdCBpOTE1X2dl bV9tbSB7Cj4+ICAgCS8qKiBNZW1vcnkgYWxsb2NhdG9yIGZvciBHVFQgc3RvbGVuIG1lbW9yeSAq Lwo+PiAgIAlzdHJ1Y3QgZHJtX21tIHN0b2xlbjsKPj4gQEAgLTE4ODUsNiArMTg5MSw4IEBAIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKPj4gICAJLyoqIFVzZWQgaW4gZXhlY2J1ZiB0byB0 ZW1wb3JhcmlseSBob2xkIGEgcmVmICovCj4+ICAgCXN0cnVjdCBsaXN0X2hlYWQgb2JqX2V4ZWNf bGluazsKPj4KPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGJhdGNoX3Bvb2xfbGlzdDsKPj4gKwo+PiAg IAkvKioKPj4gICAJICogVGhpcyBpcyBzZXQgaWYgdGhlIG9iamVjdCBpcyBvbiB0aGUgYWN0aXZl IGxpc3RzIChoYXMgcGVuZGluZwo+PiAgIAkgKiByZW5kZXJpbmcgYW5kIHNvIGEgbm9uLXplcm8g c2Vxbm8pLCBhbmQgaXMgbm90IHNldCBpZiBpdCBpIHMgb24gQEAgLQo+PiAyODQ5LDYgKzI4NTcs MTMgQEAgdm9pZCBpOTE1X2Rlc3Ryb3lfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UKPj4g KmRldik7ICB2b2lkIGk5MTVfZ2V0X2V4dHJhX2luc3Rkb25lKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVpbnQzMl90Cj4+ICppbnN0ZG9uZSk7ICBjb25zdCBjaGFyICppOTE1X2NhY2hlX2xldmVs X3N0cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPj4gaW50IHR5cGUpOwo+Pgo+PiAr LyogaTkxNV9nZW1fYmF0Y2hfcG9vbC5jICovCj4+ICt2b2lkIGk5MTVfZ2VtX2JhdGNoX3Bvb2xf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiArCQkJICAgICAgc3RydWN0IGk5MTVfZ2Vt X2JhdGNoX3Bvb2wgKnBvb2wpOyB2b2lkCj4+ICtpOTE1X2dlbV9iYXRjaF9wb29sX2Zpbmkoc3Ry dWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wpOyBzdHJ1Y3QKPj4gK2RybV9pOTE1X2dlbV9v YmplY3QqIGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVjdAo+PiBpOTE1X2dlbV9iYXRjaF9w b29sCj4+ICsqcG9vbCwgc2l6ZV90IHNpemUpOwo+PiArCj4+ICAgLyogaTkxNV9jbWRfcGFyc2Vy LmMgKi8KPj4gICBpbnQgaTkxNV9jbWRfcGFyc2VyX2dldF92ZXJzaW9uKHZvaWQpOwo+PiAgIGlu dCBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp OyBkaWZmIC0tZ2l0Cj4+IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gaW5kZXggODZjZjQyOC4uYjE5ZGQwNiAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IEBAIC00NDMzLDYgKzQ0MzMsNyBAQCB2b2lk IGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdAo+PiBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4+ICAgCUlOSVRfTElTVF9IRUFEKCZvYmotPnJpbmdfbGlzdCk7Cj4+ICAgCUlOSVRfTElTVF9I RUFEKCZvYmotPm9ial9leGVjX2xpbmspOwo+PiAgIAlJTklUX0xJU1RfSEVBRCgmb2JqLT52bWFf bGlzdCk7Cj4+ICsJSU5JVF9MSVNUX0hFQUQoJm9iai0+YmF0Y2hfcG9vbF9saXN0KTsKPj4KPj4g ICAJb2JqLT5vcHMgPSBvcHM7Cj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9iYXRjaF9wb29sLmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4u Y2NiZThmOQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2JhdGNoX3Bvb2wuYwo+PiBAQCAtMCwwICsxLDE1MiBAQAo+PiArLyoKPj4gKyAqIENv cHlyaWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCj4+ICsgKgo+PiArICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPj4gK29i dGFpbmluZyBhCj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlCj4+ICsiU29mdHdhcmUiKSwKPj4gKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4+ICts aW1pdGF0aW9uCj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwKPj4gK3N1YmxpY2Vuc2UsCj4+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+PiAr dGhlCj4+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgo+PiArICoKPj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCj4+ICtuZXh0 Cj4+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMKPj4gK29mIHRoZQo+PiArICogU29mdHdhcmUuCj4+ICsgKgo+PiAr ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsCj4+ICtFWFBSRVNTIE9SCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4+ICtNRVJDSEFOVEFCSUxJVFksCj4+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8KPj4gRVZFTlQKPj4gK1NIQUxMCj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKPj4gREFNQUdFUyBPUgo+PiArT1RIRVIK Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLAo+PiArQVJJU0lORwo+PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgo+PiBPVEhFUgo+PiArREVBTElO R1MKPj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPj4gKyAqCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCj4+ICsKPj4gKy8qKgo+PiArICogRE9DOiBiYXRjaCBwb29sCj4+ICsg Kgo+PiArICogSW4gb3JkZXIgdG8gc3VibWl0IGJhdGNoIGJ1ZmZlcnMgYXMgJ3NlY3VyZScsIHRo ZSBzb2Z0d2FyZSBjb21tYW5kCj4+ICtwYXJzZXIKPj4gKyAqIG11c3QgZW5zdXJlIHRoYXQgYSBi YXRjaCBidWZmZXIgY2Fubm90IGJlIG1vZGlmaWVkIGFmdGVyIHBhcnNpbmcuIEl0Cj4+ICtkb2Vz Cj4+ICsgKiB0aGlzIGJ5IGNvcHlpbmcgdGhlIHVzZXIgcHJvdmlkZWQgYmF0Y2ggYnVmZmVyIGNv bnRlbnRzIHRvIGEga2VybmVsCj4+ICtvd25lZAo+PiArICogYnVmZmVyIGZyb20gd2hpY2ggdGhl IGhhcmR3YXJlIHdpbGwgYWN0dWFsbHkgZXhlY3V0ZSwgYW5kIGJ5Cj4+ICtjYXJlZnVsbHkKPj4g KyAqIG1hbmFnaW5nIHRoZSBhZGRyZXNzIHNwYWNlIGJpbmRpbmdzIGZvciBzdWNoIGJ1ZmZlcnMu Cj4+ICsgKgo+PiArICogVGhlIGJhdGNoIHBvb2wgZnJhbWV3b3JrIHByb3ZpZGVzIGEgbWVjaGFu aXNtIGZvciB0aGUgZHJpdmVyIHRvCj4+ICttYW5hZ2UgYQo+PiArICogc2V0IG9mIHNjcmF0Y2gg YnVmZmVycyB0byB1c2UgZm9yIHRoaXMgcHVycG9zZS4gVGhlIGZyYW1ld29yayBjYW4gYmUKPj4g KyAqIGV4dGVuZGVkIHRvIHN1cHBvcnQgb3RoZXIgdXNlcyBjYXNlcyBzaG91bGQgdGhleSBhcmlz ZS4KPj4gKyAqLwo+PiArCj4+ICsvKioKPj4gKyAqIGk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdCgp IC0gaW5pdGlhbGl6ZSBhIGJhdGNoIGJ1ZmZlciBwb29sCj4+ICsgKiBAZGV2OiB0aGUgZHJtIGRl dmljZQo+PiArICogQHBvb2w6IHRoZSBiYXRjaCBidWZmZXIgcG9vbAo+PiArICovCj4+ICt2b2lk IGk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiArCQkJ ICAgICAgc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wpIHsKPj4gKwlwb29sLT5kZXYg PSBkZXY7Cj4+ICsJSU5JVF9MSVNUX0hFQUQoJnBvb2wtPmFjdGl2ZV9saXN0KTsKPj4gKwlJTklU X0xJU1RfSEVBRCgmcG9vbC0+aW5hY3RpdmVfbGlzdCk7Cj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiAr ICogaTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5pKCkgLSBjbGVhbiB1cCBhIGJhdGNoIGJ1ZmZlciBw b29sCj4+ICsgKiBAcG9vbDogdGhlIHBvb2wgdG8gY2xlYW4gdXAKPj4gKyAqCj4+ICsgKiBOb3Rl OiBDYWxsZXJzIG11c3QgaG9sZCB0aGUgc3RydWN0X211dGV4Lgo+PiArICovCj4+ICt2b2lkIGk5 MTVfZ2VtX2JhdGNoX3Bvb2xfZmluaShzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCAqcG9vbCkg ewo+PiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmcG9vbC0+ZGV2LT5zdHJ1Y3RfbXV0ZXgp KTsKPj4gKwo+PiArCXdoaWxlICghbGlzdF9lbXB0eSgmcG9vbC0+YWN0aXZlX2xpc3QpKSB7Cj4+ ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPQo+PiArCQkJbGlzdF9maXJzdF9l bnRyeSgmcG9vbC0+YWN0aXZlX2xpc3QsCj4+ICsJCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCwKPj4gKwkJCQkJIGJhdGNoX3Bvb2xfbGlzdCk7Cj4+ICsKPj4gKwkJV0FSTl9PTihvYmot PmFjdGl2ZSk7Cj4+ICsKPj4gKwkJbGlzdF9kZWxfaW5pdCgmb2JqLT5iYXRjaF9wb29sX2xpc3Qp Owo+PiArCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPj4gKwl9Cj4+ ICsKPj4gKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnBvb2wtPmluYWN0aXZlX2xpc3QpKSB7Cj4+ICsJ CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPQo+PiArCQkJbGlzdF9maXJzdF9lbnRy eSgmcG9vbC0+aW5hY3RpdmVfbGlzdCwKPj4gKwkJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0LAo+PiArCQkJCQkgYmF0Y2hfcG9vbF9saXN0KTsKPj4gKwo+PiArCQlsaXN0X2RlbF9pbml0 KCZvYmotPmJhdGNoX3Bvb2xfbGlzdCk7Cj4+ICsJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNl KCZvYmotPmJhc2UpOwo+PiArCX0KPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiBpOTE1X2dlbV9i YXRjaF9wb29sX2dldCgpIC0gc2VsZWN0IGEgYnVmZmVyIGZyb20gdGhlIHBvb2wKPj4gKyAqIEBw b29sOiB0aGUgYmF0Y2ggYnVmZmVyIHBvb2wKPj4gKyAqIEBzaXplOiB0aGUgbWluaW11bSBkZXNp cmVkIHNpemUgb2YgdGhlIHJldHVybmVkIGJ1ZmZlcgo+PiArICoKPj4gKyAqIEZpbmRzIG9yIGFs bG9jYXRlcyBhIGJhdGNoIGJ1ZmZlciBpbiB0aGUgcG9vbCB3aXRoIGF0IGxlYXN0IHRoZQo+PiAr cmVxdWVzdGVkCj4+ICsgKiBzaXplLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBhbnkg ZG9tYWluLCBhY3RpdmUvaW5hY3RpdmUsIG9yCj4+ICsgKiBwdXJnZWFiaWxpdHkgbWFuYWdlbWVu dCBmb3IgdGhlIHJldHVybmVkIGJ1ZmZlci4KPj4gKyAqCj4+ICsgKiBOb3RlOiBDYWxsZXJzIG11 c3QgaG9sZCB0aGUgc3RydWN0X211dGV4Cj4+ICsgKgo+PiArICogUmV0dXJuOiB0aGUgc2VsZWN0 ZWQgYmF0Y2ggYnVmZmVyIG9iamVjdCAgKi8gc3RydWN0Cj4+ICtkcm1faTkxNV9nZW1fb2JqZWN0 ICogaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0Cj4+ICtpOTE1X2dlbV9iYXRjaF9wb29s ICpwb29sLAo+PiArCQkJc2l6ZV90IHNpemUpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IE5VTEw7Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnRt cCwgKm5leHQ7Cj4+ICsJYm9vbCB3YXNfcHVyZ2VkOwo+PiArCj4+ICsJV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZwb29sLT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+PiArCj4+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKHRtcCwgbmV4dCwKPj4gKwkJCQkgJnBvb2wtPmFjdGl2ZV9saXN0LCBi YXRjaF9wb29sX2xpc3QpIHsKPj4gKwkJaWYgKCF0bXAtPmFjdGl2ZSkKPj4gKwkJCWxpc3RfbW92 ZV90YWlsKCZ0bXAtPmJhdGNoX3Bvb2xfbGlzdCwKPj4gKwkJCQkgICAgICAgJnBvb2wtPmluYWN0 aXZlX2xpc3QpOwo+PiArCX0KPj4gKwo+PiArCWRvIHsKPj4gKwkJd2FzX3B1cmdlZCA9IGZhbHNl Owo+PiArCj4+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0bXAsIG5leHQsCj4+ICsJCQkJ JnBvb2wtPmluYWN0aXZlX2xpc3QsIGJhdGNoX3Bvb2xfbGlzdCkgewo+PiArCQkJLyoKPj4gKwkJ CSAqIFNlbGVjdCBhIGJ1ZmZlciB0aGF0IGlzIGF0IGxlYXN0IGFzIGJpZyBhcyBuZWVkZWQKPj4g KwkJCSAqIGJ1dCBub3QgJ3RvbyBtdWNoJyBiaWdnZXIuIEEgYmV0dGVyIHdheSB0byBkbyB0aGlz Cj4+ICsJCQkgKiBtaWdodCBiZSB0byBidWNrZXQgdGhlIHBvb2wgb2JqZWN0cyBiYXNlZCBvbiBz aXplLgo+PiArCQkJICovCj4+ICsJCQlpZiAodG1wLT5iYXNlLnNpemUgPj0gc2l6ZSAmJgo+PiAr CQkJICAgIHRtcC0+YmFzZS5zaXplIDw9ICgyICogc2l6ZSkpIHsKPj4gKwkJCQlvYmogPSB0bXA7 Cj4+ICsJCQkJYnJlYWs7Cj4+ICsJCQl9Cj4+ICsKPj4gKwkJCWlmICh0bXAtPm1hZHYgPT0gX19J OTE1X01BRFZfUFVSR0VEKSB7Cj4+ICsJCQkJd2FzX3B1cmdlZCA9IHRydWU7Cj4+ICsJCQkJbGlz dF9kZWwoJnRtcC0+YmF0Y2hfcG9vbF9saXN0KTsKPj4gKwkJCQlkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZSgmdG1wLQo+Pj4gYmFzZSk7Cj4+ICsJCQl9Cj4+ICsJCX0KPj4gKwl9IHdoaWxlICh3 YXNfcHVyZ2VkKTsKPgo+IEkgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0IHRoZSBvdXRlci1sb29wL3dh c19wdXJnZWQgaXMgdHJ5aW5nIHRvIGRvIGhlcmUuCgpUaGVyZSB3YXMgc29tZSB1bmhhcHBpbmVz cyBhYm91dCB0aGlzIGZyb20gRGFuaWVsIGFuZCBDaHJpcy4gVGFraW5nIAp0aGVpciBmZWVkYmFj aywgZW5kZWQgdXAgdy8gYW4gUkZDIHNuaXBwZXQgbWVudGlvbmVkIGhlcmUgaW50ZW5kZWQgdG8g CnNpbXBsaWZ5IGFuZCBtYWtlIGl0IGVhc2llciB0byBkaXNjZXJuIHRoZSBsb2dpYy4KCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvaW50ZWwtZ2Z4LzIwMTQtRGVjZW1iZXIv MDU2NTc5Lmh0bWwKCkluIGEgc2luZ2xlIGxvb3AsIHdlIGFjY29tcGxpc2ggMiBnb2FscyAoYSkg ZG8gc29tZSBob3VzZSBjbGVhbmluZyB3aGlsZSAKaW4gdGhlIGxvb3AgYW5kIChiKSBmaW5kIGEg c3VpdGFibGUgb2JqIGZyb20gdGhlIHBvb2wgKG9uZSB0aGF0IGlzIG5vdCAKYWN0aXZlIGFuZCBu b3QgcHVyZ2VkKS4KClRoZXkgc2VlbWVkIGhhcHB5IHcvIGl0LiBXaWxsIHNlbmQgaXQgdGhlIG5l eHQgcmV2IG9mIHRoZSBzZXJpZXMuCgpUaGFua3MsCk1pa2UKCj4KPiBJIG1pZ2h0IGJlIG1pc3Np bmcgc29tZXRoaW5nIHN1YnRsZSwgYnV0IHRoZSBmb2xsb3dpbmcgc2NlbmFyaW9zIHNlZW0gdG8g aGF2ZSBpc3N1ZXM6Cj4KPiAJMSkgVGhlcmUgYXJlIG5vIHN1aXRhYmxlIG9iamVjdHMgaW4gdGhl IHBvb2wsIGJ1dCB0aGVyZSBhcmUgcHVyZ2VhYmxlIG9iamVjdHMKPiAJCVdlJ2xsIGxvb3AgdGhy b3VnaCB0aGUgd2hvbGUgbGlzdCwgcHVyZ2luZyBhbnkgcHVyZWdhYmxlIG9iamVjdHMuCj4gCQlP biBjb21wbGV0aW9uIG9mIHRoZSBpbm5lciBsb29wLCB3YXNfcHVyZ2VkPT10cnVlLCBzbyB3ZSds bCBnbyBiYWNrIHRocm91Z2ggdGhlCj4gCQl3aG9sZSBsaXN0IGFnYWluLiBXZSBzdGlsbCB3b24n dCBmaW5kIGFueSBzdWl0YWJsZSBvYmplY3RzLCBhbmQgd29uJ3QgZmluZCBhbnkgbW9yZQo+IAkJ cHVyZ2VhYmxlIG9iamVjdHMgZWl0aGVyLCBzbyB0aGUgc2Vjb25kIHBhc3MgaXMgcmVkdW5kYW50 Lgo+Cj4gCTIpIFRoZXJlIGlzIGEgc3VpdGFibGUgb2JqZWN0LCBidXQgdGhlcmUgYXJlIHB1cmdl YWJsZSBvYmplY3RzIGJlZm9yZSBpdAo+IAkJV2UnbGwgcHVyZ2Ugb2JqZWN0cyB1cCB0byB0aGUg Zmlyc3Qgc3VpdGFibGUgb2JqZWN0LCBhbmQgYnJlYWsgb3V0IG9mIHRoZSBpbm5lciBsb29wCj4g CQlXZSdsbCB0aGVuIGdvIGJhY2sgdGhyb3VnaCBhIHNlY29uZCB0aW1lIGJlY2F1c2Ugd2FzX3B1 cmdlZCBpcyBzZXQsIGFuZCBzZWxlY3QKPiAJCXRoZSBleGFjdCBzYW1lIG9iamVjdCBhcyB3ZSBz ZWxlY3RlZCBsYXN0IHRpbWUuCj4gCQlBbnkgcHVyZ2VhYmxlIG9iamVjdHMgYWZ0ZXIgdGhlIHNl bGVjdGVkIG9iamVjdCB3aWxsIHJlbWFpbiB1bi1wdXJnZWQKPgo+IElmIHRoZSBpbnRlbnRpb24g aGVyZSBpcyB0byBlbnN1cmUgd2UgYWx3YXlzIHB1cmdlIGFsbCBwdXJnZWFibGUgb2JqZWN0cywg dGhlbiBJCj4gdGhpbmsgd2UganVzdCBuZWVkIHRvIHJlbW92ZSB0aGUgYnJlYWssIGFuZCB0aGUg b3V0ZXItbG9vcCwgYWxvbmcgd2l0aCB3YXNfcHVyZ2VkLgo+IFRoaXMgd2lsbCBhbHdheXMgdHJh dmVyc2UgdGhlIGVudGlyZSBsaXN0LCBhbmQgZW5kIHdpdGggb2JqIHNldCB0byB0aGUgbGFzdCBz dWl0YWJsZSBvYmplY3QKPiBpbiB0aGUgbGlzdCAoaWYgYW55KS4KPgo+IElmIHlvdSB3YW50IHRv IGJlIG9wdGltYWwgeW91IGNvdWxkIGFkanVzdCB0aGUgY29uZGl0aW9uIHRvIG9ubHkgY2hvb3Nl IG9iamVjdHMgdGhhdCBhcmUKPiBzbWFsbGVyIHRoYW4gYW55IHByZXZpb3VzbHkgc2VsZWN0ZWQg b2JqZWN0Lgo+Cj4+ICsKPj4gKwlpZiAoIW9iaikgewo+PiArCQlvYmogPSBpOTE1X2dlbV9hbGxv Y19vYmplY3QocG9vbC0+ZGV2LCBzaXplKTsKPj4gKwkJaWYgKCFvYmopCj4+ICsJCQlyZXR1cm4g RVJSX1BUUigtRU5PTUVNKTsKPj4gKwo+PiArCQlsaXN0X2FkZF90YWlsKCZvYmotPmJhdGNoX3Bv b2xfbGlzdCwgJnBvb2wtPmluYWN0aXZlX2xpc3QpOwo+PiArCX0KPj4gKwo+PiArCWxpc3RfbW92 ZV90YWlsKCZvYmotPmJhdGNoX3Bvb2xfbGlzdCwgJnBvb2wtPmFjdGl2ZV9saXN0KTsKPj4gKwo+ PiArCXJldHVybiBvYmo7Cj4+ICt9Cj4+IC0tCj4+IDEuOS4xCj4KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK