From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 21/22] drm/i915: Enable lockless lookup of request tracking via RCU Date: Thu, 28 Jul 2016 12:23:40 +0200 Message-ID: <20160728102340.GH6232@phenom.ffwll.local> References: <1469618100-15298-1-git-send-email-chris@chris-wilson.co.uk> <1469618100-15298-22-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3DDDA6E7BF for ; Thu, 28 Jul 2016 10:23:46 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id q128so10443365wma.1 for ; Thu, 28 Jul 2016 03:23:46 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1469618100-15298-22-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, "Goel, Akash" , Josh Triplett List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdWwgMjcsIDIwMTYgYXQgMTI6MTQ6NTlQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IElmIHdlIGVuYWJsZSBSQ1UgZm9yIHRoZSByZXF1ZXN0cyAocHJvdmlkaW5nIGEgZ3Jh Y2UgcGVyaW9kIHdoZXJlIHdlIGNhbgo+IGluc3BlY3QgYSAiZGVhZCIgcmVxdWVzdCBiZWZvcmUg aXQgaXMgZnJlZWQpLCB3ZSBjYW4gYWxsb3cgY2FsbGVycyB0bwo+IGNhcmVmdWxseSBwZXJmb3Jt IGxvY2tsZXNzIGxvb2t1cCBvZiBhbiBhY3RpdmUgcmVxdWVzdC4KPiAKPiBIb3dldmVyLCBieSBl bmFibGluZyBkZWZlcnJlZCBmcmVlaW5nIG9mIHJlcXVlc3RzLCB3ZSBjYW4gcG90ZW50aWFsbHkK PiBob2cgYSBsb3Qgb2YgbWVtb3J5IHdoZW4gZGVhbGluZyB3aXRoIHRlbnMgb2YgdGhvdXNhbmRz IG9mIHJlcXVlc3RzIHBlcgo+IHNlY29uZCAtIHdpdGggYSBxdWljayBpbnNlcnRpb24gb2YgYSBz eW5jaHJvbml6ZV9yY3UoKSBpbnNpZGUgb3VyCj4gc2hyaW5rZXIgY2FsbGJhY2ssIHRoYXQgaXNz dWUgZGlzYXBwZWFycy4KPiAKPiB2MjogQ3VycmVudGx5LCBpdCBpcyBvdXIgcmVzcG9uc2liaWxp dHkgdG8gaGFuZGxlIHJlY2xhaW0gaS5lLiB0byBhdm9pZAo+IGhvZ2dpbmcgbWVtb3J5IHdpdGgg dGhlIGRlbGF5ZWQgc2xhYiBmcmVlcy4gQXQgdGhlIG1vbWVudCwgd2Ugd2FpdCBmb3IgYQo+IGdy YWNlIHBlcmlvZCBpbiB0aGUgc2hyaW5rZXIsIGFuZCBibG9jayBmb3IgYWxsIFJDVSBjYWxsYmFj a3Mgb24gb29tLgo+IFN1Z2dlc3RlZCBhbHRlcm5hdGl2ZXMgZm9jdXMgb24gZmx1c2hpbmcgb3Vy IFJDVSBjYWxsYmFjayB3aGVuIHdlIGhhdmUgYQo+IGNlcnRhaW4gbnVtYmVyIG9mIG91dHN0YW5k aW5nIHJlcXVlc3QgZnJlZXMsIGFuZCBibG9ja2luZyBvbiB0aGF0IGZsdXNoCj4gYWZ0ZXIgYSBz ZWNvbmQgaGlnaCB3YXRlcm1hcmsuIChTbyByYXRoZXIgdGhhbiB3YWl0IGZvciB0aGUgc3lzdGVt IHRvCj4gcnVuIG91dCBvZiBtZW1vcnksIHdlIHN0b3AgaXNzdWluZyByZXF1ZXN0cyAtIGJvdGgg YXJlIG5vbmRldGVybWluaXN0aWMuKQo+IAo+IFBhdWwgRS4gTWNLZW5uZXkgd3JvdGU6Cj4gCj4g QW5vdGhlciBhcHByb2FjaCBpcyBzeW5jaHJvbml6ZV9yY3UoKSBhZnRlciBzb21lIGxhcmdpc2gg bnVtYmVyIG9mCj4gcmVxdWVzdHMuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMgYXBwcm9hY2ggaXMg dGhhdCBpdCB0aHJvdHRsZXMgdGhlCj4gcHJvZHVjdGlvbiBvZiBjYWxsYmFja3MgYXQgdGhlIHNv dXJjZS4gIFRoZSBjb3JyZXNwb25kaW5nIGRpc2FkdmFudGFnZQo+IGlzIHRoYXQgaXQgc2xvd3Mg dGhpbmdzIHVwLgo+IAo+IEFub3RoZXIgYXBwcm9hY2ggaXMgdG8gdXNlIGNhbGxfcmN1KCksIGJ1 dCBpZiB0aGUgcHJldmlvdXMgY2FsbF9yY3UoKQo+IGlzIHN0aWxsIGluIGZsaWdodCwgYmxvY2sg d2FpdGluZyBmb3IgaXQuICBZZXQgYW5vdGhlciBhcHByb2FjaCBpcwo+IHRoZSBnZXRfc3RhdGVf c3luY2hyb25pemVfcmN1KCkgLyBjb25kX3N5bmNocm9uaXplX3JjdSgpIHBhaXIuICBUaGUKPiBp ZGVhIGlzIHRvIGRvIHNvbWV0aGluZyBsaWtlIHRoaXM6Cj4gCj4gICAgICAgICBjb25kX3N5bmNo cm9uaXplX3JjdShjb29raWUpOwo+ICAgICAgICAgY29va2llID0gZ2V0X3N0YXRlX3N5bmNocm9u aXplX3JjdSgpOwo+IAo+IFlvdSB3b3VsZCBvZiBjb3Vyc2UgZG8gYW4gaW5pdGlhbCBnZXRfc3Rh dGVfc3luY2hyb25pemVfcmN1KCkgdG8KPiBnZXQgdGhpbmdzIGdvaW5nLiAgVGhpcyB3b3VsZCBu b3QgYmxvY2sgdW5sZXNzIHRoZXJlIHdhcyBsZXNzIHRoYW4KPiBvbmUgZ3JhY2UgcGVyaW9kJ3Mg d29ydGggb2YgdGltZSBiZXR3ZWVuIGludm9jYXRpb25zLiAgQnV0IHRoaXMKPiBhc3N1bWVzIGEg YnVzeSBzeXN0ZW0sIHdoZXJlIHRoZXJlIGlzIGFsbW9zdCBhbHdheXMgYSBncmFjZSBwZXJpb2QK PiBpbiBmbGlnaHQuICBCdXQgeW91IGNhbiBtYWtlIHRoYXQgaGFwcGVuIGFzIGZvbGxvd3M6Cj4g Cj4gICAgICAgICBjb25kX3N5bmNocm9uaXplX3JjdShjb29raWUpOwo+ICAgICAgICAgY29va2ll ID0gZ2V0X3N0YXRlX3N5bmNocm9uaXplX3JjdSgpOwo+ICAgICAgICAgY2FsbF9yY3UoJm15X3Jj dV9oZWFkLCBub29wX2Z1bmN0aW9uKTsKPiAKPiBOb3RlIHRoYXQgeW91IG5lZWQgYWRkaXRpb25h bCBjb2RlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvbGQgY2FsbGJhY2sKPiBoYXMgY29tcGxldGVk IGJlZm9yZSBkb2luZyBhIG5ldyBvbmUuICBTZXR0aW5nIGFuZCBjbGVhcmluZyBhIGZsYWcKPiB3 aXRoIGFwcHJvcHJpYXRlIG1lbW9yeSBvcmRlcmluZyBjb250cm9sIHN1ZmZpY2VzIChlLmcsLiBz bXBfbG9hZF9hY3F1aXJlKCkKPiBhbmQgc21wX3N0b3JlX3JlbGVhc2UoKSkuCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6 ICJHb2VsLCBBa2FzaCIgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgo+IENjOiBKb3NoIFRyaXBsZXR0 IDxqb3NoQGpvc2h0cmlwbGV0dC5vcmc+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgICAgICAgICAgfCAgIDcgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fcmVxdWVzdC5jICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmggIHwgMTE0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyB8ICAxNSArKy0tCj4gIDQgZmlsZXMg Y2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+IGluZGV4IDU0ZDhhMzg2M2QxMS4uMGM1NDZmODA5OWQ5IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTQ0MjEsNyArNDQyMSw5IEBAIGk5MTVfZ2VtX2xv YWRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJZGV2X3ByaXYtPnJlcXVlc3RzID0K PiAgCQlrbWVtX2NhY2hlX2NyZWF0ZSgiaTkxNV9nZW1fcmVxdWVzdCIsCj4gIAkJCQkgIHNpemVv ZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QpLCAwLAo+IC0JCQkJICBTTEFCX0hXQ0FDSEVf QUxJR04sCj4gKwkJCQkgIFNMQUJfSFdDQUNIRV9BTElHTiB8Cj4gKwkJCQkgIFNMQUJfUkVDTEFJ TV9BQ0NPVU5UIHwKPiArCQkJCSAgU0xBQl9ERVNUUk9ZX0JZX1JDVSwKPiAgCQkJCSAgTlVMTCk7 Cj4gIAo+ICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5jb250ZXh0X2xpc3QpOwo+IEBAIC00 NDU3LDYgKzQ0NTksOSBAQCB2b2lkIGk5MTVfZ2VtX2xvYWRfY2xlYW51cChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5yZXF1ZXN0cyk7Cj4g IAlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnZtYXMpOwo+ICAJa21lbV9jYWNoZV9kZXN0 cm95KGRldl9wcml2LT5vYmplY3RzKTsKPiArCj4gKwkvKiBBbmQgZW5zdXJlIHRoYXQgb3VyIERF U1RST1lfQllfUkNVIHNsYWJzIGFyZSB0cnVseSBkZXN0cm95ZWQgKi8KPiArCXJjdV9iYXJyaWVy KCk7Cj4gIH0KPiAgCj4gIGludCBpOTE1X2dlbV9mcmVlemVfbGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3Qu Ywo+IGluZGV4IDMzOTVjOTU1YTUzMi4uYmNjMTM2OWMwNjkzIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IEBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIHZv aWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQo+ICAJCXByZWZldGNodyhuZXh0KTsKPiAgCj4gIAkJSU5JVF9MSVNUX0hFQUQoJmFj dGl2ZS0+bGluayk7Cj4gLQkJYWN0aXZlLT5fX3JlcXVlc3QgPSBOVUxMOwo+ICsJCVJDVV9JTklU X1BPSU5URVIoYWN0aXZlLT5fX3JlcXVlc3QsIE5VTEwpOwo+ICAKPiAgCQlhY3RpdmUtPnJldGly ZShhY3RpdmUsIHJlcXVlc3QpOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmgKPiBpbmRleCAyZWVjMGNhYzFlOWYuLmJiMDNmNDQ0MGIwZiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiBAQCAtMTgzLDYgKzE4MywxMiBAQCBp OTE1X2dlbV9yZXF1ZXN0X2dldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAg CXJldHVybiB0b19yZXF1ZXN0KGZlbmNlX2dldCgmcmVxLT5mZW5jZSkpOwo+ICB9Cj4gIAo+ICtz dGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gK2k5MTVfZ2VtX3Jl cXVlc3RfZ2V0X3JjdShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiArewo+ICsJ cmV0dXJuIHRvX3JlcXVlc3QoZmVuY2VfZ2V0X3JjdSgmcmVxLT5mZW5jZSkpOwo+ICt9Cj4gKwo+ ICBzdGF0aWMgaW5saW5lIHZvaWQKPiAgaTkxNV9nZW1fcmVxdWVzdF9wdXQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIHsKPiBAQCAtMjg2LDcgKzI5Miw3IEBAIHR5cGVkZWYg dm9pZCAoKmk5MTVfZ2VtX3JldGlyZV9mbikoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqLAo+ICAJ CQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICopOwo+ICAKPiAgc3RydWN0IGk5MTVf Z2VtX2FjdGl2ZSB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKl9fcmVxdWVzdDsK PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCBfX3JjdSAqX19yZXF1ZXN0Owo+ICAJc3Ry dWN0IGxpc3RfaGVhZCBsaW5rOwo+ICAJaTkxNV9nZW1fcmV0aXJlX2ZuIHJldGlyZTsKPiAgfTsK PiBAQCAtMzIzLDEzICszMjksMTkgQEAgaTkxNV9nZW1fYWN0aXZlX3NldChzdHJ1Y3QgaTkxNV9n ZW1fYWN0aXZlICphY3RpdmUsCj4gIAkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCkKPiAgewo+ICAJbGlzdF9tb3ZlKCZhY3RpdmUtPmxpbmssICZyZXF1ZXN0LT5hY3Rp dmVfbGlzdCk7Cj4gLQlhY3RpdmUtPl9fcmVxdWVzdCA9IHJlcXVlc3Q7Cj4gKwlyY3VfYXNzaWdu X3BvaW50ZXIoYWN0aXZlLT5fX3JlcXVlc3QsIHJlcXVlc3QpOwo+ICB9Cj4gIAo+ICBzdGF0aWMg aW5saW5lIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gIF9faTkxNV9nZW1fYWN0aXZl X3BlZWsoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQo+ICB7Cj4gLQlyZXR1 cm4gYWN0aXZlLT5fX3JlcXVlc3Q7Cj4gKwkvKiBJbnNpZGUgdGhlIGVycm9yIGNhcHR1cmUgKHJ1 bm5pbmcgd2l0aCB0aGUgZHJpdmVyIGluIGFuIHVua25vd24KPiArCSAqIHN0YXRlKSwgd2Ugd2Fu dCB0byBiZW5kIHRoZSBydWxlcyBzbGlnaHRseSAoYSBsb3QpLgo+ICsJICoKPiArCSAqIFdvcmsg aXMgaW4gcHJvZ3Jlc3MgdG8gbWFrZSBpdCBzYWZlciwgaW4gdGhlIG1lYW50aW1lIHRoaXMga2Vl cHMKPiArCSAqIHRoZSBrbm93biBpc3N1ZSBmcm9tIHNwYW1taW5nIHRoZSBsb2dzLgo+ICsJICov Cj4gKwlyZXR1cm4gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChhY3RpdmUtPl9fcmVxdWVzdCwg MSk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0zNDUsNyArMzU3LDI5IEBAIGk5MTVfZ2VtX2FjdGl2 ZV9wZWVrKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwgc3RydWN0IG11dGV4 ICptdXRleCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ ICAKPiAtCXJlcXVlc3QgPSBhY3RpdmUtPl9fcmVxdWVzdDsKPiArCXJlcXVlc3QgPSByY3VfZGVy ZWZlcmVuY2VfcHJvdGVjdGVkKGFjdGl2ZS0+X19yZXF1ZXN0LAo+ICsJCQkJCSAgICBsb2NrZGVw X2lzX2hlbGQobXV0ZXgpKTsKPiArCWlmICghcmVxdWVzdCB8fCBpOTE1X2dlbV9yZXF1ZXN0X2Nv bXBsZXRlZChyZXF1ZXN0KSkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyZXR1cm4gcmVxdWVz dDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGk5MTVfZ2VtX2FjdGl2ZV9wZWVrX3JjdSAtIHJlcG9y dCB0aGUgYWN0aXZlIHJlcXVlc3QgYmVpbmcgbW9uaXRvcmVkCj4gKyAqIEBhY3RpdmUgLSB0aGUg YWN0aXZlIHRyYWNrZXIKPiArICoKPiArICogaTkxNV9nZW1fYWN0aXZlX3BlZWtfcmN1KCkgcmV0 dXJucyB0aGUgY3VycmVudCByZXF1ZXN0IGJlaW5nIHRyYWNrZWQgaWYKPiArICogc3RpbGwgYWN0 aXZlLCBvciBOVUxMLiBJdCBkb2VzIG5vdCBvYnRhaW4gYSByZWZlcmVuY2Ugb24gdGhlIHJlcXVl c3QKPiArICogZm9yIHRoZSBjYWxsZXIsIGFuZCBpbnNwZWN0aW9uIG9mIHRoZSByZXF1ZXN0IGlz IG9ubHkgdmFsaWQgdW5kZXIKPiArICogdGhlIFJDVSBsb2NrLgo+ICsgKi8KPiArc3RhdGljIGlu bGluZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgo+ICtpOTE1X2dlbV9hY3RpdmVfcGVl a19yY3UoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gKwo+ICsJcmVxdWVzdCA9IHJjdV9k ZXJlZmVyZW5jZShhY3RpdmUtPl9fcmVxdWVzdCk7Cj4gIAlpZiAoIXJlcXVlc3QgfHwgaTkxNV9n ZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+IEBA IC0zNjYsNiArNDAwLDcyIEBAIGk5MTVfZ2VtX2FjdGl2ZV9nZXQoY29uc3Qgc3RydWN0IGk5MTVf Z2VtX2FjdGl2ZSAqYWN0aXZlLCBzdHJ1Y3QgbXV0ZXggKm11dGV4KQo+ICB9Cj4gIAo+ICAvKioK PiArICogaTkxNV9nZW1fYWN0aXZlX2dldF9yY3UgLSByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhl IGFjdGl2ZSByZXF1ZXN0Cj4gKyAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIKPiArICoK PiArICogaTkxNV9nZW1fYWN0aXZlX2dldCgpIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGFj dGl2ZSByZXF1ZXN0LCBvciBOVUxMCj4gKyAqIGlmIHRoZSBhY3RpdmUgdHJhY2tlciBpcyBpZGxl LiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgUkNVIHJlYWQgbG9jay4KPiArICovCj4gK3N0YXRp YyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKPiAraTkxNV9nZW1fYWN0aXZl X2dldF9yY3UoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQo+ICt7Cj4gKwkv KiBQZXJmb3JtaW5nIGEgbG9ja2xlc3MgcmV0cmlldmFsIG9mIHRoZSBhY3RpdmUgcmVxdWVzdCBp cyBzdXBlcgo+ICsJICogdHJpY2t5LiBTTEFCX0RFU1RST1lfQllfUkNVIG1lcmVseSBndWFyYW50 ZWVzIHRoYXQgdGhlIGJhY2tpbmcKPiArCSAqIHNsYWIgb2YgcmVxdWVzdCBvYmplY3RzIHdpbGwg bm90IGJlIGZyZWVkIHdoaWxzdCB3ZSBob2xkIHRoZQo+ICsJICogUkNVIHJlYWQgbG9jay4gSXQg ZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgdGhlIHJlcXVlc3QgaXRzZWxmCj4gKwkgKiB3aWxsIG5v dCBiZSBmcmVlZCBhbmQgdGhlbiAqcmV1c2VkKi4gVml6LAo+ICsJICoKPiArCSAqIFRocmVhZCBB CQkJVGhyZWFkIEIKPiArCSAqCj4gKwkgKiByZXEgPSBhY3RpdmUucmVxdWVzdAo+ICsJICoJCQkJ cmV0aXJlKHJlcSkgLT4gZnJlZShyZXEpOwo+ICsJICoJCQkJKHJlcSBpcyBub3cgZmlyc3Qgb24g dGhlIHNsYWIgZnJlZWxpc3QpCj4gKwkgKgkJCQlhY3RpdmUucmVxdWVzdCA9IE5VTEwKPiArCSAq Cj4gKwkgKgkJCQlyZXEgPSBuZXcgc3VibWlzc2lvbiBvbiBhIG5ldyBvYmplY3QKPiArCSAqIHJl ZihyZXEpCj4gKwkgKgo+ICsJICogVG8gcHJldmVudCB0aGUgcmVxdWVzdCBmcm9tIGJlaW5nIHJl dXNlZCB3aGlsc3QgdGhlIGNhbGxlcgo+ICsJICogdXNlcyBpdCwgd2UgdGFrZSBhIHJlZmVyZW5j ZSBsaWtlIG5vcm1hbC4gV2hpbHN0IGFjcXVpcmluZwo+ICsJICogdGhlIHJlZmVyZW5jZSB3ZSBj aGVjayB0aGF0IGl0IGlzIG5vdCBpbiBhIGRlc3Ryb3llZCBzdGF0ZQo+ICsJICogKHJlZmNudCA9 PSAwKS4gVGhhdCBwcmV2ZW50cyB0aGUgcmVxdWVzdCBiZWluZyByZWFsbG9jYXRlZAo+ICsJICog d2hpbHN0IHRoZSBjYWxsZXIgaG9sZHMgb24gdG8gaXQuIFRvIGNoZWNrIHRoYXQgdGhlIHJlcXVl c3QKPiArCSAqIHdhcyBub3QgcmVhbGxvY2F0ZWQgYXMgd2UgYWNxdWlyZWQgdGhlIHJlZmVyZW5j ZSB3ZSBoYXZlIHRvCj4gKwkgKiBjaGVjayB0aGF0IG91ciByZXF1ZXN0IHJlbWFpbnMgdGhlIGFj dGl2ZSByZXF1ZXN0IGFjcm9zcwo+ICsJICogdGhlIGxvb2t1cCwgaW4gdGhlIHNhbWUgbWFubmVy IGFzIGEgc2VxbG9jay4gVGhlIHZpc2liaWxpdHkKPiArCSAqIG9mIHRoZSBwb2ludGVyIHZlcnN1 cyB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIGNvbnRyb2xsZWQKPiArCSAqIGJ5IHVzaW5nIFJD VSBiYXJyaWVycyAocmN1X2RlcmVmZXJlbmNlIGFuZCByY3VfYXNzaWduX3BvaW50ZXIpLgo+ICsJ ICoKPiArCSAqIEluIHRoZSBtaWRkbGUgb2YgYWxsIHRoYXQsIHdlIGluc3BlY3Qgd2hldGhlciB0 aGUgcmVxdWVzdCBpcwo+ICsJICogY29tcGxldGUuIFJldGlyaW5nIGlzIGxhenkgc28gdGhlIHJl cXVlc3QgbWF5IGJlIGNvbXBsZXRlZCBsb25nCj4gKwkgKiBiZWZvcmUgdGhlIGFjdGl2ZSB0cmFj a2VyIGlzIHVwZGF0ZWQuIFF1ZXJ5aW5nIHdoZXRoZXIgdGhlCj4gKwkgKiByZXF1ZXN0IGlzIGNv bXBsZXRlIGlzIGZhciBjaGVhcGVyIChhcyBpdCBpbnZvbHZlcyBubyBsb2NrZWQKPiArCSAqIGlu c3RydWN0aW9ucyBzZXR0aW5nIGNhY2hlbGluZXMgdG8gZXhjbHVzaXZlKSB0aGFuIGFjcXVpcmlu Zwo+ICsJICogdGhlIHJlZmVyZW5jZSwgc28gd2UgZG8gaXQgZmlyc3QuIFRoZSBSQ1UgcmVhZCBs b2NrIGVuc3VyZXMgdGhlCj4gKwkgKiBwb2ludGVyIGRlcmVmZXJlbmNlIGlzIHZhbGlkLCBidXQg ZG9lcyBub3QgZW5zdXJlIHRoYXQgdGhlCj4gKwkgKiBzZXFubyBub3IgSFdTIGlzIHRoZSByaWdo dCBvbmUhIEhvd2V2ZXIsIGlmIHRoZSByZXF1ZXN0IHdhcwo+ICsJICogcmVhbGxvY2F0ZWQsIHRo YXQgbWVhbnMgdGhlIGFjdGl2ZSB0cmFja2VyJ3MgcmVxdWVzdCB3YXMgY29tcGxldGUuCj4gKwkg KiBJZiB0aGUgbmV3IHJlcXVlc3QgaXMgYWxzbyBjb21wbGV0ZSwgdGhlbiBib3RoIGFyZSBhbmQg d2UgY2FuCj4gKwkgKiBqdXN0IHJlcG9ydCB0aGUgYWN0aXZlIHRyYWNrZXIgaXMgaWRsZS4gSWYg dGhlIG5ldyByZXF1ZXN0IGlzCj4gKwkgKiBpbmNvbXBsZXRlLCB0aGVuIHdlIGFjcXVpcmUgYSBy ZWZlcmVuY2Ugb24gaXQgYW5kIGNoZWNrIHRoYXQKPiArCSAqIGl0IHJlbWFpbmVkIHRoZSBhY3Rp dmUgcmVxdWVzdC4KPiArCSAqLwo+ICsJZG8gewo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdDsKPiArCj4gKwkJcmVxdWVzdCA9IHJjdV9kZXJlZmVyZW5jZShhY3RpdmUt Pl9fcmVxdWVzdCk7Cj4gKwkJaWYgKCFyZXF1ZXN0IHx8IGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxl dGVkKHJlcXVlc3QpKQo+ICsJCQlyZXR1cm4gTlVMTDsKPiArCj4gKwkJcmVxdWVzdCA9IGk5MTVf Z2VtX3JlcXVlc3RfZ2V0X3JjdShyZXF1ZXN0KTsKCkkgdGhpbmsgd2UgaGF2ZSBhIHJhY2UgaGVy ZSBzdGlsbDogVGhlIGlzc3VlIGlzIHRoYXQgdGhlCmtyZWZfZ2V0X3VubGVzc196ZXJvIGlzIGFu IHVub3JkZXJlZCBhdG9taWMsIGFuZCB0aGUgcmN1X2RlcmVmZXJlbmNlIGlzCm9ubHkgYW4gc21i X3JlYWRfYmFycmllcl9kZXBlbmRzLCB3aGljaCBkb2Vzbid0IHByZXZlbnQgdGhlIGZldGNoIGZy b20KaGFwcGVuaW5nIGJlZm9yZSB0aGUgYXRvbWljX2FkZF91bmxlc3MuCgpXZWxsIHVudGlsIEkg b3BlbmVkIG1lbW9yeS1iYXJyaWVycy50eHQgYW5kIGxlYXJuZWQgdGhhdCBhdG9taWNfYWRkX3Vu bGVzcwppcyBhIGZ1bGwgc21wX21iKCkgb24gYm90aCBzaWRlcyBvbiBzdWNjZXNzLiBUaGF0J3Mg YSBiaXQgdG9vIHRyaWNreSBmb3IKbXkgdGFzdGUsIHdoYXQgYWJvdXQgdGhlIGZvbGxvd2luZyBj b21tZW50OgoKCQkvKiBXaGVuIHJlcXVlc3RfZ2V0X3JjdSBzdWNjZWRzIHRoZSB1bmRlcmx5aW5n CgkJICogYXRvbWljX2FkZF91bmxlc3MgaGFzIGEgZnVsbCBzbXBfbWIoKSBvbiBib3RoIHNpZGVz LgoJCSAqIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSByY3VfZGVyZWZlcmVuY2UoKSBiZWxvdyBjYW4n dCBiZQoJCSAqIHJlb3JkZXJlZCBiZWZvcmUgdGhlIHRoZSByZWZjb3VudGluZyBpbmNyZWFzZSBo YXMKCQkgKiBoYXBwZW5lZCwgd2hpY2ggcHJldmVudHMgdGhlIHJlcXVlc3QgZnJvbSBiZWluZyBy ZXVzZWQuCgkJICovCgpJIGNvdWxkbid0IHBva2UgYW55IG90aGVyIGhvbGVzIGludG8gdGhpcywg YW5kIHdlJ3JlIHJldXNpbmcgdGhlIGZlbmNlIHJjdQpmdW5jdGlvbnMgd2hlcmUgYXBwcm9wcmlh dGUuIFdpdGggdGhlIGNvbW1lbnQ6CgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVs LnZldHRlckBmZndsbC5jaD4KCj4gKwkJaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QgPT0gcmN1X2Rl cmVmZXJlbmNlKGFjdGl2ZS0+X19yZXF1ZXN0KSkKPiArCQkJcmV0dXJuIHJlcXVlc3Q7Cj4gKwo+ ICsJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJlcXVlc3QpOwo+ICsJfSB3aGlsZSAoMSk7Cj4gK30K PiArCj4gKy8qKgo+ICAgKiBfX2k5MTVfZ2VtX2FjdGl2ZV9pc19idXN5IC0gcmVwb3J0IHdoZXRo ZXIgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGFzc2lnbmVkCj4gICAqIEBhY3RpdmUgLSB0aGUgYWN0 aXZlIHRyYWNrZXIKPiAgICoKPiBAQCAtNDMzLDcgKzUzMyw4IEBAIGk5MTVfZ2VtX2FjdGl2ZV9y ZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlLAo+ICAJc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICAJaW50IHJldDsKPiAgCj4gLQlyZXF1ZXN0ID0gYWN0 aXZlLT5fX3JlcXVlc3Q7Cj4gKwlyZXF1ZXN0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChh Y3RpdmUtPl9fcmVxdWVzdCwKPiArCQkJCQkgICAgbG9ja2RlcF9pc19oZWxkKG11dGV4KSk7Cj4g IAlpZiAoIXJlcXVlc3QpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IEBAIC00NDIsNyArNTQzLDggQEAg aTkxNV9nZW1fYWN0aXZlX3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCj4g IAkJcmV0dXJuIHJldDsKPiAgCj4gIAlsaXN0X2RlbF9pbml0KCZhY3RpdmUtPmxpbmspOwo+IC0J YWN0aXZlLT5fX3JlcXVlc3QgPSBOVUxMOwo+ICsJUkNVX0lOSVRfUE9JTlRFUihhY3RpdmUtPl9f cmVxdWVzdCwgTlVMTCk7Cj4gKwo+ICAJYWN0aXZlLT5yZXRpcmUoYWN0aXZlLCByZXF1ZXN0KTsK PiAgCj4gIAlyZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc2hyaW5rZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2Vy LmMKPiBpbmRleCAzM2Y4ZGNiOWI4YzQuLmExYTgwNWZjZGZmYSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+IEBAIC0xOTEsNiArMTkxLDggQEAgaTkxNV9n ZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlpbnRlbF9y dW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gIAo+ICAJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3Rz KGRldl9wcml2KTsKPiArCS8qIGV4cGVkaXRlIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kIHRvIGZyZWUg c29tZSByZXF1ZXN0IHNsYWJzICovCj4gKwlzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKCk7Cj4g IAo+ICAJcmV0dXJuIGNvdW50Owo+ICB9Cj4gQEAgLTIxMSwxMCArMjEzLDE1IEBAIGk5MTVfZ2Vt X3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAqLwo+ICB1bnNp Z25lZCBsb25nIGk5MTVfZ2VtX3Nocmlua19hbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICB7Cj4gLQlyZXR1cm4gaTkxNV9nZW1fc2hyaW5rKGRldl9wcml2LCAtMVVMLAo+ IC0JCQkgICAgICAgSTkxNV9TSFJJTktfQk9VTkQgfAo+IC0JCQkgICAgICAgSTkxNV9TSFJJTktf VU5CT1VORCB8Cj4gLQkJCSAgICAgICBJOTE1X1NIUklOS19BQ1RJVkUpOwo+ICsJdW5zaWduZWQg bG9uZyBmcmVlZDsKPiArCj4gKwlmcmVlZCA9IGk5MTVfZ2VtX3NocmluayhkZXZfcHJpdiwgLTFV TCwKPiArCQkJCUk5MTVfU0hSSU5LX0JPVU5EIHwKPiArCQkJCUk5MTVfU0hSSU5LX1VOQk9VTkQg fAo+ICsJCQkJSTkxNV9TSFJJTktfQUNUSVZFKTsKPiArCXJjdV9iYXJyaWVyKCk7IC8qIHdhaXQg dW50aWwgb3VyIFJDVSBkZWxheWVkIHNsYWIgZnJlZXMgYXJlIGNvbXBsZXRlZCAqLwo+ICsKPiAr CXJldHVybiBmcmVlZDsKPiAgfQo+ICAKPiAgc3RhdGljIGJvb2wgaTkxNV9nZW1fc2hyaW5rZXJf bG9jayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sICp1bmxvY2spCj4gLS0gCj4gMi44LjEK PiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IElu dGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK Ci0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpo dHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK