From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak S Subject: Re: [PATCH] drm/i915: Bug fixes to ring 'head' updating Date: Tue, 18 Nov 2014 20:30:46 +0530 Message-ID: <546B5F1E.5000004@intel.com> References: <1415021344-24875-1-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 4B03A6E227 for ; Mon, 17 Nov 2014 07:04:42 -0800 (PST) In-Reply-To: <1415021344-24875-1-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIE1vbmRheSAwMyBOb3ZlbWJlciAyMDE0IDA2OjU5IFBNLCBEYXZlIEdvcmRvbiB3cm90ZToK PiBGaXhlcyB0byBib3RoIHRoZSBMUkMgYW5kIHRoZSBsZWdhY3kgcmluZ2J1ZmZlciBjb2RlIHRv IGNvcnJlY3RseQo+IGNhbGN1bGF0ZSBhbmQgdXBkYXRlIHRoZSBhdmFpbGFibGUgc3BhY2UgaW4g YSByaW5nLgo+Cj4gVGhlIGxvZ2ljYWwgcmluZyBjb2RlIHdhcyB1cGRhdGluZyB0aGUgc29mdHdh cmUgcmluZyAnaGVhZCcgdmFsdWUKPiBieSByZWFkaW5nIHRoZSBoYXJkd2FyZSAnSEVBRCcgcmVn aXN0ZXIuIEluIExSQyBtb2RlLCB0aGlzIGlzIG5vdAo+IHZhbGlkIGFzIHRoZSBoYXJkd2FyZSBp cyBub3QgbmVjZXNzYXJpbHkgZXhlY3V0aW5nIHRoZSBzYW1lIGNvbnRleHQKPiB0aGF0IGlzIGJl aW5nIHByb2Nlc3NlZCBieSB0aGUgc29mdHdhcmUuIFRodXMgcmVhZGluZyB0aGUgaC93IEhFQUQK PiBjb3VsZCBwdXQgYW4gdW5yZWxhdGVkICh1bmRlZmluZWQsIGVmZmVjdGl2ZWx5IHJhbmRvbSkg dmFsdWUgaW50bwo+IHRoZSBzL3cgJ2hlYWQnIC0tIEEgQmFkIFRoaW5nIGZvciB0aGUgZnJlZSBz cGFjZSBjYWxjdWxhdGlvbnMuCj4KPiBJbiBhZGRpdGlvbiwgdGhlIG9sZCBjb2RlIGNvdWxkIHVw ZGF0ZSBhIHJpbmdidWZmZXIncyAnaGVhZCcgdmFsdWUKPiBmcm9tIHRoZSAnbGFzdF9yZXRpcmVk X2hlYWQnIGV2ZW4gd2hlbiB0aGUgbGF0dGVyIGhhZG4ndCBiZWVuIHJlY2VudGx5Cj4gdXBkYXRl ZCBhbmQgdGhlcmVmb3JlIGhhZCBhIHZhbHVlIG9mIC0xOyB0aGlzIHdvdWxkIGFsc28gY29uZnVz ZSB0aGUKPiBmcmVlc3BhY2UgY2FsY3VsYXRpb25zLiBOb3csIHdlIGNvbnN1bWUgJ2xhc3RfcmV0 aXJlZF9oZWFkJyBpbiBqdXN0Cj4gb25lIHBsYWNlLCBlbnN1cmluZyB0aGF0IHRoaXMgY29uZnVz aW9uIGRvZXMgbm90IGFyaXNlLgo+Cj4gQ2hhbmdlLUlkOiBJZDdjZTkwOTZlZDEwMGEyODgyYzY4 YTU0MjA2ZjMwYjZjODdlOTJmYQo+IFNpZ25lZC1vZmYtYnk6IERhdmUgR29yZG9uIDxkYXZpZC5z LmdvcmRvbkBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rt YS5jICAgICAgICAgfCAgICA1ICsrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgICAgICAgIHwgICAzNiArKysrKysrKysrLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8ICAgNTMgKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgICAg MSArCj4gICA0IGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygt KQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gaW5kZXggOWE3MzUzMy4uMTY0NjQxNiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IEBAIC0xNTQsMTEgKzE1NCwxMCBAQCB2b2lkIGk5 MTVfa2VybmVsX2xvc3RfY29udGV4dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCWlmIChk cm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQpKQo+ICAgCQlyZXR1cm47 Cj4gICAKPiArCXJpbmdidWYtPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Cj4gICAJcmluZ2J1Zi0+ aGVhZCA9IEk5MTVfUkVBRF9IRUFEKHJpbmcpICYgSEVBRF9BRERSOwo+ICAgCXJpbmdidWYtPnRh aWwgPSBJOTE1X1JFQURfVEFJTChyaW5nKSAmIFRBSUxfQUREUjsKPiAtCXJpbmdidWYtPnNwYWNl ID0gcmluZ2J1Zi0+aGVhZCAtIChyaW5nYnVmLT50YWlsICsgSTkxNV9SSU5HX0ZSRUVfU1BBQ0Up Owo+IC0JaWYgKHJpbmdidWYtPnNwYWNlIDwgMCkKPiAtCQlyaW5nYnVmLT5zcGFjZSArPSByaW5n YnVmLT5zaXplOwo+ICsJaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZ2J1Zik7Cj4gICAKPiAg IAlpZiAoIWRldi0+cHJpbWFyeS0+bWFzdGVyKQo+ICAgCQlyZXR1cm47Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiBpbmRleCBjZDc0ZTVjLi4xMWE5MDQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiBAQCAtODI3LDE2ICs4MjcsMjAgQEAgc3RhdGljIGludCBsb2dpY2FsX3Jp bmdfd2FpdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+ICAgCXUz MiBzZXFubyA9IDA7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JaWYgKHJpbmdidWYtPmxhc3RfcmV0 aXJlZF9oZWFkICE9IC0xKSB7Cj4gLQkJcmluZ2J1Zi0+aGVhZCA9IHJpbmdidWYtPmxhc3RfcmV0 aXJlZF9oZWFkOwo+IC0JCXJpbmdidWYtPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Cj4gLQo+IC0J CXJpbmdidWYtPnNwYWNlID0gaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKTsKPiAtCQlpZiAocmlu Z2J1Zi0+c3BhY2UgPj0gYnl0ZXMpCj4gLQkJCXJldHVybiAwOwo+IC0JfQo+ICsJaWYgKGludGVs X3Jpbmdfc3BhY2UocmluZ2J1ZikgPj0gYnl0ZXMpCj4gKwkJcmV0dXJuIDA7Cj4gICAKPiAgIAls aXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZyaW5nLT5yZXF1ZXN0X2xpc3QsIGxpc3QpIHsK PiArCQkvKgo+ICsJCSAqIFRoZSByZXF1ZXN0IHF1ZXVlIGlzIHBlci1lbmdpbmUsIHNvIGNhbiBj b250YWluIHJlcXVlc3RzCj4gKwkJICogZnJvbSBtdWx0aXBsZSByaW5nYnVmZmVycy4gSGVyZSwg d2UgbXVzdCBpZ25vcmUgYW55IHRoYXQKPiArCQkgKiBhcmVuJ3QgZnJvbSB0aGUgcmluZ2J1ZmZl ciB3ZSdyZSBjb25zaWRlcmluZy4KPiArCQkgKi8KPiArCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4ID0gcmVxdWVzdC0+Y3R4Owo+ICsJCWlmIChjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucmluZ2J1 ZiAhPSByaW5nYnVmKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJLyogV291bGQgY29tcGxldGlv biBvZiB0aGlzIHJlcXVlc3QgZnJlZSBlbm91Z2ggc3BhY2U/ICovCj4gICAJCWlmIChfX2ludGVs X3Jpbmdfc3BhY2UocmVxdWVzdC0+dGFpbCwgcmluZ2J1Zi0+dGFpbCwKPiAgIAkJCQkgICAgICAg cmluZ2J1Zi0+c2l6ZSkgPj0gYnl0ZXMpIHsKPiAgIAkJCXNlcW5vID0gcmVxdWVzdC0+c2Vxbm87 Cj4gQEAgLTg1MiwxMSArODU2LDggQEAgc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd2FpdF9yZXF1 ZXN0KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAo+ICAgCQlyZXR1cm4gcmV0Owo+ ICAgCj4gICAJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3JpbmcocmluZyk7Cj4gLQlyaW5nYnVm LT5oZWFkID0gcmluZ2J1Zi0+bGFzdF9yZXRpcmVkX2hlYWQ7Cj4gLQlyaW5nYnVmLT5sYXN0X3Jl dGlyZWRfaGVhZCA9IC0xOwo+ICAgCj4gLQlyaW5nYnVmLT5zcGFjZSA9IGludGVsX3Jpbmdfc3Bh Y2UocmluZ2J1Zik7Cj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiBpbnRlbF9yaW5nX3NwYWNlKHJp bmdidWYpID49IGJ5dGVzID8gMCA6IC1FTk9TUEM7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQg bG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmLAo+IEBAIC04ODIsMTMgKzg4MywxMCBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193YWl0 X2Zvcl9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKPiAgIAkgKiBjYXNl IGJ5IGNob29zaW5nIGFuIGluc2FuZWx5IGxhcmdlIHRpbWVvdXQuICovCj4gICAJZW5kID0gamlm ZmllcyArIDYwICogSFo7Cj4gICAKPiArCXJldCA9IDA7Cj4gICAJZG8gewo+IC0JCXJpbmdidWYt PmhlYWQgPSBJOTE1X1JFQURfSEVBRChyaW5nKTsKPiAtCQlyaW5nYnVmLT5zcGFjZSA9IGludGVs X3Jpbmdfc3BhY2UocmluZ2J1Zik7Cj4gLQkJaWYgKHJpbmdidWYtPnNwYWNlID49IGJ5dGVzKSB7 Cj4gLQkJCXJldCA9IDA7Cj4gKwkJaWYgKGludGVsX3Jpbmdfc3BhY2UocmluZ2J1ZikgPj0gYnl0 ZXMpCj4gICAJCQlicmVhazsKPiAtCQl9Cj4gICAKPiAgIAkJbXNsZWVwKDEpOwo+ICAgCj4gQEAg LTkyOSw3ICs5MjcsNyBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193cmFwX2J1ZmZlcihzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPiAgIAkJaW93cml0ZTMyKE1JX05PT1AsIHZp cnQrKyk7Cj4gICAKPiAgIAlyaW5nYnVmLT50YWlsID0gMDsKPiAtCXJpbmdidWYtPnNwYWNlID0g aW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKTsKPiArCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJp bmdidWYpOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTE3MDgsOCArMTcwNiw4IEBA IGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY3R4LAo+ICAgCXJpbmdidWYtPmVmZmVjdGl2ZV9zaXplID0gcmluZ2J1Zi0+c2l6ZTsKPiAg IAlyaW5nYnVmLT5oZWFkID0gMDsKPiAgIAlyaW5nYnVmLT50YWlsID0gMDsKPiAtCXJpbmdidWYt PnNwYWNlID0gcmluZ2J1Zi0+c2l6ZTsKPiAgIAlyaW5nYnVmLT5sYXN0X3JldGlyZWRfaGVhZCA9 IC0xOwo+ICsJaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZ2J1Zik7Cj4gICAKPiAgIAkvKiBU T0RPOiBGb3Igbm93IHdlIHB1dCB0aGlzIGluIHRoZSBtYXBwYWJsZSByZWdpb24gc28gdGhhdCB3 ZSBjYW4gcmV1c2UKPiAgIAkgKiB0aGUgZXhpc3RpbmcgcmluZ2J1ZmZlciBjb2RlIHdoaWNoIGlv cmVtYXBzIGl0LiBXaGVuIHdlIHN0YXJ0Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYwo+IGluZGV4IGE4ZjcyZTguLjExNTA4NjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTUyLDE2ICs1MiwyNyBAQCBpbnRlbF9yaW5nX2lu aXRpYWxpemVkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICAKPiAgIGludCBfX2lu dGVsX3Jpbmdfc3BhY2UoaW50IGhlYWQsIGludCB0YWlsLCBpbnQgc2l6ZSkKPiAgIHsKPiAtCWlu dCBzcGFjZSA9IGhlYWQgLSAodGFpbCArIEk5MTVfUklOR19GUkVFX1NQQUNFKTsKPiAtCWlmIChz cGFjZSA8IDApCj4gKwlpbnQgc3BhY2UgPSBoZWFkIC0gdGFpbDsKPiArCWlmIChzcGFjZSA8PSAw KQo+ICAgCQlzcGFjZSArPSBzaXplOwo+IC0JcmV0dXJuIHNwYWNlOwo+ICsJcmV0dXJuIHNwYWNl IC0gSTkxNV9SSU5HX0ZSRUVfU1BBQ0U7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfcmluZ191cGRh dGVfc3BhY2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gK3sKPiArCWlmIChy aW5nYnVmLT5sYXN0X3JldGlyZWRfaGVhZCAhPSAtMSkgewo+ICsJCXJpbmdidWYtPmhlYWQgPSBy aW5nYnVmLT5sYXN0X3JldGlyZWRfaGVhZDsKPiArCQlyaW5nYnVmLT5sYXN0X3JldGlyZWRfaGVh ZCA9IC0xOwo+ICsJfQo+ICsKPiArCXJpbmdidWYtPnNwYWNlID0gX19pbnRlbF9yaW5nX3NwYWNl KHJpbmdidWYtPmhlYWQgJiBIRUFEX0FERFIsCj4gKwkJCQkJICAgIHJpbmdidWYtPnRhaWwsIHJp bmdidWYtPnNpemUpOwo+ICAgfQo+ICAgCj4gICBpbnQgaW50ZWxfcmluZ19zcGFjZShzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPiAgIHsKPiAtCXJldHVybiBfX2ludGVsX3Jpbmdf c3BhY2UocmluZ2J1Zi0+aGVhZCAmIEhFQURfQUREUiwKPiAtCQkJCSAgcmluZ2J1Zi0+dGFpbCwg cmluZ2J1Zi0+c2l6ZSk7Cj4gKwlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nYnVmKTsKPiAr CXJldHVybiByaW5nYnVmLT5zcGFjZTsKPiAgIH0KPiAgIAo+ICAgYm9vbCBpbnRlbF9yaW5nX3N0 b3BwZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiBAQCAtNzMsNyArODQsNyBAQCBi b29sIGludGVsX3Jpbmdfc3RvcHBlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAg dm9pZCBfX2ludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmluZy0+YnVmZmVy Owo+IC0JcmluZ2J1Zi0+dGFpbCAmPSByaW5nYnVmLT5zaXplIC0gMTsKPiArCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKClNob3VsZCB0aGlzIGJlIGluIGFub3RoZXIgcGF0Y2g/CgpPdGhlciB0 aGFuIHRoaXMgb3RoZXIgY2hhbmdlcyBsb29rcyBmaW5lIHRvIG1lLlwKQWxzbywgYXJlIHlvdSBw bGFubmluZyB0byBhZGQgV0FSTl9PTiBpZiB0aGVyZSBpcyBhIG1pc21hdGNoIHdpdGggcmluZ19i ZWdpbiAmIGFkZF9yZXF1ZXN0PwoKPiAgIAlpZiAoaW50ZWxfcmluZ19zdG9wcGVkKHJpbmcpKQo+ ICAgCQlyZXR1cm47Cj4gICAJcmluZy0+d3JpdGVfdGFpbChyaW5nLCByaW5nYnVmLT50YWlsKTsK PiBAQCAtNTkyLDEwICs2MDMsMTAgQEAgc3RhdGljIGludCBpbml0X3JpbmdfY29tbW9uKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICAJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJl KHJpbmctPmRldiwgRFJJVkVSX01PREVTRVQpKQo+ICAgCQlpOTE1X2tlcm5lbF9sb3N0X2NvbnRl eHQocmluZy0+ZGV2KTsKPiAgIAllbHNlIHsKPiArCQlyaW5nYnVmLT5sYXN0X3JldGlyZWRfaGVh ZCA9IC0xOwo+ICAgCQlyaW5nYnVmLT5oZWFkID0gSTkxNV9SRUFEX0hFQUQocmluZyk7Cj4gICAJ CXJpbmdidWYtPnRhaWwgPSBJOTE1X1JFQURfVEFJTChyaW5nKSAmIFRBSUxfQUREUjsKPiAtCQly aW5nYnVmLT5zcGFjZSA9IGludGVsX3Jpbmdfc3BhY2UocmluZ2J1Zik7Cj4gLQkJcmluZ2J1Zi0+ bGFzdF9yZXRpcmVkX2hlYWQgPSAtMTsKPiArCQlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5n YnVmKTsKPiAgIAl9Cj4gICAKPiAgIAltZW1zZXQoJnJpbmctPmhhbmdjaGVjaywgMCwgc2l6ZW9m KHJpbmctPmhhbmdjaGVjaykpOwo+IEBAIC0xODc2LDE0ICsxODg3LDggQEAgc3RhdGljIGludCBp bnRlbF9yaW5nX3dhaXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBpbnQg bikKPiAgIAl1MzIgc2Vxbm8gPSAwOwo+ICAgCWludCByZXQ7Cj4gICAKPiAtCWlmIChyaW5nYnVm LT5sYXN0X3JldGlyZWRfaGVhZCAhPSAtMSkgewo+IC0JCXJpbmdidWYtPmhlYWQgPSByaW5nYnVm LT5sYXN0X3JldGlyZWRfaGVhZDsKPiAtCQlyaW5nYnVmLT5sYXN0X3JldGlyZWRfaGVhZCA9IC0x Owo+IC0KPiAtCQlyaW5nYnVmLT5zcGFjZSA9IGludGVsX3Jpbmdfc3BhY2UocmluZ2J1Zik7Cj4g LQkJaWYgKHJpbmdidWYtPnNwYWNlID49IG4pCj4gLQkJCXJldHVybiAwOwo+IC0JfQo+ICsJaWYg KGludGVsX3Jpbmdfc3BhY2UocmluZ2J1ZikgPj0gbikKPiArCQlyZXR1cm4gMDsKPiAgIAo+ICAg CWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJnJpbmctPnJlcXVlc3RfbGlzdCwgbGlzdCkg ewo+ICAgCQlpZiAoX19pbnRlbF9yaW5nX3NwYWNlKHJlcXVlc3QtPnRhaWwsIHJpbmdidWYtPnRh aWwsCj4gQEAgLTE5MDEsMTAgKzE5MDYsNyBAQCBzdGF0aWMgaW50IGludGVsX3Jpbmdfd2FpdF9y ZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBuKQo+ICAgCQlyZXR1cm4g cmV0Owo+ICAgCj4gICAJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3JpbmcocmluZyk7Cj4gLQly aW5nYnVmLT5oZWFkID0gcmluZ2J1Zi0+bGFzdF9yZXRpcmVkX2hlYWQ7Cj4gLQlyaW5nYnVmLT5s YXN0X3JldGlyZWRfaGVhZCA9IC0xOwo+ICAgCj4gLQlyaW5nYnVmLT5zcGFjZSA9IGludGVsX3Jp bmdfc3BhY2UocmluZ2J1Zik7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiBAQCAtMTkzMCwx NCArMTkzMiwxNCBAQCBzdGF0aWMgaW50IHJpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywgaW50IG4pCj4gICAJICogY2FzZSBieSBjaG9vc2luZyBhbiBpbnNh bmVseSBsYXJnZSB0aW1lb3V0LiAqLwo+ICAgCWVuZCA9IGppZmZpZXMgKyA2MCAqIEhaOwo+ICAg Cj4gKwlyZXQgPSAwOwo+ICAgCXRyYWNlX2k5MTVfcmluZ193YWl0X2JlZ2luKHJpbmcpOwo+ICAg CWRvIHsKPiArCQlpZiAoaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKSA+PSBuKQo+ICsJCQlicmVh azsKPiAgIAkJcmluZ2J1Zi0+aGVhZCA9IEk5MTVfUkVBRF9IRUFEKHJpbmcpOwo+IC0JCXJpbmdi dWYtPnNwYWNlID0gaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKTsKPiAtCQlpZiAocmluZ2J1Zi0+ c3BhY2UgPj0gbikgewo+IC0JCQlyZXQgPSAwOwo+ICsJCWlmIChpbnRlbF9yaW5nX3NwYWNlKHJp bmdidWYpID49IG4pCj4gICAJCQlicmVhazsKPiAtCQl9Cj4gICAKPiAgIAkJaWYgKCFkcm1fY29y ZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQpICYmCj4gICAJCSAgICBkZXYtPnBy aW1hcnktPm1hc3Rlcikgewo+IEBAIC0xOTg1LDcgKzE5ODcsNyBAQCBzdGF0aWMgaW50IGludGVs X3dyYXBfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIAkJaW93 cml0ZTMyKE1JX05PT1AsIHZpcnQrKyk7Cj4gICAKPiAgIAlyaW5nYnVmLT50YWlsID0gMDsKPiAt CXJpbmdidWYtPnNwYWNlID0gaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKTsKPiArCWludGVsX3Jp bmdfdXBkYXRlX3NwYWNlKHJpbmdidWYpOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAg LTIwNTcsNiArMjA1OSw3IEBAIGludCBpbnRlbF9yaW5nX2JlZ2luKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCj4gICAJCSAgICAgaW50IG51bV9kd29yZHMpCj4gICB7Cj4gICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmluZy0+YnVmZmVyOwo+ICAgCWlu dCByZXQ7Cj4gICAKPiAgIAlyZXQgPSBpOTE1X2dlbV9jaGVja193ZWRnZSgmZGV2X3ByaXYtPmdw dV9lcnJvciwKPiBAQCAtMjA3Myw3ICsyMDc2LDcgQEAgaW50IGludGVsX3JpbmdfYmVnaW4oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0 Owo+ICAgCj4gLQlyaW5nLT5idWZmZXItPnNwYWNlIC09IG51bV9kd29yZHMgKiBzaXplb2YodWlu dDMyX3QpOwo+ICsJcmluZ2J1Zi0+c3BhY2UgLT0gbnVtX2R3b3JkcyAqIHNpemVvZih1aW50MzJf dCk7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oCj4gaW5kZXggOTY0NzljOC4uMmExZTQ4NCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtNDAzLDYgKzQwMyw3IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBpbnRlbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKPiAgIAlyaW5nYnVmLT50YWlsICY9IHJpbmdidWYtPnNpemUgLSAxOwo+ICAgfQo+ICAgaW50 IF9faW50ZWxfcmluZ19zcGFjZShpbnQgaGVhZCwgaW50IHRhaWwsIGludCBzaXplKTsKPiArdm9p ZCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1 Zik7Cj4gICBpbnQgaW50ZWxfcmluZ19zcGFjZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu Z2J1Zik7Cj4gICBib29sIGludGVsX3Jpbmdfc3RvcHBlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKTsKPiAgIHZvaWQgX19pbnRlbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZyk7CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=