From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3 5/7] drm/i915/guc: refactor doorbell management code Date: Tue, 14 Jun 2016 13:20:06 +0100 Message-ID: <575FF676.2000104@linux.intel.com> References: <1465837054-16245-1-git-send-email-david.s.gordon@intel.com> <1465837054-16245-6-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id D889A6E11A for ; Tue, 14 Jun 2016 12:20:07 +0000 (UTC) In-Reply-To: <1465837054-16245-6-git-send-email-david.s.gordon@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEzLzA2LzE2IDE3OjU3LCBEYXZlIEdvcmRvbiB3cm90ZToKPiBUaGlzIHBhdGNoIHJlZmFj dG9ycyB0aGUgZHJpdmVyJ3MgaGFuZGxpbmcgYW5kIHRyYWNraW5nIG9mIGRvb3JiZWxscywgaW4K PiBwcmVwYXJhdGlvbiBmb3IgYSBsYXRlciBvbmUgd2hpY2ggd2lsbCByZXNvbHZlIGEgc3VzcGVu ZC1yZXN1bWUgaXNzdWUuCj4KPiBUaGVyZSBhcmUgdGhyZWUgcmVzb3VyY2VzIHRvIGJlIG1hbmFn ZWQ6Cj4gMS4gQ2FjaGVsaW5lczogYSBzaW5nbGUgbGluZSB3aXRoaW4gdGhlIGNsaWVudC1vYmpl Y3QncyBwYWdlIDAKPiAgICAgaXMgc25vb3BlZCBieSBkb29yYmVsbCBoYXJkd2FyZSBmb3Igd3Jp dGVzIGZyb20gdGhlIGhvc3QuCj4gMi4gRG9vcmJlbGwgcmVnaXN0ZXJzOiBlYWNoIGRlZmluZXMg b25lIGNhY2hlbGluZSB0byBiZSBzbm9vcGVkLgo+IDMuIEJpdG1hcDogdHJhY2tzIHdoaWNoIGRv b3JiZWxsIHJlZ2lzdGVycyBhcmUgaW4gdXNlLgo+Cj4gVGhlIGRvb3JiZWxsIHNldHVwL3RlYXJk b3duIHByb3RvY29sIHN0YXJ0cyB3aXRoOgo+IDEuIFBpY2sgYSBjYWNoZWxpbmU6IHNlbGVjdF9k b29yYmVsbF9jYWNoZWxpbmUoKQo+IDIuIEZpbmQgYW4gYXZhaWxhYmxlIGRvb3JiZWxsIHJlZ2lz dGVyOiBhc3NpZ25fZG9vcmJlbGwoKQo+IChUaGVzZSB2YWx1ZXMgYXJlIHBhc3NlZCB0byB0aGUg R3VDIHZpYSB0aGUgc2hhcmVkIGNvbnRleHQKPiBkZXNjcmlwdG9yOyB0aGlzIHBhcnQgb2YgdGhl IHNlcXVlbmNlIHJlbWFpbnMgdW5jaGFuZ2VkKS4KPgo+IDMuIFVwZGF0ZSB0aGUgYml0bWFwIHRv IHJlZmxlY3QgcmVnaXN0ZXJzLWluLXVzZQo+IDQuIFByZXBhcmUgdGhlIGNhY2hlbGluZSBmb3Ig dXNlIGJ5IHNldHRpbmcgaXRzIHN0YXR1cyB0byBFTkFCTEVECj4gNS4gQXNrIHRoZSBHdUMgdG8g cHJvZ3JhbSB0aGUgZG9vcmJlbGwgdG8gc25vb3AgdGhlIGNhY2hlbGluZQo+Cj4gYW5kIG9mIGNv dXJzZSB0ZWFyZG93biBpcyB2ZXJ5IHNpbWlsYXI6Cj4gNi4gU2V0IHRoZSBjYWNoZWxpbmUgdG8g RElTQUJMRUQKPiA3LiBBc2sgdGhlIEd1QyB0byByZXByb2dyYW0gdGhlIGRvb3JiZWxsIHRvIHN0 b3Agc25vb3BpbmcKPiA4LiBSZWNvcmQgdGhhdCB0aGUgZG9vcmJlbGwgaXMgbm90IGluIHVzZS4K Pgo+IE9wZXJhdGlvbnMgNi04IChndWNfZGlzYWJsZV9kb29yYmVsbCgpLCBob3N0Mmd1Y19yZWxl YXNlX2Rvb3JiZWxsKCksIGFuZAo+IHJlbGVhc2VfZG9vcmJlbGwoKSkgd2VyZSBjYWxsZWQgaW4g c2VxdWVuY2UgZnJvbSBndWNfY2xpZW50X2ZyZWUoKSwgYnV0Cj4gYXJlIG5vdyBtb3ZlZCBpbnRv IHRoZSB0ZWFyZG93biBwaGFzZSBvZiB0aGUgY29tbW9uIGZ1bmN0aW9uLgo+Cj4gU3RlcHMgNC01 IChndWNfaW5pdF9kb29yYmVsbCgpIGFuZCBob3N0Mmd1Y19hbGxvY2F0ZV9kb29yYmVsbCgpKSB3 ZXJlCj4gc2ltaWxhcmx5IGRvbmUgYXMgc2VxdWVudGlhbCBzdGVwcyBpbiBndWNfY2xpZW50X2Fs bG9jKCksIGJ1dCBzaW5jZSBpdAo+IHR1cm5zIG91dCB0aGF0IHdlIGRvbid0IG5lZWQgdG8gYmUg YWJsZSB0byBkbyB0aGVtIHNlcGFyYXRlbHkgdGhleSdyZQo+IG5vdyBjb2xsZWN0ZWQgaW50byB0 aGUgc2V0dXAgcGhhc2Ugb2YgdGhlIGNvbW1vbiBmdW5jdGlvbi4KPgo+IFRoZSBvbmx5IG5ldyBj b2RlIChhbmQgbmV3IGNhcGFiaWxpdHkpIGlzIHRoZSBibG9jayB0YWdnZWQKPiAgICAgIC8qIFVw ZGF0ZSB0aGUgR3VDJ3MgaWRlYSBvZiB0aGUgZG9vcmJlbGwgSUQgKi8KPiBpLmUuIHdlIGNhbiBu b3cgKmNoYW5nZSogdGhlIGRvb3JiZWxsIHJlZ2lzdGVyIHVzZWQgYnkgYW4gZXhpc3RpbmcKPiBj bGllbnQsIHdoZXJlYXMgcHJldmlvdXNseSBpdCB3YXMgc2V0IG9uY2UgZm9yIHRoZSBlbnRpcmUg bGlmZXRpbWUKPiBvZiB0aGUgY2xpZW50LiBXZSB3aWxsIHVzZSB0aGlzIG5ldyBmZWF0dXJlIGlu IHRoZSBuZXh0IHBhdGNoLgo+Cj4gdjI6IFRyaXZpYWwgaW5kZXBlbmRlbnQgZml4ZXMgcHVzaGVk IGFoZWFkIGFzIHNlcGFyYXRlIHBhdGNoZXMuCj4gICAgICBNVUNIIGxvbmdlciBjb21taXQgbWVz c2FnZSA6KSBbVHZydGtvIFVyc3VsaW5dCj4KPiBTaWduZWQtb2ZmLWJ5OiBEYXZlIEdvcmRvbiA8 ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVy c3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf c3VibWlzc2lvbi5jIHwgOTQgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4gICAxIGZp bGUgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggMWM0ZmYzYy4uNjJi ZjRiZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMK PiBAQCAtMTc0LDMxICsxNzQsNTkgQEAgc3RhdGljIGludCBob3N0Mmd1Y19zYW1wbGVfZm9yY2V3 YWtlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKPiAgICAqIGNsaWVudCBvYmplY3Qgd2hpY2ggY29u dGFpbnMgdGhlIHBhZ2UgYmVpbmcgdXNlZCBmb3IgdGhlIGRvb3JiZWxsCj4gICAgKi8KPgo+IC1z dGF0aWMgdm9pZCBndWNfaW5pdF9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCj4gLQkJ CSAgICAgIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIGludCBndWNf dXBkYXRlX2Rvb3JiZWxsX2lkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKPiArCQkJCSAgc3RydWN0 IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50LAo+ICsJCQkJICB1MTYgbmV3X2lkKQo+ICAgewo+ICsJ c3RydWN0IHNnX3RhYmxlICpzZyA9IGd1Yy0+Y3R4X3Bvb2xfb2JqLT5wYWdlczsKPiArCXZvaWQg KmRvb3JiZWxsX2JpdG1hcCA9IGd1Yy0+ZG9vcmJlbGxfYml0bWFwOwo+ICAgCXN0cnVjdCBndWNf ZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7Cj4gKwlzdHJ1Y3QgZ3VjX2NvbnRleHRfZGVzYyBkZXNj Owo+ICsJc2l6ZV90IGxlbjsKPgo+ICAgCWRvb3JiZWxsID0gY2xpZW50LT5jbGllbnRfYmFzZSAr IGNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0Owo+Cj4gLQlkb29yYmVsbC0+ZGJfc3RhdHVzID0gR1VD X0RPT1JCRUxMX0VOQUJMRUQ7Cj4gKwlpZiAoY2xpZW50LT5kb29yYmVsbF9pZCAhPSBHVUNfSU5W QUxJRF9ET09SQkVMTF9JRCAmJgo+ICsJICAgIHRlc3RfYml0KGNsaWVudC0+ZG9vcmJlbGxfaWQs IGRvb3JiZWxsX2JpdG1hcCkpIHsKPiArCQkvKiBEZWFjdGl2YXRlIHRoZSBvbGQgZG9vcmJlbGwg Ki8KPiArCQlkb29yYmVsbC0+ZGJfc3RhdHVzID0gR1VDX0RPT1JCRUxMX0RJU0FCTEVEOwo+ICsJ CSh2b2lkKWhvc3QyZ3VjX3JlbGVhc2VfZG9vcmJlbGwoZ3VjLCBjbGllbnQpOwo+ICsJCV9fY2xl YXJfYml0KGNsaWVudC0+ZG9vcmJlbGxfaWQsIGRvb3JiZWxsX2JpdG1hcCk7Cj4gKwl9Cj4gKwo+ ICsJLyogVXBkYXRlIHRoZSBHdUMncyBpZGVhIG9mIHRoZSBkb29yYmVsbCBJRCAqLwo+ICsJbGVu ID0gc2dfcGNvcHlfdG9fYnVmZmVyKHNnLT5zZ2wsIHNnLT5uZW50cywgJmRlc2MsIHNpemVvZihk ZXNjKSwKPiArCQkJICAgICBzaXplb2YoZGVzYykgKiBjbGllbnQtPmN0eF9pbmRleCk7Cj4gKwlp ZiAobGVuICE9IHNpemVvZihkZXNjKSkKPiArCQlyZXR1cm4gLUVGQVVMVDsKPiArCWRlc2MuZGJf aWQgPSBuZXdfaWQ7Cj4gKwlsZW4gPSBzZ19wY29weV9mcm9tX2J1ZmZlcihzZy0+c2dsLCBzZy0+ bmVudHMsICZkZXNjLCBzaXplb2YoZGVzYyksCj4gKwkJCSAgICAgc2l6ZW9mKGRlc2MpICogY2xp ZW50LT5jdHhfaW5kZXgpOwo+ICsJaWYgKGxlbiAhPSBzaXplb2YoZGVzYykpCj4gKwkJcmV0dXJu IC1FRkFVTFQ7Cj4gKwo+ICsJY2xpZW50LT5kb29yYmVsbF9pZCA9IG5ld19pZDsKPiArCWlmIChu ZXdfaWQgPT0gR1VDX0lOVkFMSURfRE9PUkJFTExfSUQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJ LyogQWN0aXZhdGUgdGhlIG5ldyBkb29yYmVsbCAqLwo+ICsJX19zZXRfYml0KG5ld19pZCwgZG9v cmJlbGxfYml0bWFwKTsKPiAgIAlkb29yYmVsbC0+Y29va2llID0gMDsKPiArCWRvb3JiZWxsLT5k Yl9zdGF0dXMgPSBHVUNfRE9PUkJFTExfRU5BQkxFRDsKPiArCXJldHVybiBob3N0Mmd1Y19hbGxv Y2F0ZV9kb29yYmVsbChndWMsIGNsaWVudCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZ3VjX2lu aXRfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3VjLAo+ICsJCQkgICAgICBzdHJ1Y3QgaTkx NV9ndWNfY2xpZW50ICpjbGllbnQsCj4gKwkJCSAgICAgIHVpbnQxNl90IGRiX2lkKQo+ICt7Cj4g KwlyZXR1cm4gZ3VjX3VwZGF0ZV9kb29yYmVsbF9pZChndWMsIGNsaWVudCwgZGJfaWQpOwo+ICAg fQo+Cj4gICBzdGF0aWMgdm9pZCBndWNfZGlzYWJsZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsCj4gICAJCQkJIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKPiAgIHsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7Cj4g LQlzdHJ1Y3QgZ3VjX2Rvb3JiZWxsX2luZm8gKmRvb3JiZWxsOwo+IC0JaTkxNV9yZWdfdCBkcmJy ZWcgPSBHRU44X0RSQlJFR0woY2xpZW50LT5kb29yYmVsbF9pZCk7Cj4gLQlpbnQgdmFsdWU7Cj4g LQo+IC0JZG9vcmJlbGwgPSBjbGllbnQtPmNsaWVudF9iYXNlICsgY2xpZW50LT5kb29yYmVsbF9v ZmZzZXQ7Cj4gLQo+IC0JZG9vcmJlbGwtPmRiX3N0YXR1cyA9IEdVQ19ET09SQkVMTF9ESVNBQkxF RDsKPiAtCj4gLQl2YWx1ZSA9IEk5MTVfUkVBRChkcmJyZWcpOwo+IC0JV0FSTl9PTigodmFsdWUg JiBHRU44X0RSQl9WQUxJRCkgIT0gMCk7Cj4gKwkodm9pZClndWNfdXBkYXRlX2Rvb3JiZWxsX2lk KGd1YywgY2xpZW50LCBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRCk7Cj4KPiAgIAkvKiBYWFg6IHdh aXQgZm9yIGFueSBpbnRlcnJ1cHRzICovCj4gICAJLyogWFhYOiB3YWl0IGZvciB3b3JrcXVldWUg dG8gZHJhaW4gKi8KPiBAQCAtMjU0LDExICsyODIsNiBAQCBzdGF0aWMgdWludDE2X3QgYXNzaWdu X2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdWludDMyX3QgcHJpb3JpdHkpCj4gICAJ cmV0dXJuIGlkOwo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lkIHJlbGVhc2VfZG9vcmJlbGwoc3RydWN0 IGludGVsX2d1YyAqZ3VjLCB1aW50MTZfdCBpZCkKPiAtewo+IC0JX19jbGVhcl9iaXQoaWQsIGd1 Yy0+ZG9vcmJlbGxfYml0bWFwKTsKPiAtfQo+IC0KPiAgIC8qCj4gICAgKiBJbml0aWFsaXNlIHRo ZSBwcm9jZXNzIGRlc2NyaXB0b3Igc2hhcmVkIHdpdGggdGhlIEd1QyBmaXJtd2FyZS4KPiAgICAq Lwo+IEBAIC02NTEsMjEgKzY3NCwxMSBAQCBzdGF0aWMgdm9pZCBnZW1fcmVsZWFzZV9ndWNfb2Jq KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJICovCj4KPiAgIAlpZiAoY2xp ZW50LT5jbGllbnRfYmFzZSkgewo+IC0JCXVpbnQxNl90IGRiX2lkID0gY2xpZW50LT5kb29yYmVs bF9pZDsKPiAtCj4gICAJCS8qCj4gLQkJICogSWYgd2UgZ290IGFzIGZhciBhcyBzZXR0aW5nIHVw IGEgZG9vcmJlbGwsIG1ha2Ugc3VyZQo+IC0JCSAqIHdlIHNodXQgaXQgZG93biBiZWZvcmUgdW5t YXBwaW5nICYgZGVhbGxvY2F0aW5nIHRoZQo+IC0JCSAqIG1lbW9yeS4gU28gZmlyc3QgZGlzYWJs ZSB0aGUgZG9vcmJlbGwsIHRoZW4gdGVsbCB0aGUKPiAtCQkgKiBHdUMgdGhhdCB3ZSd2ZSBmaW5p c2hlZCB3aXRoIGl0LCBmaW5hbGx5IGRlYWxsb2NhdGUKPiAtCQkgKiBpdCBpbiBvdXIgYml0bWFw Cj4gKwkJICogSWYgd2UgZ290IGFzIGZhciBhcyBzZXR0aW5nIHVwIGEgZG9vcmJlbGwsIG1ha2Ug c3VyZSB3ZQo+ICsJCSAqIHNodXQgaXQgZG93biBiZWZvcmUgdW5tYXBwaW5nICYgZGVhbGxvY2F0 aW5nIHRoZSBtZW1vcnkuCj4gICAJCSAqLwo+IC0JCWlmIChkYl9pZCAhPSBHVUNfSU5WQUxJRF9E T09SQkVMTF9JRCkgewo+IC0JCQlndWNfZGlzYWJsZV9kb29yYmVsbChndWMsIGNsaWVudCk7Cj4g LQkJCWlmICh0ZXN0X2JpdChkYl9pZCwgZ3VjLT5kb29yYmVsbF9iaXRtYXApKQo+IC0JCQkJaG9z dDJndWNfcmVsZWFzZV9kb29yYmVsbChndWMsIGNsaWVudCk7Cj4gLQkJCXJlbGVhc2VfZG9vcmJl bGwoZ3VjLCBkYl9pZCk7Cj4gLQkJfQo+ICsJCWd1Y19kaXNhYmxlX2Rvb3JiZWxsKGd1YywgY2xp ZW50KTsKPgo+ICAgCQlrdW5tYXAoa21hcF90b19wYWdlKGNsaWVudC0+Y2xpZW50X2Jhc2UpKTsK PiAgIAl9Cj4gQEAgLTcwMCw2ICs3MTMsNyBAQCBzdGF0aWMgdm9pZCBnZW1fcmVsZWFzZV9ndWNf b2JqKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJc3RydWN0IGk5MTVfZ3Vj X2NsaWVudCAqY2xpZW50Owo+ICAgCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+ Z3VjOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwl1aW50MTZfdCBk Yl9pZDsKPgo+ICAgCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKCpjbGllbnQpLCBHRlBfS0VSTkVM KTsKPiAgIAlpZiAoIWNsaWVudCkKPiBAQCAtNzQwLDIyICs3NTQsMjAgQEAgc3RhdGljIHZvaWQg Z2VtX3JlbGVhc2VfZ3VjX29iaihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAg CWVsc2UKPiAgIAkJY2xpZW50LT5wcm9jX2Rlc2Nfb2Zmc2V0ID0gKEdVQ19EQl9TSVpFIC8gMik7 Cj4KPiAtCWNsaWVudC0+ZG9vcmJlbGxfaWQgPSBhc3NpZ25fZG9vcmJlbGwoZ3VjLCBjbGllbnQt PnByaW9yaXR5KTsKPiAtCWlmIChjbGllbnQtPmRvb3JiZWxsX2lkID09IEdVQ19JTlZBTElEX0RP T1JCRUxMX0lEKQo+ICsJZGJfaWQgPSBhc3NpZ25fZG9vcmJlbGwoZ3VjLCBjbGllbnQtPnByaW9y aXR5KTsKPiArCWlmIChkYl9pZCA9PSBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRCkKPiAgIAkJLyog WFhYOiBldmljdCBhIGRvb3JiZWxsIGluc3RlYWQgKi8KPiAgIAkJZ290byBlcnI7Cj4KPiAgIAln dWNfaW5pdF9wcm9jX2Rlc2MoZ3VjLCBjbGllbnQpOwo+ICAgCWd1Y19pbml0X2N0eF9kZXNjKGd1 YywgY2xpZW50KTsKPiAtCWd1Y19pbml0X2Rvb3JiZWxsKGd1YywgY2xpZW50KTsKPiAtCj4gLQkv KiBYWFg6IEFueSBjYWNoZSBmbHVzaGVzIG5lZWRlZD8gR2VuZXJhbCBkb21haW4gbWdtdCBjYWxs cz8gKi8KPiAtCj4gLQlpZiAoaG9zdDJndWNfYWxsb2NhdGVfZG9vcmJlbGwoZ3VjLCBjbGllbnQp KQo+ICsJaWYgKGd1Y19pbml0X2Rvb3JiZWxsKGd1YywgY2xpZW50LCBkYl9pZCkpCj4gICAJCWdv dG8gZXJyOwo+Cj4gLQlEUk1fREVCVUdfRFJJVkVSKCJuZXcgcHJpb3JpdHkgJXUgY2xpZW50ICVw OiBjdHhfaW5kZXggJXUgZGJfaWQgJXVcbiIsCj4gLQkJcHJpb3JpdHksIGNsaWVudCwgY2xpZW50 LT5jdHhfaW5kZXgsIGNsaWVudC0+ZG9vcmJlbGxfaWQpOwo+ICsJRFJNX0RFQlVHX0RSSVZFUigi bmV3IHByaW9yaXR5ICV1IGNsaWVudCAlcDogY3R4X2luZGV4ICV1XG4iLAo+ICsJCXByaW9yaXR5 LCBjbGllbnQsIGNsaWVudC0+Y3R4X2luZGV4KTsKPiArCURSTV9ERUJVR19EUklWRVIoImRvb3Ji ZWxsIGlkICV1LCBjYWNoZWxpbmUgb2Zmc2V0IDB4JXhcbiIsCj4gKwkJY2xpZW50LT5kb29yYmVs bF9pZCwgY2xpZW50LT5kb29yYmVsbF9vZmZzZXQpOwo+Cj4gICAJcmV0dXJuIGNsaWVudDsKPgo+ CgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K ClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==