From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 7/8] drm/i915: Fix random aux transactions failures. Date: Mon, 23 Nov 2015 12:10:32 +0200 Message-ID: <8737vx9gbr.fsf@intel.com> References: <1448066790-19591-1-git-send-email-rodrigo.vivi@intel.com> <1448066790-19591-9-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1448066790-19591-9-git-send-email-rodrigo.vivi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter , dri-devel@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org CkkgZG9uJ3Qgc2VlIGhvdyB0aGUgc3ViamVjdCBtYXRjaGVzIHRoZSBjb21taXQuCgpPbiBTYXQs IDIxIE5vdiAyMDE1LCBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+IHdyb3Rl Ogo+IFRoaXMgcmVhZCB3YWtlIHdpdGggcmV0cmllcyB3ZXJlIGluaXRpYWxseSBhZGRlZCBieSAy IGNvbW1pdHM6Cj4KPiBjb21taXQgNjFkYTVmYWIgKCJkcm0vaTkxNS9kcDogcmV0cnkgbGluayBz dGF0dXMgcmVhZCAzIHRpbWVzIG9uIGZhaWx1cmUiKQo+IGNvbW1pdCA4OTk1MjZkOSAoImRybS9p OTE1L2RwOiB0cnkgdG8gcmVhZCByZWNlaXZlciBjYXBhYmlsaXRpZXMgMyB0aW1lcyB3aGVuIGRl dGVjdGluZyIpCj4KPiBCb3RoIG1lbnRpb25pbmcgc2VjdGlvbiA5LjEgb2YgdGhlIDEuMWEgRGlz cGxheVBvcnQgc3BlYywgdGhhdCBhY3R1YWxseQo+IHRlbGwgdXMgdG8gcmV0cnkgdGhyZWUgdGlt ZXMgb24gY2VydGFpbiBjYXNlIHdoZW4gIndyaXRpbmcgMDFoIHRvIERQQ0QgYWRkcmVzcyA2MDBo Igo+IGFuZCB0aGlzIGNvZGUgaXMgYWxyZWFkeSBpbiBwbGFjZSBpbiBvdXIgZHJpdmVyLiBBZGRl ZCBieToKPgo+IGNvbW1pdCBjN2FkMzgxMCAoImRybS9pOTE1L2RwOiBtYW5hZ2Ugc2luayBwb3dl ciBzdGF0ZSBpZiBwb3NzaWJsZSIpCgpJIHN0aWxsIHRoaW5rIHdoYXQgd2UgY3VycmVudGx5IGRv IGZvciB0aGUgc2luayBwb3dlciBzdGF0ZSBtYW5hZ2VtZW50CndvcmtzIGJ5IGNvaW5jaWRlbmNl LiBXZSBzaG91bGQgc3RpbGwgbG9vayBpbnRvIGl0LgoKSG93ZXZlciwgSSB0aGluayB0aGlzIHNl cmllcyBvdmVyYWxsIChhcGFydCBmcm9tIHBhdGNoIDYvOCB3aGljaCByZWFsbHkKaXMgYSBidW1t ZXIsIHRoZSBjb21tZW50IGlubGluZSBiZWxvdywgYW5kIHRoZSBtaW5vciBvdGhlciBjb21tZW50 cykKbG9va3MgbGlrZSB3b3J0aHdoaWxlIGNoYW5nZXMuIFdlIGNhbiBsZWF2ZSB0aGUgcG93ZXIg c3RhdGUgbWFuYWdlbWVudApmb3IgbGF0ZXIuIE9yIHJpcCBpdCBvdXQgZm9yIG5vdy4uLgoKPiBB dCB0aGlzIHBvaW50IHdlIGhhdmUgbm8gdmlzaWJpbGl0eSBpZiB0aG9zZSBwYXRjaGVzIHdlcmUg YWRkZWQgdG8gd29ya2Fyb3VuZCBjZXJ0YWluCj4gY29ybmVyIGNhc2VzIGxpa2UgbGF6eSBkb25n bGVzIG9yIHdoYXQsIGJ1dCBhbHNvIGF0IHRoYXQgdGltZSB0aGVyZSB3YXNuJ3QgZW5vdWdoCj4g cmV0cmllcyBvbiB0aGUgcHJvcGVyIHBsYWNlcy4KPgo+IFNvIG15IHByb3Bvc2FsIGlzIHRvIHJl bW92ZSB0aGVzZSByZXRyaWVzIGZvciBub3cgdGhhdCB3ZSBoYXZlIGRybSBoYW5kbGluZyB0aGUg cmV0cmllcwo+IGFuZCBpZiB3ZSBmYWNlIGFueSBjb3JuZXIgY2FzZSBiYWNrIGFnYWluIHdlIHN0 dWR5IGl0IHRvIHJldHVybiBFQUdBSU4gb3IgRUJVU1kKPiB0byBmb3JjZSByZXRyaWVzIGF0IGRy bSBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoZW0gaGVyZS4KPgo+IHYyOiBJbXByb3ZlIGNvbW1pdCBt ZXNzYWdlIHRyeWluZyB0byBleHBsYWluIHRoZSBvcmlnaW4gb2YgdGhlIHJldHJpZXMuCj4KPiBD YzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiBDYzogSmFuaSBOaWt1 bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPiBDYzogSmVzc2UgQmFybmVzIDxqYmFybmVzQHZp cnR1b3VzZ2Vlay5vcmc+Cj4gU2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZp dmlAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIHwg OTUgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNo YW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gaW5kZXggYzg3ZTkzNy4uMmNlNjUyNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+IEBAIC05ODUsNyArOTg1LDggQEAgaW50ZWxfZHBfYXV4X3RyYW5zZmVyKHN0cnVj dCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfYXV4X21zZyAqbXNnKQo+ICAJCWlmIChX QVJOX09OKHJ4c2l6ZSA+IDIwKSkKPiAgCQkJcmV0dXJuIC1FMkJJRzsKPiAgCj4gLQkJcmV0ID0g aW50ZWxfZHBfYXV4X2NoKGludGVsX2RwLCB0eGJ1ZiwgdHhzaXplLCByeGJ1ZiwgcnhzaXplKTsK PiArCQlyZXQgPSBpbnRlbF9kcF9hdXhfY2goaW50ZWxfZHAsIHR4YnVmLCB0eHNpemUsCj4gKwkJ CQkgICAgICByeGJ1ZiwgcnhzaXplKTsKPiAgCQlpZiAocmV0ID4gMCkgewo+ICAJCQltc2ctPnJl cGx5ID0gcnhidWZbMF0gPj4gNDsKPiAgCQkJLyoKPiBAQCAtMzE1MCw0NyArMzE1MSwxNiBAQCBz dGF0aWMgdm9pZCBjaHZfZHBfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiAgfQo+ICAKPiAgLyoKPiAtICogTmF0aXZlIHJlYWQgd2l0aCByZXRyeSBmb3Ig bGluayBzdGF0dXMgYW5kIHJlY2VpdmVyIGNhcGFiaWxpdHkgcmVhZHMgZm9yCj4gLSAqIGNhc2Vz IHdoZXJlIHRoZSBzaW5rIG1heSBzdGlsbCBiZSBhc2xlZXAuCj4gLSAqCj4gLSAqIFNpbmtzIGFy ZSAqc3VwcG9zZWQqIHRvIGNvbWUgdXAgd2l0aGluIDFtcyBmcm9tIGFuIG9mZiBzdGF0ZSwgYnV0 IHdlJ3JlIGFsc28KPiAtICogc3VwcG9zZWQgdG8gcmV0cnkgMyB0aW1lcyBwZXIgdGhlIHNwZWMu Cj4gLSAqLwo+IC1zdGF0aWMgc3NpemVfdAo+IC1pbnRlbF9kcF9kcGNkX3JlYWRfd2FrZShzdHJ1 Y3QgZHJtX2RwX2F1eCAqYXV4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+IC0JCQl2b2lkICpidWZm ZXIsIHNpemVfdCBzaXplKQo+IC17Cj4gLQlzc2l6ZV90IHJldDsKPiAtCWludCBpOwo+IC0KPiAt CS8qCj4gLQkgKiBTb21ldGltZSB3ZSBqdXN0IGdldCB0aGUgc2FtZSBpbmNvcnJlY3QgYnl0ZSBy ZXBlYXRlZAo+IC0JICogb3ZlciB0aGUgZW50aXJlIGJ1ZmZlci4gRG9pbmcganVzdCBvbmUgdGhy b3cgYXdheSByZWFkCj4gLQkgKiBpbml0aWFsbHkgc2VlbXMgdG8gInNvbHZlIiBpdC4KPiAtCSAq Lwo+IC0JZHJtX2RwX2RwY2RfcmVhZChhdXgsIERQX0RQQ0RfUkVWLCBidWZmZXIsIDEpOwoKVGhp cyBzdGlsbCBuZWVkcyB0byBiZSBhZGRyZXNzZWQgc29tZWhvdy4gTWF5YmUgaXQncyBzdWZmaWNp ZW50IGZvcgpWaWxsZSB0byB0ZXN0IHdpdGggaGlzIG1vbml0b3I/Cgpjb21taXQgZjZhMTkwNjY3 NDAwNTM3N2I2NGVlNTQzMWMxNDE4MDc3YzFiMjQyNQpBdXRob3I6IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkRhdGU6ICAgVGh1IE9jdCAxNiAyMDo0Njow OSAyMDE0ICswMzAwCgogICAgZHJtL2k5MTU6IERvIGEgZHVtbXkgRFBDRCByZWFkIGJlZm9yZSB0 aGUgYWN0dWFsIHJlYWQKCj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewo+IC0JCXJl dCA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCBvZmZzZXQsIGJ1ZmZlciwgc2l6ZSk7Cj4gLQkJaWYg KHJldCA9PSBzaXplKQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0JCW1zbGVlcCgxKTsKPiAtCX0KPiAt Cj4gLQlyZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC0vKgo+ICAgKiBGZXRjaCBBVVggQ0ggcmVnaXN0 ZXJzIDB4MjAyIC0gMHgyMDcgd2hpY2ggY29udGFpbgo+ICAgKiBsaW5rIHN0YXR1cyBpbmZvcm1h dGlvbgo+ICAgKi8KPiAgYm9vbAo+ICBpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwgdWludDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpF XSkKPiAgewo+IC0JcmV0dXJuIGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4 LAo+IC0JCQkJICAgICAgIERQX0xBTkUwXzFfU1RBVFVTLAo+IC0JCQkJICAgICAgIGxpbmtfc3Rh dHVzLAo+IC0JCQkJICAgICAgIERQX0xJTktfU1RBVFVTX1NJWkUpID09IERQX0xJTktfU1RBVFVT X1NJWkU7Cj4gKwlyZXR1cm4gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwKPiArCQkJ CURQX0xBTkUwXzFfU1RBVFVTLAo+ICsJCQkJbGlua19zdGF0dXMsCj4gKwkJCQlEUF9MSU5LX1NU QVRVU19TSVpFKSA9PSBEUF9MSU5LX1NUQVRVU19TSVpFOwo+ICB9Cj4gIAo+ICAvKiBUaGVzZSBh cmUgc291cmNlLXNwZWNpZmljIHZhbHVlcy4gKi8KPiBAQCAtMzgyNSw4ICszNzk1LDggQEAgaW50 ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAl1aW50OF90IHJl djsKPiAgCj4gLQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIDB4 MDAwLCBpbnRlbF9kcC0+ZHBjZCwKPiAtCQkJCSAgICBzaXplb2YoaW50ZWxfZHAtPmRwY2QpKSA8 IDApCj4gKwlpZiAoZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwgMHgwMDAsIGludGVs X2RwLT5kcGNkLAo+ICsJCQkgICAgIHNpemVvZihpbnRlbF9kcC0+ZHBjZCkpIDwgMCkKPiAgCQly ZXR1cm4gZmFsc2U7IC8qIGF1eCB0cmFuc2ZlciBmYWlsZWQgKi8KPiAgCj4gIAlEUk1fREVCVUdf S01TKCJEUENEOiAlKnBoXG4iLCAoaW50KSBzaXplb2YoaW50ZWxfZHAtPmRwY2QpLCBpbnRlbF9k cC0+ZHBjZCk7Cj4gQEAgLTM4MzcsOSArMzgwNyw5IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkvKiBDaGVjayBpZiB0aGUgcGFuZWwgc3VwcG9ydHMg UFNSICovCj4gIAltZW1zZXQoaW50ZWxfZHAtPnBzcl9kcGNkLCAwLCBzaXplb2YoaW50ZWxfZHAt PnBzcl9kcGNkKSk7Cj4gIAlpZiAoaXNfZWRwKGludGVsX2RwKSkgewo+IC0JCWludGVsX2RwX2Rw Y2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfU1VQUE9SVCwKPiAtCQkJCQlpbnRl bF9kcC0+cHNyX2RwY2QsCj4gLQkJCQkJc2l6ZW9mKGludGVsX2RwLT5wc3JfZHBjZCkpOwo+ICsJ CWRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsIERQX1BTUl9TVVBQT1JULAo+ICsJCQkJ IGludGVsX2RwLT5wc3JfZHBjZCwKPiArCQkJCSBzaXplb2YoaW50ZWxfZHAtPnBzcl9kcGNkKSk7 Cj4gIAkJaWYgKGludGVsX2RwLT5wc3JfZHBjZFswXSAmIERQX1BTUl9JU19TVVBQT1JURUQpIHsK PiAgCQkJZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQgPSB0cnVlOwo+ICAJCQlEUk1fREVCVUdf S01TKCJEZXRlY3RlZCBFRFAgUFNSIFBhbmVsLlxuIik7Cj4gQEAgLTM4NTAsOSArMzgyMCw5IEBA IGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJCXVpbnQ4 X3QgZnJhbWVfc3luY19jYXA7Cj4gIAo+ICAJCQlkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCA9 IHRydWU7Cj4gLQkJCWludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LAo+IC0J CQkJCURQX1NJTktfREVWSUNFX0FVWF9GUkFNRV9TWU5DX0NBUCwKPiAtCQkJCQkmZnJhbWVfc3lu Y19jYXAsIDEpOwo+ICsJCQlkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1eCwKPiArCQkJ CQkgIERQX1NJTktfREVWSUNFX0FVWF9GUkFNRV9TWU5DX0NBUCwKPiArCQkJCQkgICZmcmFtZV9z eW5jX2NhcCk7Cj4gIAkJCWRldl9wcml2LT5wc3IuYXV4X2ZyYW1lX3N5bmMgPSBmcmFtZV9zeW5j X2NhcCA/IHRydWUgOiBmYWxzZTsKPiAgCQkJLyogUFNSMiBuZWVkcyBmcmFtZSBzeW5jIGFzIHdl bGwgKi8KPiAgCQkJZGV2X3ByaXYtPnBzci5wc3IyX3N1cHBvcnQgPSBkZXZfcHJpdi0+cHNyLmF1 eF9mcmFtZV9zeW5jOwo+IEBAIC0zODY4LDE1ICszODM4LDE1IEBAIGludGVsX2RwX2dldF9kcGNk KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkvKiBJbnRlcm1lZGlhdGUgZnJlcXVlbmN5 IHN1cHBvcnQgKi8KPiAgCWlmIChpc19lZHAoaW50ZWxfZHApICYmCj4gIAkgICAgKGludGVsX2Rw LT5kcGNkW0RQX0VEUF9DT05GSUdVUkFUSU9OX0NBUF0gJglEUF9EUENEX0RJU1BMQVlfQ09OVFJP TF9DQVBBQkxFKSAmJgo+IC0JICAgIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAt PmF1eCwgRFBfRURQX0RQQ0RfUkVWLCAmcmV2LCAxKSA9PSAxKSAmJgo+ICsJICAgIChkcm1fZHBf ZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1eCwgRFBfRURQX0RQQ0RfUkVWLCAmcmV2KSA9PSAxKSAm Jgo+ICAJICAgIChyZXYgPj0gMHgwMykpIHsgLyogZURwIHYxLjQgb3IgaGlnaGVyICovCj4gIAkJ X19sZTE2IHNpbmtfcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU107Cj4gIAkJaW50IGk7Cj4g IAo+IC0JCWludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LAo+IC0JCQkJRFBf U1VQUE9SVEVEX0xJTktfUkFURVMsCj4gLQkJCQlzaW5rX3JhdGVzLAo+IC0JCQkJc2l6ZW9mKHNp bmtfcmF0ZXMpKTsKPiArCQlkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LAo+ICsJCQkJ IERQX1NVUFBPUlRFRF9MSU5LX1JBVEVTLAo+ICsJCQkJIHNpbmtfcmF0ZXMsCj4gKwkJCQkgc2l6 ZW9mKHNpbmtfcmF0ZXMpKTsKPiAgCj4gIAkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2lu a19yYXRlcyk7IGkrKykgewo+ICAJCQlpbnQgdmFsID0gbGUxNl90b19jcHUoc2lua19yYXRlc1tp XSk7Cj4gQEAgLTM4OTksOSArMzg2OSw5IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gIAlpZiAoaW50ZWxfZHAtPmRwY2RbRFBfRFBDRF9SRVZdID09IDB4 MTApCj4gIAkJcmV0dXJuIHRydWU7IC8qIG5vIHBlci1wb3J0IGRvd25zdHJlYW0gaW5mbyAqLwo+ ICAKPiAtCWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfRE9X TlNUUkVBTV9QT1JUXzAsCj4gLQkJCQkgICAgaW50ZWxfZHAtPmRvd25zdHJlYW1fcG9ydHMsCj4g LQkJCQkgICAgRFBfTUFYX0RPV05TVFJFQU1fUE9SVFMpIDwgMCkKPiArCWlmIChkcm1fZHBfZHBj ZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCBEUF9ET1dOU1RSRUFNX1BPUlRfMCwKPiArCQkJICAgICBp bnRlbF9kcC0+ZG93bnN0cmVhbV9wb3J0cywKPiArCQkJICAgICBEUF9NQVhfRE9XTlNUUkVBTV9Q T1JUUykgPCAwKQo+ICAJCXJldHVybiBmYWxzZTsgLyogZG93bnN0cmVhbSBwb3J0IHN0YXR1cyBm ZXRjaCBmYWlsZWQgKi8KPiAgCj4gIAlyZXR1cm4gdHJ1ZTsKPiBAQCAtMzkxNSwxMSArMzg4NSwx MSBAQCBpbnRlbF9kcF9wcm9iZV9vdWkoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCWlm ICghKGludGVsX2RwLT5kcGNkW0RQX0RPV05fU1RSRUFNX1BPUlRfQ09VTlRdICYgRFBfT1VJX1NV UFBPUlQpKQo+ICAJCXJldHVybjsKPiAgCj4gLQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2Uo JmludGVsX2RwLT5hdXgsIERQX1NJTktfT1VJLCBidWYsIDMpID09IDMpCj4gKwlpZiAoZHJtX2Rw X2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwgRFBfU0lOS19PVUksIGJ1ZiwgMykgPT0gMykKPiAg CQlEUk1fREVCVUdfS01TKCJTaW5rIE9VSTogJTAyaHglMDJoeCUwMmh4XG4iLAo+ICAJCQkgICAg ICBidWZbMF0sIGJ1ZlsxXSwgYnVmWzJdKTsKPiAgCj4gLQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFk X3dha2UoJmludGVsX2RwLT5hdXgsIERQX0JSQU5DSF9PVUksIGJ1ZiwgMykgPT0gMykKPiArCWlm IChkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCBEUF9CUkFOQ0hfT1VJLCBidWYsIDMp ID09IDMpCj4gIAkJRFJNX0RFQlVHX0tNUygiQnJhbmNoIE9VSTogJTAyaHglMDJoeCUwMmh4XG4i LAo+ICAJCQkgICAgICBidWZbMF0sIGJ1ZlsxXSwgYnVmWzJdKTsKPiAgfQo+IEBAIC0zOTM1LDcg KzM5MDUsNyBAQCBpbnRlbF9kcF9wcm9iZV9tc3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgCWlmIChpbnRlbF9kcC0+ZHBjZFtEUF9EUENEX1JFVl0gPCAweDEyKQo+ICAJCXJldHVybiBm YWxzZTsKPiAgCj4gLQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgs IERQX01TVE1fQ0FQLCBidWYsIDEpKSB7Cj4gKwlpZiAoZHJtX2RwX2RwY2RfcmVhZGIoJmludGVs X2RwLT5hdXgsIERQX01TVE1fQ0FQLCBidWYpKSB7Cj4gIAkJaWYgKGJ1ZlswXSAmIERQX01TVF9D QVApIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygiU2luayBpcyBNU1QgY2FwYWJsZVxuIik7Cj4gIAkJ CWludGVsX2RwLT5pc19tc3QgPSB0cnVlOwo+IEBAIC00MDcyLDkgKzQwNDIsOSBAQCBzdG9wOgo+ ICBzdGF0aWMgYm9vbAo+ICBpbnRlbF9kcF9nZXRfc2lua19pcnEoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgdTggKnNpbmtfaXJxX3ZlY3RvcikKPiAgewo+IC0JcmV0dXJuIGludGVsX2RwX2Rw Y2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LAo+IC0JCQkJICAgICAgIERQX0RFVklDRV9TRVJW SUNFX0lSUV9WRUNUT1IsCj4gLQkJCQkgICAgICAgc2lua19pcnFfdmVjdG9yLCAxKSA9PSAxOwo+ ICsJcmV0dXJuIGRybV9kcF9kcGNkX3JlYWRiKCZpbnRlbF9kcC0+YXV4LAo+ICsJCQkJIERQX0RF VklDRV9TRVJWSUNFX0lSUV9WRUNUT1IsCj4gKwkJCQkgc2lua19pcnFfdmVjdG9yKSA9PSAxOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbAo+IEBAIC00MDgyLDkgKzQwNTIsOSBAQCBpbnRlbF9kcF9n ZXRfc2lua19pcnFfZXNpKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU4ICpzaW5rX2lycV92 ZWN0b3IpCj4gIHsKPiAgCWludCByZXQ7Cj4gIAo+IC0JcmV0ID0gaW50ZWxfZHBfZHBjZF9yZWFk X3dha2UoJmludGVsX2RwLT5hdXgsCj4gLQkJCQkJICAgICBEUF9TSU5LX0NPVU5UX0VTSSwKPiAt CQkJCQkgICAgIHNpbmtfaXJxX3ZlY3RvciwgMTQpOwo+ICsJcmV0ID0gZHJtX2RwX2RwY2RfcmVh ZCgmaW50ZWxfZHAtPmF1eCwKPiArCQkJICAgICAgIERQX1NJTktfQ09VTlRfRVNJLAo+ICsJCQkg ICAgICAgc2lua19pcnFfdmVjdG9yLCAxNCk7Cj4gIAlpZiAocmV0ICE9IDE0KQo+ICAJCXJldHVy biBmYWxzZTsKPiAgCj4gQEAgLTQzNDMsOCArNDMxMyw3IEBAIGludGVsX2RwX2RldGVjdF9kcGNk KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkgICAgaW50ZWxfZHAtPmRvd25zdHJlYW1f cG9ydHNbMF0gJiBEUF9EU19QT1JUX0hQRCkgewo+ICAJCXVpbnQ4X3QgcmVnOwo+ICAKPiAtCQlp ZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIERQX1NJTktfQ09VTlQs Cj4gLQkJCQkJICAgICZyZWcsIDEpIDwgMCkKPiArCQlpZiAoZHJtX2RwX2RwY2RfcmVhZGIoJmlu dGVsX2RwLT5hdXgsIERQX1NJTktfQ09VTlQsICZyZWcpIDwgMCkKPiAgCQkJcmV0dXJuIGNvbm5l Y3Rvcl9zdGF0dXNfdW5rbm93bjsKPiAgCj4gIAkJcmV0dXJuIERQX0dFVF9TSU5LX0NPVU5UKHJl ZykgPyBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZAoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBP cGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=