From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v9 08/39] drm/i915: hdcp1.4 CP_IRQ handling and SW encryption tracking Date: Wed, 19 Dec 2018 16:48:00 +0100 Message-ID: <20181219154800.GP21184@phenom.ffwll.local> References: <1544673701-6353-1-git-send-email-ramalingam.c@intel.com> <1544673701-6353-9-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1544673701-6353-9-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, seanpaul@chromium.org, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBEZWMgMTMsIDIwMTggYXQgMDk6MzE6MTBBTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+ICJoZGNwX2VuY3J5cHRlZCIgZmxhZyBpcyBkZWZpbmVkIHRvIGRlbm90ZSB0aGUgSERD UDEuNCBlbmNyeXB0aW9uIHN0YXR1cy4KPiBUaGlzIFNXIHRyYWNraW5nIGlzIHVzZWQgdG8gZGV0 ZXJtaW5lIHRoZSBuZWVkIGZvciByZWFsIGhkY3AxLjQgZGlzYWJsZQo+IGFuZCBoZGNwX2NoZWNr X2xpbmsgdXBvbiBDUF9JUlEuCj4gCj4gT24gQ1BfSVJRIHdlIGZpbHRlciB0aGUgQ1BfSVJRIHJl bGF0ZWQgdG8gdGhlIHN0YXRlcyBsaWtlIExpbmsgZmFpbHVyZQo+IGFuZCByZWF1dGhlbnRpY2F0 aW9uIHJlcSBldGMgYW5kIGhhbmRsZSB0aGVtIGluIGhkY3BfY2hlY2tfbGluay4KPiBDUF9JUlEg Y29ycmVzcG9uZGluZyB0byB0aGUgYXV0aGVudGljYXRpb24gbXNnIGF2YWlsYWJpbGl0eSBhcmUg aWdub3JlZC4KPiAKPiBXQVJOX09OIGlzIGFkZGVkIGZvciB0aGUgYWJydXB0IHN0b3Agb2YgSERD UCBlbmNyeXB0aW9uIG9mIGEgcG9ydC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMg PHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8 ICA1ICsrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgfCA4OSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCA3NCBp bnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK PiBpbmRleCBhYmE4ODRjNjQ4NzkuLjg5MzE1ZTE1ZmIzNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+IEBAIC00NzU4LDcgKzQ3NTgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9jaGVj a19zZXJ2aWNlX2lycShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJCWludGVsX2RwX2hh bmRsZV90ZXN0X3JlcXVlc3QoaW50ZWxfZHApOwo+ICAKPiAgCWlmICh2YWwgJiBEUF9DUF9JUlEp Cj4gLQkJaW50ZWxfaGRjcF9jaGVja19saW5rKGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3Ip Owo+ICsJCWludGVsX2hkY3BfaGFuZGxlX2NwX2lycShpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVj dG9yKTsKPiAgCj4gIAlpZiAodmFsICYgRFBfU0lOS19TUEVDSUZJQ19JUlEpCj4gIAkJRFJNX0RF QlVHX0RSSVZFUigiU2luayBzcGVjaWZpYyBpcnEgdW5oYW5kbGVkXG4iKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+IGluZGV4IDE5MWI2ZTBmMDg2Yy4uZGVjZDAzNDZjNmE3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMzkzLDYgKzM5Myw5IEBAIHN0cnVjdCBpbnRl bF9oZGNwIHsKPiAgCXN0cnVjdCBkZWxheWVkX3dvcmsgY2hlY2tfd29yazsKPiAgCXN0cnVjdCB3 b3JrX3N0cnVjdCBwcm9wX3dvcms7Cj4gIAo+ICsJLyogSERDUDEuNCBFbmNyeXB0aW9uIHN0YXR1 cyAqLwo+ICsJdTggaGRjcF9lbmNyeXB0ZWQ7CgpBbm90aGVyIGJvb2wgSSBndWVzcz8gT3IgdW5z aWduZWQgOiAxOwoKPiArCj4gIAkvKiBIRENQMi4yIHJlbGF0ZWQgZGVmaW5pdGlvbnMgKi8KPiAg CS8qIEZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBjb25uZWN0b3Igc3VwcG9ydHMgSERDUDIu MiBvciBub3QuICovCj4gIAl1OCBoZGNwMl9zdXBwb3J0ZWQ7Cj4gQEAgLTIwNTgsMTAgKzIwNjEs MTAgQEAgaW50IGludGVsX2hkY3BfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsCj4gIAkJICAgIGJvb2wgaGRjcDJfc3VwcG9ydGVkKTsKPiAgaW50IGludGVsX2hkY3BfZW5h YmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gIGludCBpbnRlbF9oZGNw X2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiAtaW50IGludGVs X2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ICBi b29sIGlzX2hkY3Bfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg ZW51bSBwb3J0IHBvcnQpOwo+ICBib29sIGludGVsX2hkY3BfY2FwYWJsZShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpOwo+ICBib29sIGlzX2hkY3AyX3N1cHBvcnRlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIGludGVsX2hkY3BfaGFuZGxlX2Nw X2lycShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ICAKPiAgLyogaW50ZWxf cHNyLmMgKi8KPiAgI2RlZmluZSBDQU5fUFNSKGRldl9wcml2KSAoSEFTX1BTUihkZXZfcHJpdikg JiYgZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3Au Ywo+IGluZGV4IDk0MDVmY2UwN2I5My4uMmI3ODE0YTZmMTJiIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkY3AuYwo+IEBAIC03NSw2ICs3NSwxNiBAQCBib29sIGludGVsX2hkY3BfY2FwYWJs ZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlyZXR1cm4gY2FwYWJsZTsK PiAgfQo+ICAKPiArc3RhdGljIGlubGluZSBib29sIGludGVsX2hkY3BfaW5fdXNlKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCWVudW0gcG9y dCBwb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+ICsJdTMyIHJlZzsKPiArCj4gKwly ZWcgPSBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSk7Cj4gKwlyZXR1cm4gcmVnICYg SERDUF9TVEFUVVNfRU5DOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IGludGVsX2hkY3BfcG9sbF9r c3ZfZmlmbyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiAgCQkJ CSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltKQo+ICB7Cj4gQEAgLTY2OSw2 ICs2NzksNyBAQCBzdGF0aWMgaW50IF9pbnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ICAJRFJNX0RFQlVHX0tNUygiWyVzOiVkXSBIRENQIGlzIGJl aW5nIGRpc2FibGVkLi4uXG4iLAo+ICAJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5uYW1lLCBjb25u ZWN0b3ItPmJhc2UuYmFzZS5pZCk7Cj4gIAo+ICsJaGRjcC0+aGRjcF9lbmNyeXB0ZWQgPSAwOwo+ ICAJSTkxNV9XUklURShQT1JUX0hEQ1BfQ09ORihwb3J0KSwgMCk7Cj4gIAlpZiAoaW50ZWxfd2Fp dF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsIFBPUlRfSERDUF9TVEFUVVMocG9ydCksIH4wLCAwLAo+ ICAJCQkJICAgIEVOQ1JZUFRfU1RBVFVTX0NIQU5HRV9USU1FT1VUX01TKSkgewo+IEBAIC03MTQs OCArNzI1LDEwIEBAIHN0YXRpYyBpbnQgX2ludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCS8qIEluY2FzZSBvZiBhdXRoZW50aWNhdGlvbiBmYWls dXJlcywgSERDUCBzcGVjIGV4cGVjdHMgcmVhdXRoLiAqLwo+ICAJZm9yIChpID0gMDsgaSA8IHRy aWVzOyBpKyspIHsKPiAgCQlyZXQgPSBpbnRlbF9oZGNwX2F1dGgoY29ubl90b19kaWdfcG9ydChj b25uZWN0b3IpLCBoZGNwLT5zaGltKTsKPiAtCQlpZiAoIXJldCkKPiArCQlpZiAoIXJldCkgewo+ ICsJCQloZGNwLT5oZGNwX2VuY3J5cHRlZCA9IDE7Cj4gIAkJCXJldHVybiAwOwo+ICsJCX0KPiAg Cj4gIAkJRFJNX0RFQlVHX0tNUygiSERDUCBBdXRoIGZhaWx1cmUgKCVkKVxuIiwgcmV0KTsKPiAg Cj4gQEAgLTc0MiwxNiArNzU1LDE3IEBAIGludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9k aWdfcG9ydC0+YmFzZS5wb3J0Owo+ICAJaW50IHJldCA9IDA7Cj4gIAo+IC0JaWYgKCFoZGNwLT5z aGltKQo+IC0JCXJldHVybiAtRU5PRU5UOwo+IC0KPiAgCW11dGV4X2xvY2soJmhkY3AtPm11dGV4 KTsKPiAgCj4gLQlpZiAoaGRjcC0+dmFsdWUgPT0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9O X1VOREVTSVJFRCkKPiArCS8qIENoZWNrX2xpbmsgdmFsaWQgb25seSB3aGVuIEhEQ1AxLjQgaXMg ZW5hYmxlZCAqLwo+ICsJaWYgKGhkY3AtPnZhbHVlICE9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVD VElPTl9FTkFCTEVEIHx8Cj4gKwkgICAgIWhkY3AtPmhkY3BfZW5jcnlwdGVkKSB7Cj4gKwkJcmV0 ID0gLUVJTlZBTDsKPiAgCQlnb3RvIG91dDsKPiArCX0KPiAgCj4gLQlpZiAoIShJOTE1X1JFQUQo UE9SVF9IRENQX1NUQVRVUyhwb3J0KSkgJiBIRENQX1NUQVRVU19FTkMpKSB7Cj4gLQkJRFJNX0VS Uk9SKCIlczolZCBIRENQIGNoZWNrIGZhaWxlZDogbGluayBpcyBub3QgZW5jcnlwdGVkLCV4XG4i LAo+ICsJaWYgKFdBUk5fT04oIWludGVsX2hkY3BfaW5fdXNlKGNvbm5lY3RvcikpKSB7Cj4gKwkJ RFJNX0VSUk9SKCIlczolZCBIRENQIGxpbmsgc3RvcHBlZCBlbmNyeXB0aW9uLCV4XG4iLAo+ICAJ CQkgIGNvbm5lY3Rvci0+YmFzZS5uYW1lLCBjb25uZWN0b3ItPmJhc2UuYmFzZS5pZCwKPiAgCQkJ ICBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkpOwo+ICAJCXJldCA9IC1FTlhJTzsK PiBAQCAtNzkyLDE4ICs4MDYsNiBAQCBpbnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0 YXRpYyB2b2lkIGludGVsX2hkY3BfY2hlY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp Cj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gY29udGFpbmVyX29mKHRvX2RlbGF5 ZWRfd29yayh3b3JrKSwKPiAtCQkJCQkgICAgICAgc3RydWN0IGludGVsX2hkY3AsCj4gLQkJCQkJ ICAgICAgIGNoZWNrX3dvcmspOwo+IC0Jc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y ID0gaW50ZWxfaGRjcF90b19jb25uZWN0b3IoaGRjcCk7Cj4gLQo+IC0JaWYgKCFpbnRlbF9oZGNw X2NoZWNrX2xpbmsoY29ubmVjdG9yKSkKPiAtCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmhkY3At PmNoZWNrX3dvcmssCj4gLQkJCQkgICAgICBEUk1fSERDUF9DSEVDS19QRVJJT0RfTVMpOwo+IC19 CgpXaHkgbW92ZSB0aGUgZnVuY3Rpb24/Cj4gLQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9oZGNwX3By b3Bfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9o ZGNwICpoZGNwID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBpbnRlbF9oZGNwLAo+IEBAIC0x MDI4LDYgKzEwMzAsMjUgQEAgaW50IGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJcmV0dXJuIGhkY3AyX2Nsb3NlX21laV9zZXNz aW9uKGNvbm5lY3Rvcik7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBfaW50ZWxfaGRj cF9jaGVja193b3JrKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJ c3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICsKPiArCWlmICgh aW50ZWxfaGRjcF9jaGVja19saW5rKGNvbm5lY3RvcikpCj4gKwkJc2NoZWR1bGVfZGVsYXllZF93 b3JrKCZoZGNwLT5jaGVja193b3JrLAo+ICsJCQkJICAgICAgRFJNX0hEQ1BfQ0hFQ0tfUEVSSU9E X01TKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfaGRjcF9jaGVja193b3JrKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKPiArewo+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSBj b250YWluZXJfb2YodG9fZGVsYXllZF93b3JrKHdvcmspLAo+ICsJCQkJCSAgICAgICBzdHJ1Y3Qg aW50ZWxfaGRjcCwKPiArCQkJCQkgICAgICAgY2hlY2tfd29yayk7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9oZGNwX3RvX2Nvbm5lY3RvcihoZGNwKTsKPiAr Cj4gKwlfaW50ZWxfaGRjcF9jaGVja193b3JrKGNvbm5lY3Rvcik7Cj4gK30KPiArCj4gIHN0YXRp YyBpbnQgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEpCj4gIHsKPiAgCXJldHVybiAhc3RyY21wKGRldi0+ZHJpdmVyLT5uYW1lLCAibWVpX2hk Y3AiKTsKPiBAQCAtMTE1Niw3ICsxMTc3LDggQEAgaW50IGludGVsX2hkY3BfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAo+ICAJaWYgKGhkY3AtPnZhbHVlICE9 IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9VTkRFU0lSRUQpIHsKPiAgCQloZGNwLT52YWx1 ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9VTkRFU0lSRUQ7Cj4gLQkJcmV0ID0gX2lu dGVsX2hkY3BfZGlzYWJsZShjb25uZWN0b3IpOwo+ICsJCWlmIChoZGNwLT5oZGNwX2VuY3J5cHRl ZCkKPiArCQkJcmV0ID0gX2ludGVsX2hkY3BfZGlzYWJsZShjb25uZWN0b3IpOwo+ICAJfQo+ICAK PiAgCW11dGV4X3VubG9jaygmaGRjcC0+bXV0ZXgpOwo+IEBAIC0xMTk2LDMgKzEyMTgsMzAgQEAg dm9pZCBpbnRlbF9oZGNwX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICAJCQkJCQkgICBuZXdfc3RhdGUtPmNydGMpOwo+ICAJY3J0Y19zdGF0ZS0+bW9kZV9j aGFuZ2VkID0gdHJ1ZTsKPiAgfQo+ICsKPiArLyogSGFuZGxlcyB0aGUgQ1BfSVJRIHJhaXNlZCBm cm9tIHRoZSBEUCBIRENQIHNpbmsgKi8KPiArdm9pZCBpbnRlbF9oZGNwX2hhbmRsZV9jcF9pcnEo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxf aGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gKwo+ICsJaWYgKCFoZGNwLT5zaGltKQo+ ICsJCXJldHVybjsKPiArCj4gKwkvKgo+ICsJICogQXMgb2Ygbm93IHdlIHdhbnQgdG8gaGFuZGxl IENQX0lSUSB0cmlnZ2VyZWQgd2hpbGUgZW5jcnlwdGlvbiBpcwo+ICsJICogZW5hYmxlZC4gVGhp cyBpbmNsdWRlcyB0aGUgbm90aWZpY2F0aW9uIGZvciBUb3BvbG9neSBjaGFuZ2UsCj4gKwkgKiBM aW5rIGZhaWx1cmUsIHJlYXV0aCByZXF1ZXN0IGV0Yy4KPiArCSAqIEF1dGggbXNnIGF2YWlsYWJp bGl0eSBub3RpZmljYXRpb25zIGFyZSBpZ25vcmVkIHdpdGggbXV0ZXhfdHJ5bG9jawo+ICsJICog YXMgYXV0aGVudGljYXRpb24gaG9sZHMgdGhlIGxvY2suIExvY2sgbWlnaHQgYmUgdGFrZW4gZm9y IGxpbmsgY2hlY2sKPiArCSAqIG9yIGhkY3BfZGlzYWJsZSB0b28uIEluIGVpdGhlciBvZiBzdGF0 ZSB3ZSBuZWVkIG5vdCBoYW5kbGUgdGhlCj4gKwkgKiBDUF9JUlEsIGZvciBrbm93biByZWFzb25z Lgo+ICsJICovCj4gKwlpZiAoIW11dGV4X3RyeWxvY2soJmhkY3AtPm11dGV4KSkKClRoaXMgaXMg bm90IGEgZ29vZCB3YXkgdG8gZml4IHJlY3Vyc2lvbnMsIGJlY2F1c2UgdGhlIGxvY2sgbWlnaHQg YmUgaGVsZApieSBzb21lb25lIGVsc2UgZm9yIG90aGVyIHJlYXNvbnMsIGFuZCB0aGVuIHlvdSBq dXN0IGRyb3AgZXZlbnRzIG9uIHRoZQpmbG9vci4gV29yc2UsIHVzdWFsbHkgaXQgd29ya3MsIGV4 Y2VwdCB3aGVuIGl0IHN0b3BzIHdvcmtpbmcuCgpTaW5jZSB5b3UgYWxyZWFkeSBoYXZlIGEgc2Vw YXJhdGUgd29ya2VyIGp1c3Qgc2NoZWR1bGUgdGhhdCBvbmUsIGFuZCBsZWF2ZQppdCB1cCB0byB0 aGUgd29ya2VyIHRvIGZpbHRlciBvdXQgZXZlbnRzIHdlIGRvbid0IGNhcmUgYWJvdXQuCgo+ICsJ CXJldHVybjsKPiArCj4gKwlpZiAoIWhkY3AtPmhkY3BfZW5jcnlwdGVkKQo+ICsJCXJldHVybjsK ClRoaXMgY2hlY2sgd291bGQgbmVlZCB0byBiZSBtb3ZlZCBpbnRlbF9oZGNwX2NoZWNrX2xpbmso KS4KPiArCj4gKwltdXRleF91bmxvY2soJmhkY3AtPm11dGV4KTsKPiArCV9pbnRlbF9oZGNwX2No ZWNrX3dvcmsoY29ubmVjdG9yKTsKClNvIGluc3RlYWQgb2YgdGhlIGRpcmVjdCBjYWxsIHdlIG5l ZWQgYSBzY2hlZHVsZV93b3JrKCkgaGVyZSAod2l0aG91dApkZWxheSBvZmMpLiBOb3RlIHRoYXQg aWYgdGhlIHdvcmsgaXMgYWxyZWFkeSBzY2hlZHVsZWQgaXQgd29uJ3QgYmUKc2NoZWR1bGVkIHRv IHJ1biB0d2ljZSwgc28gc2hvdWxkIGp1c3Qgd29yayBhcy1pcyBJIHRoaW5rLgotRGFuaWVsCj4g K30KPiAtLSAKPiAyLjcuNAo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=