From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH 3/4] drm/i915/guc: refactor doorbell management code Date: Fri, 10 Jun 2016 12:37:38 +0100 Message-ID: <575AA682.4030705@intel.com> References: <1465383329-14885-1-git-send-email-david.s.gordon@intel.com> <1465383329-14885-4-git-send-email-david.s.gordon@intel.com> <5758198D.5020407@linux.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 DBF876ED0F for ; Fri, 10 Jun 2016 11:37:40 +0000 (UTC) In-Reply-To: <5758198D.5020407@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDgvMDYvMTYgMTQ6MTEsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gT24gMDgvMDYvMTYg MTE6NTUsIERhdmUgR29yZG9uIHdyb3RlOgo+PiBEdXJpbmcgYSBoaWJlcm5hdGUvcmVzdW1lIGN5 Y2xlLCB0aGUgZHJpdmVyLCB0aGUgR3VDLCBhbmQgdGhlIGRvb3JiZWxsCj4+IGhhcmR3YXJlIGNh biBlbmQgdXAgaW4gaW5jb25zaXN0ZW50IHN0YXRlcy4gVGhpcyBwYXRjaCByZWZhY3RvcnMgdGhl Cj4+IGRyaXZlcidzIGhhbmRsaW5nIGFuZCB0cmFja2luZyBvZiBkb29yYmVsbHMsIGluIHByZXBh cmF0aW9uIGZvciBhIGxhdGVyCj4+IG9uZSB3aGljaCB3aWxsIHJlc29sdmUgdGhlIGlzc3VlLgo+ Cj4gUGVyaGFwcyBhIGZldyB3b3JkIG9uIHRoZSBnb2FsLCBtZXRob2QgYW5kIHJlc3VsdCBvZiBy ZWZhY3RvcmluZy4gV291bGQKPiBiZSBnb29kIGZvciBkb2N1bWVudGF0aW9uIGFuZCBlYXNpZXIg cmV2aWV3LgoKVGhlIHJlZmFjdG9yaW5nIGlzIGV4YWN0bHkgdGhhdDsgdGhlcmUncyB2ZXJ5IGxp dHRsZSBuZXcgY29kZS4KQWxsIHdlJ3JlIGRvaW5nIGlzIGNlbnRyYWxpc2luZyBhbGwgZG9vcmJl bGwgbWFuYWdlbWVudCBpbnRvCmp1c3Qgb25lIGZ1bmN0aW9uIGFuZCB0dXJuaW5nIHRoZSAob3V0 ZXJtb3N0KSBvbGQgZnVuY3Rpb25zCmludG8gd3JhcHBlcnMgZm9yIHRoZSBzaW5nbGUgZnVuY3Rp b24uCgpUaGVyZSBhcmUgdGhyZWUgcmVzb3VyY2VzIHRvIGJlIG1hbmFnZWQ6CjEuIENhY2hlbGlu ZXM6IGEgc2luZ2xlIGxpbmUgd2l0aGluIHRoZSBjbGllbnQtb2JqZWN0J3MgcGFnZSAwCiAgICBp cyBzbm9vcGVkIGZvciB3cml0ZXMgYnkgdGhlIGhvc3QuCjIuIERvb3JiZWxsIHJlZ2lzdGVyczog ZWFjaCBkZWZpbmVzIGEgY2FjaGVsaW5lIHRvIGJlIHNub29wZWQuCjMuIEJpdG1hcDogdHJhY2tz IHdoaWNoIHJlZ2lzdGVycyBhcmUgaW4gdXNlLgoKVGhlIGRvb3JiZWxsIHNldHVwL3RlYXJkb3du IHByb3RvY29sIHN0YXJ0cyB3aXRoOgoxLiBQaWNrIGEgY2FjaGVsaW5lOiBzZWxlY3RfZG9vcmJl bGxfY2FjaGVsaW5lKCkKMi4gRmluZCBhbiBhdmFpbGFibGUgZG9vcmJlbGwgKHJlZ2lzdGVyKTog YXNzaWduX2Rvb3JiZWxsKCkKKFRoZXNlIHZhbHVlcyBhcmUgcGFzc2VkIHRvIHRoZSBHdUMgdmlh IHRoZSBzaGFyZWQgY29udGV4dApkZXNjcmlwdG9yOyB0aGlzIHBhcnQgb2YgdGhlIHNlcXVlbmNl IHJlbWFpbnMgdW5jaGFuZ2VkKS4KCjMuIFVwZGF0ZSB0aGUgYml0bWFwIHRvIHJlZmxlY3QgcmVn aXN0ZXJzLWluLXVzZQo0LiBQcmVwYXJlIHRoZSBjYWNoZWxpbmUgZm9yIHVzZSBieSBzZXR0aW5n IGl0cyBzdGF0dXMgdG8gRU5BQkxFRAo1LiBBc2sgdGhlIEd1QyB0byBwcm9ncmFtIHRoZSBkb29y YmVsbCB0byBzbm9vcCB0aGUgY2FjaGVsaW5lCgphbmQgb2YgY291cnNlIHRlYXJkb3duIGlzIHZl cnkgc2ltaWxhcjoKNi4gU2V0IHRoZSBjYWNoZWxpbmUgdG8gRElTQUJMRUQKNy4gQXNrIHRoZSBH dUMgdG8gcmVwcm9ncmFtIHRoZSBkb29yYmVsbCB0byBzdG9wIHNub29waW5nCjguIFJlY29yZCB0 aGF0IHRoZSBkb29yYmVsbCBpcyBub3QgaW4gdXNlLgoKT3BlcmF0aW9ucyA2LTggKGd1Y19kaXNh YmxlX2Rvb3JiZWxsKCksIGhvc3QyZ3VjX3JlbGVhc2VfZG9vcmJlbGwoKSwgYW5kIApyZWxlYXNl X2Rvb3JiZWxsKCkpIHdlcmUgY2FsbGVkIGluIHNlcXVlbmNlIGZyb20gZ3VjX2NsaWVudF9mcmVl KCksIGJ1dCAKYXJlIG5vdyBtb3ZlZCBpbnRvIHRoZSB0ZWFyZG93biBwYXJ0IG9mIHRoZSBjb21t b24gZnVuY3Rpb24uCgpTdGVwcyA0LTUgKGd1Y19pbml0X2Rvb3JiZWxsKCkgYW5kIGhvc3QyZ3Vj X2FsbG9jYXRlX2Rvb3JiZWxsKCkpIHdlcmUgCnNpbWlsYXJseSBkb25lIGFzIHNlcXVlbnRpYWwg c3RlcHMgaW4gZ3VjX2NsaWVudF9hbGxvYygpLCBidXQgc2luY2UgaXQgCnR1cm5zIG91dCB3ZSBk b24ndCBuZWVkIHRvIGRvIHRoZW0gc2VwYXJhdGVseSB0aGV5J3JlIG5vdyBjb2xsZWN0ZWQgaW50 byAKdGhlIHNldHVwIHBhcnQgb2YgdGhlIGNvbW1vbiBmdW5jdGlvbi4KCj4+IFNpZ25lZC1vZmYt Ynk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8IDg3Cj4+ICsrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCA1MyBpbnNlcnRpb25z KCspLCAzNCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3VjX3N1Ym1pc3Npb24uYwo+PiBpbmRleCA3NTEwODQxLi5lZWY2N2M4IDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+IEBAIC0xNzQsMzYgKzE3 NCw2MyBAQCBzdGF0aWMgaW50IGhvc3QyZ3VjX3NhbXBsZV9mb3JjZXdha2Uoc3RydWN0Cj4+IGlu dGVsX2d1YyAqZ3VjLAo+PiAgICAqIGNsaWVudCBvYmplY3Qgd2hpY2ggY29udGFpbnMgdGhlIHBh Z2UgYmVpbmcgdXNlZCBmb3IgdGhlIGRvb3JiZWxsCj4+ICAgICovCj4+Cj4+IC1zdGF0aWMgdm9p ZCBndWNfaW5pdF9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCj4+IC0gICAgICAgICAg ICAgICAgICBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQpCj4+ICtzdGF0aWMgaW50IGd1 Y191cGRhdGVfZG9vcmJlbGxfaWQoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50LAo+PiAr ICAgICAgICAgICAgICAgICAgc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvICpkb29yYmVsbCwKPj4g KyAgICAgICAgICAgICAgICAgIHUxNiBuZXdfaWQpCj4+ICAgewo+PiAtICAgIHN0cnVjdCBndWNf ZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7Cj4+ICsgICAgc3RydWN0IHNnX3RhYmxlICpzZyA9IGNs aWVudC0+Z3VjLT5jdHhfcG9vbF9vYmotPnBhZ2VzOwo+PiArICAgIHZvaWQgKmRvb3JiZWxsX2Jp dG1hcCA9IGNsaWVudC0+Z3VjLT5kb29yYmVsbF9iaXRtYXA7Cj4+ICsgICAgc3RydWN0IGd1Y19j b250ZXh0X2Rlc2MgZGVzYzsKPj4gKyAgICBzaXplX3QgbGVuOwo+PiArCj4+ICsgICAgaWYgKGNs aWVudC0+ZG9vcmJlbGxfaWQgIT0gR1VDX0lOVkFMSURfRE9PUkJFTExfSUQgJiYKPj4gKyAgICAg ICAgdGVzdF9iaXQoY2xpZW50LT5kb29yYmVsbF9pZCwgZG9vcmJlbGxfYml0bWFwKSkgewo+PiAr ICAgICAgICAvKiBEZWFjdGl2YXRlIHRoZSBvbGQgZG9vcmJlbGwgKi8KPj4gKyAgICAgICAgZG9v cmJlbGwtPmRiX3N0YXR1cyA9IEdVQ19ET09SQkVMTF9ESVNBQkxFRDsKPj4gKyAgICAgICAgKHZv aWQpaG9zdDJndWNfcmVsZWFzZV9kb29yYmVsbChjbGllbnQtPmd1YywgY2xpZW50KTsKPj4gKyAg ICAgICAgY2xlYXJfYml0KGNsaWVudC0+ZG9vcmJlbGxfaWQsIGRvb3JiZWxsX2JpdG1hcCk7Cj4+ ICsgICAgfQo+Pgo+PiAtICAgIGRvb3JiZWxsID0gY2xpZW50LT5jbGllbnRfYmFzZSArIGNsaWVu dC0+ZG9vcmJlbGxfb2Zmc2V0Owo+PiArICAgIC8qIFVwZGF0ZSB0aGUgR3VDJ3MgaWRlYSBvZiB0 aGUgZG9vcmJlbGwgSUQgKi8KPj4gKyAgICBsZW4gPSBzZ19wY29weV90b19idWZmZXIoc2ctPnNn bCwgc2ctPm5lbnRzLCAmZGVzYywgc2l6ZW9mKGRlc2MpLAo+PiArICAgICAgICAgICAgICAgICBz aXplb2YoZGVzYykgKiBjbGllbnQtPmN0eF9pbmRleCk7Cj4+ICsgICAgaWYgKGxlbiAhPSBzaXpl b2YoZGVzYykpCj4+ICsgICAgICAgIHJldHVybiAtRUZBVUxUOwo+PiArICAgIGRlc2MuZGJfaWQg PSBuZXdfaWQ7Cj4+ICsgICAgbGVuID0gc2dfcGNvcHlfZnJvbV9idWZmZXIoc2ctPnNnbCwgc2ct Pm5lbnRzLCAmZGVzYywgc2l6ZW9mKGRlc2MpLAo+PiArICAgICAgICAgICAgICAgICBzaXplb2Yo ZGVzYykgKiBjbGllbnQtPmN0eF9pbmRleCk7Cj4+ICsgICAgaWYgKGxlbiAhPSBzaXplb2YoZGVz YykpCj4+ICsgICAgICAgIHJldHVybiAtRUZBVUxUOwo+PiArCj4+ICsgICAgY2xpZW50LT5kb29y YmVsbF9pZCA9IG5ld19pZDsKPj4gKyAgICBpZiAobmV3X2lkID09IEdVQ19JTlZBTElEX0RPT1JC RUxMX0lEKQo+PiArICAgICAgICByZXR1cm4gMDsKPj4KPj4gKyAgICAvKiBBY3RpdmF0ZSB0aGUg bmV3IGRvb3JiZWxsICovCj4+ICsgICAgc2V0X2JpdChjbGllbnQtPmRvb3JiZWxsX2lkLCBkb29y YmVsbF9iaXRtYXApOwo+PiAgICAgICBkb29yYmVsbC0+ZGJfc3RhdHVzID0gR1VDX0RPT1JCRUxM X0VOQUJMRUQ7Cj4+ICAgICAgIGRvb3JiZWxsLT5jb29raWUgPSAwOwo+PiArICAgIHJldHVybiBo b3N0Mmd1Y19hbGxvY2F0ZV9kb29yYmVsbChjbGllbnQtPmd1YywgY2xpZW50KTsKPgo+IEEgYnVu Y2ggb2YgbmV3IGNvZGUgaGVyZSB3aGljaCB3YXNuJ3QgZG9uZSBvbiBkb29yYmVsbCBpbml0IGJl Zm9yZS4KPiBQb3B1bGF0aW5nIHRoZSBjdHhfcG9vbF9vYmogYW5kIGh1c3QyZ3VjIGNhbGwuIEkg dGhpbmsgdGhlIGNvbW1pdCBuZWVkcwo+IHRvIGV4cGxhaW4gd2hhdCBpcyBoYXBwZW5pbmcgaGVy ZS4KClRoZSBvbmx5IG5ldyBjb2RlIChhbmQgbmV3IGNhcGFiaWxpdHkpIGlzIHRoZSBibG9jawog ICAgIC8qIFVwZGF0ZSB0aGUgR3VDJ3MgaWRlYSBvZiB0aGUgZG9vcmJlbGwgSUQgKi8KaS5lLiB3 ZSBjYW4gbm93ICpjaGFuZ2UqIHRoZSBkb29yYmVsbCAocmVnaXN0ZXIpIHVzZWQgYnkgYW4KZXhp c3RpbmcgY2xpZW50LCB3aGVyZWFzIHByZXZpb3VzbHkgaXQgd2FzIHNldCBvbmNlIGZvciB0aGUK ZW50aXJlIGxpZmV0aW1lIG9mIHRoZSBjbGllbnQuIFdlIHdpbGwgdXNlIHRoaXMgbmV3IGZlYXR1 cmUKaW4gdGhlIG5leHQgcGF0Y2guCgpUaGUgaG9zdDJndWMgY2FsbCBpcyBub3QgbmV3LCBidXQg aXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkCnNlcGFyYXRlbHkgYWZ0ZXIgdGhlIHJldHVybiBmcm9t IGd1Y19pbml0X2Rvb3JiZWxsKCkuCgo+IE1heWJlIGl0IGlzIG1vc3RseSBhIG1hdHRlciBvZiBj b3B5aW5nIG92ZXIgc29tZSB0ZXh0IGZyb20gdGhlIGNvdmVyCj4gbGV0dGVyLCBidXQgaWRlYWxs eSBpdCBzaG91bGQgZXhwbGFpbiB3aGF0IGl0IGlzIGRvaW5nIG1vcmUgcHJlY2lzZWx5LgoKSSds bCBwdXQgc29tZSBvZiB0aGlzIHJlcGx5IGludG8gdGhlIGNvbW1pdCBtZXNzYWdlCgo+PiAgIH0K Pj4KPj4gLXN0YXRpYyB2b2lkIGd1Y19kaXNhYmxlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YywKPj4gLSAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50 KQo+PiArc3RhdGljIHZvaWQgZ3VjX2luaXRfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3Vj LAo+PiArICAgICAgICAgICAgICAgICAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50LAo+ PiArICAgICAgICAgICAgICAgICAgdWludDE2X3QgZGJfaWQpCj4+ICAgewo+PiAtICAgIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7Cj4+ICAgICAg IHN0cnVjdCBndWNfZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7Cj4+IC0gICAgaTkxNV9yZWdfdCBk cmJyZWcgPSBHRU44X0RSQlJFR0woY2xpZW50LT5kb29yYmVsbF9pZCk7Cj4+IC0gICAgaW50IHZh bHVlOwo+Pgo+PiAgICAgICBkb29yYmVsbCA9IGNsaWVudC0+Y2xpZW50X2Jhc2UgKyBjbGllbnQt PmRvb3JiZWxsX29mZnNldDsKPj4KPj4gLSAgICBkb29yYmVsbC0+ZGJfc3RhdHVzID0gR1VDX0RP T1JCRUxMX0RJU0FCTEVEOwo+PiAtCj4+IC0gICAgSTkxNV9XUklURShkcmJyZWcsIEk5MTVfUkVB RChkcmJyZWcpICYgfkdFTjhfRFJCX1ZBTElEKTsKPj4gKyAgICBndWNfdXBkYXRlX2Rvb3JiZWxs X2lkKGNsaWVudCwgZG9vcmJlbGwsIGRiX2lkKTsKPj4gK30KPgo+IFRoaXMgZnVuY3Rpb24gZG9l cyBub3QgZW5kIHVwIGRvaW5nIGFueXRoaW5nIG5vdywganVzdCBhIHBhc3MtdGhyb3VnaCB0bwo+ IGd1Y191cGRhdGVfZG9vcmJlbGxfaWQuCgpDb3JyZWN0LiBJdCdzIHJldGFpbmVkIHRvIG1ha2Ug aXQgY2xlYXIgdGhhdCBoZXJlIHdlJ3JlIGluaXRpYWxpc2luZyBhIApuZXdseS1jcmVhdGVkIGNs aWVudCB3aXRoIGEgZG9vcmJlbGwgYXNzaWdubWVudCBmb3IgdGhlIGZpcnN0IHRpbWUsIGFzIApv cHBvc2VkIHRvIHVwZGF0aW5nIGFuIGV4aXN0aW5nIGRvb3JiZWxsIGFzc2lnbm1lbnQuIFNpbWls YXJseSB3ZSByZXRhaW4gCmd1Y19kaXNhYmxlX2Rvb3JiZWxsKCkgYXMgYW4gYWxpYXMgZm9yIGNo YW5naW5nIHRoZSBkb29yYmVsbCBJRCAoYmFjaykgCnRvIElOVkFMSUQuCgo+IFdoYXQgaGFwcGVu cyB0byB0aGUgd3JpdGUgdG8gZHJicmVnID8gSXQgaXMgY29tcGxldGVseSBnb25lIGFuZCBhbHNv Cj4gZnJvbSB0aGUgaW5pdCBkb29yYmVsbCBwYXRoIHRvZ2V0aGVyIHdpdGggdGhlIHdyaXRlIHRv IGFub3RoZXIgcmVnaXN0ZXIuCgpUaG9zZSB3cml0ZXMgd2VyZSB1c2VsZXNzLiBUdXJucyBvdXQg dGhvc2UgcmVnaXN0ZXJzIGFyZSBub3Qgd3JpdGVhYmxlIApieSB0aGUgQ1BVOyB0aGV5IGNhbiAq b25seSogYmUgdXBkYXRlZCBieSB0aGUgR3VDIQoKPj4gLSAgICB2YWx1ZSA9IEk5MTVfUkVBRChk cmJyZWcpOwo+PiAtICAgIFdBUk5fT04oKHZhbHVlICYgR0VOOF9EUkJfVkFMSUQpICE9IDApOwo+ PiArc3RhdGljIHZvaWQgZ3VjX2Rpc2FibGVfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3Vj LAo+PiArICAgICAgICAgICAgICAgICBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQpCj4+ ICt7Cj4+ICsgICAgc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvICpkb29yYmVsbDsKPj4KPj4gLSAg ICBJOTE1X1dSSVRFKEdFTjhfRFJCUkVHVShjbGllbnQtPmRvb3JiZWxsX2lkKSwgMCk7Cj4+IC0g ICAgSTkxNV9XUklURShkcmJyZWcsIDApOwo+PiArICAgIGRvb3JiZWxsID0gY2xpZW50LT5jbGll bnRfYmFzZSArIGNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0Owo+PiArICAgIGd1Y191cGRhdGVfZG9v cmJlbGxfaWQoY2xpZW50LCBkb29yYmVsbCwgR1VDX0lOVkFMSURfRE9PUkJFTExfSUQpOwo+Pgo+ PiAgICAgICAvKiBYWFg6IHdhaXQgZm9yIGFueSBpbnRlcnJ1cHRzICovCj4+ICAgICAgIC8qIFhY WDogd2FpdCBmb3Igd29ya3F1ZXVlIHRvIGRyYWluICovCj4+IEBAIC0yNTEsNyArMjc4LDcgQEAg c3RhdGljIHVpbnQxNl90IGFzc2lnbl9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjCj4+ICpndWMs IHVpbnQzMl90IHByaW9yaXR5KQo+PiAgICAgICBpZiAoaWQgPT0gZW5kKQo+PiAgICAgICAgICAg aWQgPSBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRDsKPj4gICAgICAgZWxzZQo+PiAtICAgICAgICBi aXRtYXBfc2V0KGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCBpZCwgMSk7Cj4+ICsgICAgICAgIHNldF9i aXQoaWQsIGd1Yy0+ZG9vcmJlbGxfYml0bWFwKTsKPgo+IHNldF9iaXQgaXMgYXRvbWljIC0gaXMg dGhlcmUgYSByZWFzb24gaXQgaXMgcmVxdWlyZWQgaGVyZT8KPgo+IEFjdHVhbGx5IHRoZSBzYW1l IHF1ZXN0aW9uIGZvciB0aGUgY2xlYXJfYml0IGFib3ZlLCB3aGVyZSBpdCB3YXMKPiBiaXRtYXBf Y2xlYXIgYmVmb3JlLgoKVGhlIGJpdG1hcF9zZXQvY2xlYXIgZnVuY3Rpb25zIGRvbid0IGhhdmUg YSBjb21wYXJhYmxlIFRFU1QKb3BlcmF0b3IsIHNvIHdlIGhhdmUgdG8gdXNlIHRlc3RfYml0KCku IFRoZSBvdGhlcnMgd2VyZSBqdXN0CmNoYW5nZWQgZm9yIHN5bW1ldHJ5LiBXZSBkb24ndCBjYXJl IGFib3V0IGF0b21pYyBvciBub3QsIGFuZAp0aGlzIGlzIHJhcmVseSBleGVjdXRlZCAoc2V0dXAv dGVhcmRvd24pIGNvZGUgc28gd2UgZG9uJ3Qgd29ycnkKYWJvdXQgcGVyZm9ybWFuY2UgZWl0aGVy LgoKQWN0dWFsbHksIHRob3VnaCwgSSdkIGV4cGVjdCB0aGUgb25lLWJpdCBmdW5jdGlvbnMgc2V0 X2JpdCgpCmFuZCBjbGVhcl9iaXQoKSB0byBiZSBNT1JFIGVmZmljaWVudCB0aGFuIHRoZSBnZW5l cmFsIG11bHRpYml0Cm9wZXJhdGlvbnMgYml0bWFwX3NldC9jbGVhci4gVGhleSBzaG91bGQgZ2V0 IGlubGluZWQgdG9vIDopCgpXZSBjb3VsZCB1c2UgX19zZXQvY2xlYXJfYml0KCkgaWYgd2UgcmVh bGx5IGRvbid0IHdhbnQgdGhlIExPQ0suCgpOZXcgdmVyc2lvbiBsYXRlciAuLi4KCi5EYXZlLgoK Pj4gICAgICAgRFJNX0RFQlVHX0RSSVZFUigiYXNzaWduZWQgJXMgcHJpb3JpdHkgZG9vcmJlbGwg aWQgMHgleFxuIiwKPj4gICAgICAgICAgICAgICBoaV9wcmkgPyAiaGlnaCIgOiAibm9ybWFsIiwg aWQpOwo+PiBAQCAtMjU5LDExICsyODYsNiBAQCBzdGF0aWMgdWludDE2X3QgYXNzaWduX2Rvb3Ji ZWxsKHN0cnVjdCBpbnRlbF9ndWMKPj4gKmd1YywgdWludDMyX3QgcHJpb3JpdHkpCj4+ICAgICAg IHJldHVybiBpZDsKPj4gICB9Cj4+Cj4+IC1zdGF0aWMgdm9pZCByZWxlYXNlX2Rvb3JiZWxsKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YywgdWludDE2X3QgaWQpCj4+IC17Cj4+IC0gICAgYml0bWFwX2Ns ZWFyKGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCBpZCwgMSk7Cj4+IC19Cj4+IC0KPj4gICAvKgo+PiAg ICAqIEluaXRpYWxpc2UgdGhlIHByb2Nlc3MgZGVzY3JpcHRvciBzaGFyZWQgd2l0aCB0aGUgR3VD IGZpcm13YXJlLgo+PiAgICAqLwo+PiBAQCAtNjU3LDggKzY3OSw2IEBAIHN0YXRpYyB2b2lkIGd1 Y19jbGllbnRfZnJlZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgICAgICAgKi8KPj4KPj4g ICAgICAgaWYgKGNsaWVudC0+Y2xpZW50X2Jhc2UpIHsKPj4gLSAgICAgICAgdWludDE2X3QgZGJf aWQgPSBjbGllbnQtPmRvb3JiZWxsX2lkOwo+PiAtCj4+ICAgICAgICAgICAvKgo+PiAgICAgICAg ICAgICogSWYgd2UgZ290IGFzIGZhciBhcyBzZXR0aW5nIHVwIGEgZG9vcmJlbGwsIG1ha2Ugc3Vy ZQo+PiAgICAgICAgICAgICogd2Ugc2h1dCBpdCBkb3duIGJlZm9yZSB1bm1hcHBpbmcgJiBkZWFs bG9jYXRpbmcgdGhlCj4+IEBAIC02NjYsMTIgKzY4Niw4IEBAIHN0YXRpYyB2b2lkIGd1Y19jbGll bnRfZnJlZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgICAgICAgICAgICogR3VDIHRoYXQg d2UndmUgZmluaXNoZWQgd2l0aCBpdCwgZmluYWxseSBkZWFsbG9jYXRlCj4+ICAgICAgICAgICAg KiBpdCBpbiBvdXIgYml0bWFwCj4+ICAgICAgICAgICAgKi8KPj4gLSAgICAgICAgaWYgKGRiX2lk ICE9IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEKSB7Cj4+ICsgICAgICAgIGlmIChjbGllbnQtPmRv b3JiZWxsX2lkICE9IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEKQo+PiAgICAgICAgICAgICAgIGd1 Y19kaXNhYmxlX2Rvb3JiZWxsKGd1YywgY2xpZW50KTsKPj4gLSAgICAgICAgICAgIGlmICh0ZXN0 X2JpdChkYl9pZCwgZ3VjLT5kb29yYmVsbF9iaXRtYXApKQo+PiAtICAgICAgICAgICAgICAgIGhv c3QyZ3VjX3JlbGVhc2VfZG9vcmJlbGwoZ3VjLCBjbGllbnQpOwo+PiAtICAgICAgICAgICAgcmVs ZWFzZV9kb29yYmVsbChndWMsIGRiX2lkKTsKPj4gLSAgICAgICAgfQo+Pgo+PiAgICAgICAgICAg a3VubWFwKGttYXBfdG9fcGFnZShjbGllbnQtPmNsaWVudF9iYXNlKSk7Cj4+ICAgICAgIH0KPj4g QEAgLTcwNiw2ICs3MjIsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfZ3VjX2NsaWVudAo+PiAqZ3Vj X2NsaWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgICAgICBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiAgICAgICBzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKPj4gICAgICAgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKPj4gKyAgICB1aW50MTZfdCBkYl9pZDsKPj4KPj4gICAgICAg Y2xpZW50ID0ga3phbGxvYyhzaXplb2YoKmNsaWVudCksIEdGUF9LRVJORUwpOwo+PiAgICAgICBp ZiAoIWNsaWVudCkKPj4gQEAgLTc0NiwyMiArNzYzLDI0IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9n dWNfY2xpZW50Cj4+ICpndWNfY2xpZW50X2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ ICAgICAgIGVsc2UKPj4gICAgICAgICAgIGNsaWVudC0+cHJvY19kZXNjX29mZnNldCA9IChHVUNf REJfU0laRSAvIDIpOwo+Pgo+PiAtICAgIGNsaWVudC0+ZG9vcmJlbGxfaWQgPSBhc3NpZ25fZG9v cmJlbGwoZ3VjLCBjbGllbnQtPnByaW9yaXR5KTsKPj4gLSAgICBpZiAoY2xpZW50LT5kb29yYmVs bF9pZCA9PSBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRCkKPj4gKyAgICBkYl9pZCA9IGFzc2lnbl9k b29yYmVsbChndWMsIGNsaWVudC0+cHJpb3JpdHkpOwo+PiArICAgIGlmIChkYl9pZCA9PSBHVUNf SU5WQUxJRF9ET09SQkVMTF9JRCkKPj4gICAgICAgICAgIC8qIFhYWDogZXZpY3QgYSBkb29yYmVs bCBpbnN0ZWFkICovCj4+ICAgICAgICAgICBnb3RvIGVycjsKPj4KPj4gICAgICAgZ3VjX2luaXRf cHJvY19kZXNjKGd1YywgY2xpZW50KTsKPj4gICAgICAgZ3VjX2luaXRfY3R4X2Rlc2MoZ3VjLCBj bGllbnQpOwo+PiAtICAgIGd1Y19pbml0X2Rvb3JiZWxsKGd1YywgY2xpZW50KTsKPj4gKyAgICBn dWNfaW5pdF9kb29yYmVsbChndWMsIGNsaWVudCwgZGJfaWQpOwo+Pgo+PiAgICAgICAvKiBYWFg6 IEFueSBjYWNoZSBmbHVzaGVzIG5lZWRlZD8gR2VuZXJhbCBkb21haW4gbWdtdCBjYWxscz8gKi8K Pj4KPj4gICAgICAgaWYgKGhvc3QyZ3VjX2FsbG9jYXRlX2Rvb3JiZWxsKGd1YywgY2xpZW50KSkK Pj4gICAgICAgICAgIGdvdG8gZXJyOwo+Pgo+PiAtICAgIERSTV9ERUJVR19EUklWRVIoIm5ldyBw cmlvcml0eSAldSBjbGllbnQgJXA6IGN0eF9pbmRleCAldSBkYl9pZAo+PiAldVxuIiwKPj4gLSAg ICAgICAgcHJpb3JpdHksIGNsaWVudCwgY2xpZW50LT5jdHhfaW5kZXgsIGNsaWVudC0+ZG9vcmJl bGxfaWQpOwo+PiArICAgIERSTV9ERUJVR19EUklWRVIoIm5ldyBwcmlvcml0eSAldSBjbGllbnQg JXA6IGN0eF9pbmRleCAldVxuIiwKPj4gKyAgICAgICAgcHJpb3JpdHksIGNsaWVudCwgY2xpZW50 LT5jdHhfaW5kZXgpOwo+PiArICAgIERSTV9ERUJVR19EUklWRVIoImRvb3JiZWxsIGlkICV1LCBj YWNoZWxpbmUgb2Zmc2V0IDB4JXhcbiIsCj4+ICsgICAgICAgIGNsaWVudC0+ZG9vcmJlbGxfaWQs IGNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0KTsKPj4KPj4gICAgICAgcmV0dXJuIGNsaWVudDsKPj4K Pj4KPgo+IFJlZ2FyZHMsCj4gVHZydGtvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK