From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH v6 12/25] drm/i915: Unify intel_ring_begin() Date: Wed, 27 Apr 2016 12:21:52 +0300 Message-ID: <1461748912.3986.19.camel@linux.intel.com> References: <1461701180-895-1-git-send-email-chris@chris-wilson.co.uk> <1461701180-895-13-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 D19D36E0C6 for ; Wed, 27 Apr 2016 09:20:29 +0000 (UTC) In-Reply-To: <1461701180-895-13-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gdGksIDIwMTYtMDQtMjYgYXQgMjE6MDYgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBD b21iaW5lIHRoZSBuZWFyIGlkZW50aWNhbCBpbXBsZW1lbnRhdGlvbnMgb2YgaW50ZWxfbG9naWNh bF9yaW5nX2JlZ2luKCkKPiBhbmQgaW50ZWxfcmluZ19iZWdpbigpIC0gdGhlIG9ubHkgZGlmZmVy ZW5jZSBpcyB0aGF0IHRoZSBsb2dpY2FsIHdhaXQKPiBoYXMgdG8gY2hlY2sgZm9yIGEgbWF0Y2hp bmcgcmluZyAod2hpY2ggaXMgYXNzdW1lZCBieSBsZWdhY3kpLgo+IAo+IFNpZ25lZC1vZmYtYnk6 IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBKb29uYXMgTGFo dGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBVcnN1 bGluIDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gwqBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuY8KgwqDCoMKgwqDCoMKgwqB8IDE0NiArKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaMKgwqDCoMKg wqDCoMKgwqB8wqDCoMKgMSAtCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmPC oMKgwqDCoMKgwqDCoHzCoMKgMTIgKy0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMgfCAxODIgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8wqDCoMKgMyAtCj4gwqA1IGZp bGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDI2MyBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDJiN2U2YmJjMDE3Yi4uYmE4N2M5NDkyOGU3IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtNzIxLDQ4ICs3MjEsNiBAQCBpbnQg aW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdAo+IMKgCXJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBsb2dpY2FsX3Jpbmdfd2FpdF9mb3Jfc3BhY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCj4gLQkJCQnCoMKgwqDCoMKgwqDCoGludCBieXRlcykKPiAtewo+IC0Jc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7Cj4gLQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqdGFyZ2V0Owo+IC0JdW5zaWduZWQgc3BhY2U7Cj4gLQlpbnQgcmV0Owo+IC0K PiAtCWlmIChpbnRlbF9yaW5nX3NwYWNlKHJpbmdidWYpID49IGJ5dGVzKQo+IC0JCXJldHVybiAw Owo+IC0KPiAtCS8qIFRoZSB3aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8gbm90 IHdhaXQhICovCj4gLQlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gLQo+IC0J bGlzdF9mb3JfZWFjaF9lbnRyeSh0YXJnZXQsICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwgbGlzdCkg ewo+IC0JCS8qCj4gLQkJwqAqIFRoZSByZXF1ZXN0IHF1ZXVlIGlzIHBlci1lbmdpbmUsIHNvIGNh biBjb250YWluIHJlcXVlc3RzCj4gLQkJwqAqIGZyb20gbXVsdGlwbGUgcmluZ2J1ZmZlcnMuIEhl cmUsIHdlIG11c3QgaWdub3JlIGFueSB0aGF0Cj4gLQkJwqAqIGFyZW4ndCBmcm9tIHRoZSByaW5n YnVmZmVyIHdlJ3JlIGNvbnNpZGVyaW5nLgo+IC0JCcKgKi8KPiAtCQlpZiAodGFyZ2V0LT5yaW5n YnVmICE9IHJpbmdidWYpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQkvKiBXb3VsZCBjb21wbGV0 aW9uIG9mIHRoaXMgcmVxdWVzdCBmcmVlIGVub3VnaCBzcGFjZT8gKi8KPiAtCQlzcGFjZSA9IF9f aW50ZWxfcmluZ19zcGFjZSh0YXJnZXQtPnBvc3RmaXgsIHJpbmdidWYtPnRhaWwsCj4gLQkJCQkJ wqDCoMKgcmluZ2J1Zi0+c2l6ZSk7Cj4gLQkJaWYgKHNwYWNlID49IGJ5dGVzKQo+IC0JCQlicmVh azsKPiAtCX0KPiAtCj4gLQlpZiAoV0FSTl9PTigmdGFyZ2V0LT5saXN0ID09ICZlbmdpbmUtPnJl cXVlc3RfbGlzdCkpCj4gLQkJcmV0dXJuIC1FTk9TUEM7Cj4gLQo+IC0JcmV0ID0gaTkxNV93YWl0 X3JlcXVlc3QodGFyZ2V0KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQly aW5nYnVmLT5zcGFjZSA9IHNwYWNlOwo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gwqAvKgo+IMKg ICogaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2VfYW5kX3N1Ym1pdCgpIC0gYWR2YW5jZSB0aGUg dGFpbCBhbmQgc3VibWl0IHRoZSB3b3JrbG9hZAo+IMKgICogQHJlcXVlc3Q6IFJlcXVlc3QgdG8g YWR2YW5jZSB0aGUgbG9naWNhbCByaW5nYnVmZmVyIG9mLgo+IEBAIC04MTQsOTIgKzc3Miw2IEBA IGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXF1ZXN0KQo+IMKgCXJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2 b2lkIF9fd3JhcF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikK PiAtewo+IC0JdWludDMyX3QgX19pb21lbSAqdmlydDsKPiAtCWludCByZW0gPSByaW5nYnVmLT5z aXplIC0gcmluZ2J1Zi0+dGFpbDsKPiAtCj4gLQl2aXJ0ID0gcmluZ2J1Zi0+dmlydHVhbF9zdGFy dCArIHJpbmdidWYtPnRhaWw7Cj4gLQlyZW0gLz0gNDsKPiAtCXdoaWxlIChyZW0tLSkKPiAtCQlp b3dyaXRlMzIoTUlfTk9PUCwgdmlydCsrKTsKPiAtCj4gLQlyaW5nYnVmLT50YWlsID0gMDsKPiAt CWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmdidWYpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50 IGxvZ2ljYWxfcmluZ19wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBp bnQgYnl0ZXMpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVx LT5yaW5nYnVmOwo+IC0JaW50IHJlbWFpbl91c2FibGUgPSByaW5nYnVmLT5lZmZlY3RpdmVfc2l6 ZSAtIHJpbmdidWYtPnRhaWw7Cj4gLQlpbnQgcmVtYWluX2FjdHVhbCA9IHJpbmdidWYtPnNpemUg LSByaW5nYnVmLT50YWlsOwo+IC0JaW50IHJldCwgdG90YWxfYnl0ZXMsIHdhaXRfYnl0ZXMgPSAw Owo+IC0JYm9vbCBuZWVkX3dyYXAgPSBmYWxzZTsKPiAtCj4gLQlpZiAocmluZ2J1Zi0+cmVzZXJ2 ZWRfaW5fdXNlKQo+IC0JCXRvdGFsX2J5dGVzID0gYnl0ZXM7Cj4gLQllbHNlCj4gLQkJdG90YWxf Ynl0ZXMgPSBieXRlcyArIHJpbmdidWYtPnJlc2VydmVkX3NpemU7Cj4gLQo+IC0JaWYgKHVubGlr ZWx5KGJ5dGVzID4gcmVtYWluX3VzYWJsZSkpIHsKPiAtCQkvKgo+IC0JCcKgKiBOb3QgZW5vdWdo IHNwYWNlIGZvciB0aGUgYmFzaWMgcmVxdWVzdC4gU28gbmVlZCB0byBmbHVzaAo+IC0JCcKgKiBv dXQgdGhlIHJlbWFpbmRlciBhbmQgdGhlbiB3YWl0IGZvciBiYXNlICsgcmVzZXJ2ZWQuCj4gLQkJ wqAqLwo+IC0JCXdhaXRfYnl0ZXMgPSByZW1haW5fYWN0dWFsICsgdG90YWxfYnl0ZXM7Cj4gLQkJ bmVlZF93cmFwID0gdHJ1ZTsKPiAtCX0gZWxzZSB7Cj4gLQkJaWYgKHVubGlrZWx5KHRvdGFsX2J5 dGVzID4gcmVtYWluX3VzYWJsZSkpIHsKPiAtCQkJLyoKPiAtCQkJwqAqIFRoZSBiYXNlIHJlcXVl c3Qgd2lsbCBmaXQgYnV0IHRoZSByZXNlcnZlZCBzcGFjZQo+IC0JCQnCoCogZmFsbHMgb2ZmIHRo ZSBlbmQuIFNvIGRvbid0IG5lZWQgYW4gaW1tZWRpYXRlIHdyYXAKPiAtCQkJwqAqIGFuZCBvbmx5 IG5lZWQgdG8gZWZmZWN0aXZlbHkgd2FpdCBmb3IgdGhlIHJlc2VydmVkCj4gLQkJCcKgKiBzaXpl IHNwYWNlIGZyb20gdGhlIHN0YXJ0IG9mIHJpbmdidWZmZXIuCj4gLQkJCcKgKi8KPiAtCQkJd2Fp dF9ieXRlcyA9IHJlbWFpbl9hY3R1YWwgKyByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+IC0JCX0g ZWxzZSBpZiAodG90YWxfYnl0ZXMgPiByaW5nYnVmLT5zcGFjZSkgewo+IC0JCQkvKiBObyB3cmFw cGluZyByZXF1aXJlZCwganVzdCB3YWl0aW5nLiAqLwo+IC0JCQl3YWl0X2J5dGVzID0gdG90YWxf Ynl0ZXM7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCWlmICh3YWl0X2J5dGVzKSB7Cj4gLQkJcmV0ID0g bG9naWNhbF9yaW5nX3dhaXRfZm9yX3NwYWNlKHJlcSwgd2FpdF9ieXRlcyk7Cj4gLQkJaWYgKHVu bGlrZWx5KHJldCkpCj4gLQkJCXJldHVybiByZXQ7Cj4gLQo+IC0JCWlmIChuZWVkX3dyYXApCj4g LQkJCV9fd3JhcF9yaW5nX2J1ZmZlcihyaW5nYnVmKTsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsK PiAtfQo+IC0KPiAtLyoqCj4gLSAqIGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbigpIC0gcHJlcGFy ZSB0aGUgbG9naWNhbCByaW5nYnVmZmVyIHRvIGFjY2VwdCBzb21lIGNvbW1hbmRzCj4gLSAqCj4g LSAqIEByZXE6IFRoZSByZXF1ZXN0IHRvIHN0YXJ0IHNvbWUgbmV3IHdvcmsgZm9yCj4gLSAqIEBu dW1fZHdvcmRzOiBudW1iZXIgb2YgRFdPUkRzIHRoYXQgd2UgcGxhbiB0byB3cml0ZSB0byB0aGUg cmluZ2J1ZmZlci4KPiAtICoKPiAtICogVGhlIHJpbmdidWZmZXIgbWlnaHQgbm90IGJlIHJlYWR5 IHRvIGFjY2VwdCB0aGUgY29tbWFuZHMgcmlnaHQgYXdheSAobWF5YmUgaXQgbmVlZHMgdG8KPiAt ICogYmUgd3JhcHBlZCwgb3Igd2FpdCBhIGJpdCBmb3IgdGhlIHRhaWwgdG8gYmUgdXBkYXRlZCku IFRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiB0aGF0Cj4gLSAqIGFuZCBhbHNvIHByZWFsbG9j YXRlcyBhIHJlcXVlc3QgKGV2ZXJ5IHdvcmtsb2FkIHN1Ym1pc3Npb24gaXMgc3RpbGwgbWVkaWF0 ZWQgdGhyb3VnaAo+IC0gKiByZXF1ZXN0cywgc2FtZSBhcyBpdCBkaWQgd2l0aCBsZWdhY3kgcmlu Z2J1ZmZlciBzdWJtaXNzaW9uKS4KPiAtICoKPiAtICogUmV0dXJuOiBub24temVybyBpZiB0aGUg cmluZ2J1ZmZlciBpcyBub3QgcmVhZHkgdG8gYmUgd3JpdHRlbiB0by4KPiAtICovCj4gLWludCBp bnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs IGludCBudW1fZHdvcmRzKQo+IC17Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXJldCA9IGxvZ2ljYWxf cmluZ19wcmVwYXJlKHJlcSwgbnVtX2R3b3JkcyAqIHNpemVvZih1aW50MzJfdCkpOwo+IC0JaWYg KHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCXJlcS0+cmluZ2J1Zi0+c3BhY2UgLT0gbnVt X2R3b3JkcyAqIHNpemVvZih1aW50MzJfdCk7Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiDCoGlu dCBpbnRlbF9sb2dpY2FsX3JpbmdfcmVzZXJ2ZV9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcXVlc3QpCj4gwqB7Cj4gwqAJLyoKPiBAQCAtOTEyLDcgKzc4NCw3IEBAIGludCBp bnRlbF9sb2dpY2FsX3JpbmdfcmVzZXJ2ZV9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QpCj4gwqAJwqAqLwo+IMKgCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfcmVz ZXJ2ZShyZXF1ZXN0LT5yaW5nYnVmLCBNSU5fU1BBQ0VfRk9SX0FERF9SRVFVRVNUKTsKPiDCoAo+ IC0JcmV0dXJuIGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihyZXF1ZXN0LCAwKTsKPiArCXJldHVy biBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIDApOwo+IMKgfQo+IMKgCj4gwqAvKioKPiBAQCAt OTgyLDcgKzg1NCw3IEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihzdHJ1Y3QgaTkx NV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+IMKgCj4gwqAJaWYgKGVuZ2luZSA9PSAmZGV2 X3ByaXYtPmVuZ2luZVtSQ1NdICYmCj4gwqAJwqDCoMKgwqBpbnN0cF9tb2RlICE9IGRldl9wcml2 LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSkgewo+IC0JCXJldCA9IGludGVsX2xvZ2ljYWxfcmlu Z19iZWdpbihwYXJhbXMtPnJlcXVlc3QsIDQpOwo+ICsJCXJldCA9IGludGVsX3JpbmdfYmVnaW4o cGFyYW1zLT5yZXF1ZXN0LCA0KTsKPiDCoAkJaWYgKHJldCkKPiDCoAkJCXJldHVybiByZXQ7Cj4g wqAKPiBAQCAtMTE3OCw3ICsxMDUwLDcgQEAgc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3Jpbmdf d29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiDCoAlp ZiAocmV0KQo+IMKgCQlyZXR1cm4gcmV0Owo+IMKgCj4gLQlyZXQgPSBpbnRlbF9sb2dpY2FsX3Jp bmdfYmVnaW4ocmVxLCB3LT5jb3VudCAqIDIgKyAyKTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCB3LT5jb3VudCAqIDIgKyAyKTsKPiDCoAlpZiAocmV0KQo+IMKgCQlyZXR1cm4gcmV0 Owo+IMKgCj4gQEAgLTE2NjksNyArMTU0MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9y aW5nX2VtaXRfcGRwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiDCoAljb25z dCBpbnQgbnVtX2xyaV9jbWRzID0gR0VOOF9MRUdBQ1lfUERQRVMgKiAyOwo+IMKgCWludCBpLCBy ZXQ7Cj4gwqAKPiAtCXJldCA9IGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihyZXEsIG51bV9scmlf Y21kcyAqIDIgKyAyKTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCBudW1fbHJpX2Nt ZHMgKiAyICsgMik7Cj4gwqAJaWYgKHJldCkKPiDCoAkJcmV0dXJuIHJldDsKPiDCoAo+IEBAIC0x NzE2LDcgKzE1ODgsNyBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiDCoAkJcmVxLT5jdHgtPnBwZ3R0LT5wZF9kaXJ0eV9y aW5ncyAmPSB+aW50ZWxfZW5naW5lX2ZsYWcocmVxLT5lbmdpbmUpOwo+IMKgCX0KPiDCoAo+IC0J cmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHJlcSwgNCk7Cj4gKwlyZXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgNCk7Cj4gwqAJaWYgKHJldCkKPiDCoAkJcmV0dXJuIHJldDsKPiDCoAo+ IEBAIC0xNzc4LDcgKzE2NTAsNyBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCj4gwqAJdWludDMyX3QgY21kOwo+IMKgCWlu dCByZXQ7Cj4gwqAKPiAtCXJldCA9IGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihyZXF1ZXN0LCA0 KTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgNCk7Cj4gwqAJaWYgKHJldCkK PiDCoAkJcmV0dXJuIHJldDsKPiDCoAo+IEBAIC0xODQ2LDcgKzE3MTgsNyBAQCBzdGF0aWMgaW50 IGdlbjhfZW1pdF9mbHVzaF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0LAo+IMKgCQkJdmZfZmx1c2hfd2EgPSB0cnVlOwo+IMKgCX0KPiDCoAo+IC0JcmV0ID0gaW50 ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHJlcXVlc3QsIHZmX2ZsdXNoX3dhID8gMTIgOiA2KTsKPiAr CXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgdmZfZmx1c2hfd2EgPyAxMiA6IDYpOwo+ IMKgCWlmIChyZXQpCj4gwqAJCXJldHVybiByZXQ7Cj4gwqAKPiBAQCAtMTkyMCw3ICsxNzkyLDcg QEAgc3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QpCj4gwqAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXF1 ZXN0LT5yaW5nYnVmOwo+IMKgCWludCByZXQ7Cj4gwqAKPiAtCXJldCA9IGludGVsX2xvZ2ljYWxf cmluZ19iZWdpbihyZXF1ZXN0LCA2ICsgV0FfVEFJTF9EV09SRFMpOwo+ICsJcmV0ID0gaW50ZWxf cmluZ19iZWdpbihyZXF1ZXN0LCA2ICsgV0FfVEFJTF9EV09SRFMpOwo+IMKgCWlmIChyZXQpCj4g wqAJCXJldHVybiByZXQ7Cj4gwqAKPiBAQCAtMTk0NCw3ICsxODE2LDcgQEAgc3RhdGljIGludCBn ZW44X2VtaXRfcmVxdWVzdF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQo+IMKgCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxdWVzdC0+cmlu Z2J1ZjsKPiDCoAlpbnQgcmV0Owo+IMKgCj4gLQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfYmVn aW4ocmVxdWVzdCwgOCArIFdBX1RBSUxfRFdPUkRTKTsKPiArCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmVxdWVzdCwgOCArIFdBX1RBSUxfRFdPUkRTKTsKPiDCoAlpZiAocmV0KQo+IMKgCQlyZXR1 cm4gcmV0Owo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPiBpbmRleCA0NjFmMWVmOWI1 YzEuLjYwYTczODViYzUzMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4gQEAgLTYz LDcgKzYzLDYgQEAgaW50IGludGVsX2xvZ2ljYWxfcmluZ19yZXNlcnZlX3NwYWNlKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCk7Cj4gwqB2b2lkIGludGVsX2xvZ2ljYWxfcmlu Z19zdG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gwqB2b2lkIGludGVsX2xv Z2ljYWxfcmluZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gwqBp bnQgaW50ZWxfbG9naWNhbF9yaW5nc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC1p bnQgaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLCBpbnQgbnVtX2R3b3Jkcyk7Cj4gwqAKPiDCoGludCBsb2dpY2FsX3JpbmdfZmx1c2hfYWxs X2NhY2hlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gwqAvKioKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gaW5kZXggMjNiODU0NWFkNmIwLi42YmE0YmY3ZjJhODkg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gQEAgLTIzOSwxMSArMjM5LDkgQEAg c3RhdGljIGludCBlbWl0X21vY3NfY29udHJvbF90YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKPiDCoAlpZiAoV0FSTl9PTih0YWJsZS0+c2l6ZSA+IEdFTjlfTlVNX01PQ1Nf RU5UUklFUykpCj4gwqAJCXJldHVybiAtRU5PREVWOwo+IMKgCj4gLQlyZXQgPSBpbnRlbF9sb2dp Y2FsX3JpbmdfYmVnaW4ocmVxLCAyICsgMiAqIEdFTjlfTlVNX01PQ1NfRU5UUklFUyk7Cj4gLQlp ZiAocmV0KSB7Cj4gLQkJRFJNX0RFQlVHKCJpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4gZmFpbGVk ICVkXG4iLCByZXQpOwoKVGhlc2UgZGVidWdzIGRpc2FwcGVhciBpbiBzaWxlbmNlLiBDb3VsZCBi ZSB3b3J0aHkgYSBub3RlIGluIHRoZSBjb21taXQKbWVzc2FnZS4KCj4gKwlyZXQgPSBpbnRlbF9y aW5nX2JlZ2luKHJlcSwgMiArIDIgKiBHRU45X05VTV9NT0NTX0VOVFJJRVMpOwo+ICsJaWYgKHJl dCkKPiDCoAkJcmV0dXJuIHJldDsKPiAtCX0KPiDCoAo+IMKgCWludGVsX2xvZ2ljYWxfcmluZ19l bWl0KHJpbmdidWYsCj4gwqAJCQkJTUlfTE9BRF9SRUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19F TlRSSUVTKSk7Cj4gQEAgLTMwNSwxMSArMzAzLDkgQEAgc3RhdGljIGludCBlbWl0X21vY3NfbDNj Y190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiDCoAlpZiAoV0FSTl9P Tih0YWJsZS0+c2l6ZSA+IEdFTjlfTlVNX01PQ1NfRU5UUklFUykpCj4gwqAJCXJldHVybiAtRU5P REVWOwo+IMKgCj4gLQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4ocmVxLCAyICsgR0VO OV9OVU1fTU9DU19FTlRSSUVTKTsKPiAtCWlmIChyZXQpIHsKPiAtCQlEUk1fREVCVUcoImludGVs X2xvZ2ljYWxfcmluZ19iZWdpbiBmYWlsZWQgJWRcbiIsIHJldCk7CgpUaGlzIHRvby4KCj4gKwly ZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMiArIEdFTjlfTlVNX01PQ1NfRU5UUklFUyk7Cj4g KwlpZiAocmV0KQo+IMKgCQlyZXR1cm4gcmV0Owo+IC0JfQo+IMKgCj4gwqAJaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwKPiDCoAkJCU1JX0xPQURfUkVHSVNURVJfSU1NKEdFTjlfTlVN X01PQ1NfRU5UUklFUyAvIDIpKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4gaW5kZXggNjFjMTIwYWVkMTFlLi4xZDNkMmVhM2U5YmMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTUzLDEyICs1Myw2IEBAIHZvaWQgaW50 ZWxfcmluZ191cGRhdGVfc3BhY2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4g wqAJCQkJCcKgwqDCoMKgcmluZ2J1Zi0+dGFpbCwgcmluZ2J1Zi0+c2l6ZSk7Cj4gwqB9Cj4gwqAK PiAtaW50IGludGVsX3Jpbmdfc3BhY2Uoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYp Cj4gLXsKPiAtCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmdidWYpOwo+IC0JcmV0dXJuIHJp bmdidWYtPnNwYWNlOwo+IC19Cj4gLQo+IMKgYm9vbCBpbnRlbF9lbmdpbmVfc3RvcHBlZChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOwo+IEBAIC0yMzE4LDUx ICsyMzEyLDYgQEAgdm9pZCBpbnRlbF9jbGVhbnVwX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gwqAJZW5naW5lLT5kZXYgPSBOVUxMOwo+IMKgfQo+IMKgCj4gLXN0YXRp YyBpbnQgcmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs IGludCBuKQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IGVuZ2lu ZS0+YnVmZmVyOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+IC0J dW5zaWduZWQgc3BhY2U7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmIChpbnRlbF9yaW5nX3NwYWNl KHJpbmdidWYpID49IG4pCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0JLyogVGhlIHdob2xlIHBvaW50 IG9mIHJlc2VydmluZyBzcGFjZSBpcyB0byBub3Qgd2FpdCEgKi8KPiAtCVdBUk5fT04ocmluZ2J1 Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPiAtCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3Qs ICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwgbGlzdCkgewo+IC0JCXNwYWNlID0gX19pbnRlbF9yaW5n X3NwYWNlKHJlcXVlc3QtPnBvc3RmaXgsIHJpbmdidWYtPnRhaWwsCj4gLQkJCQkJwqDCoMKgcmlu Z2J1Zi0+c2l6ZSk7Cj4gLQkJaWYgKHNwYWNlID49IG4pCj4gLQkJCWJyZWFrOwo+IC0JfQo+IC0K PiAtCWlmIChXQVJOX09OKCZyZXF1ZXN0LT5saXN0ID09ICZlbmdpbmUtPnJlcXVlc3RfbGlzdCkp Cj4gLQkJcmV0dXJuIC1FTk9TUEM7Cj4gLQo+IC0JcmV0ID0gaTkxNV93YWl0X3JlcXVlc3QocmVx dWVzdCk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JcmluZ2J1Zi0+c3Bh Y2UgPSBzcGFjZTsKPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBfX3dyYXBf cmluZ19idWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gLXsKPiAtCXVp bnQzMl90IF9faW9tZW0gKnZpcnQ7Cj4gLQlpbnQgcmVtID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdi dWYtPnRhaWw7Cj4gLQo+IC0JdmlydCA9IHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgKyByaW5nYnVm LT50YWlsOwo+IC0JcmVtIC89IDQ7Cj4gLQl3aGlsZSAocmVtLS0pCj4gLQkJaW93cml0ZTMyKE1J X05PT1AsIHZpcnQrKyk7Cj4gLQo+IC0JcmluZ2J1Zi0+dGFpbCA9IDA7Cj4gLQlpbnRlbF9yaW5n X3VwZGF0ZV9zcGFjZShyaW5nYnVmKTsKPiAtfQo+IC0KPiDCoGludCBpbnRlbF9lbmdpbmVfaWRs ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gQEAgLTI0MDQsNjMgKzIzNTMsNzQgQEAgaW50IGludGVs X3JpbmdfcmVzZXJ2ZV9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Qp Cj4gwqAKPiDCoHZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9yZXNlcnZlKHN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLCBpbnQgc2l6ZSkKPiDCoHsKPiAtCVdBUk5fT04ocmlu Z2J1Zi0+cmVzZXJ2ZWRfc2l6ZSk7Cj4gLQlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3Vz ZSk7Cj4gLQo+ICsJR0VNX0JVR19PTihyaW5nYnVmLT5yZXNlcnZlZF9zaXplKTsKPiDCoAlyaW5n YnVmLT5yZXNlcnZlZF9zaXplID0gc2l6ZTsKPiDCoH0KPiDCoAo+IMKgdm9pZCBpbnRlbF9yaW5n X3Jlc2VydmVkX3NwYWNlX2NhbmNlbChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikK PiDCoHsKPiAtCVdBUk5fT04ocmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKTsKPiAtCj4gKwlHRU1f QlVHX09OKCFyaW5nYnVmLT5yZXNlcnZlZF9zaXplKTsKPiDCoAlyaW5nYnVmLT5yZXNlcnZlZF9z aXplwqDCoMKgPSAwOwo+IC0JcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlID0gZmFsc2U7Cj4gwqB9 Cj4gwqAKPiDCoHZvaWQgaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV91c2Uoc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmdidWYpCj4gwqB7Cj4gLQlXQVJOX09OKHJpbmdidWYtPnJlc2VydmVk X2luX3VzZSk7Cj4gLQo+IC0JcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlID0gdHJ1ZTsKPiAtCXJp bmdidWYtPnJlc2VydmVkX3RhaWzCoMKgwqA9IHJpbmdidWYtPnRhaWw7Cj4gKwlHRU1fQlVHX09O KCFyaW5nYnVmLT5yZXNlcnZlZF9zaXplKTsKPiArCXJpbmdidWYtPnJlc2VydmVkX3NpemXCoMKg wqA9IDA7Cj4gwqB9Cj4gwqAKCkFib3ZlIHR3byBmdW5jdGlvbnMgYXJlIG5vdyB0aGUgc2FtZSwg SSdkIHJlbW92ZSB0aGUgX2NhbmNlbCB2YXJpYW50LgoKPiDCoHZvaWQgaW50ZWxfcmluZ19yZXNl cnZlZF9zcGFjZV9lbmQoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gwqB7Cj4g LQlXQVJOX09OKCFyaW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+IC0JaWYgKHJpbmdidWYtPnRh aWwgPiByaW5nYnVmLT5yZXNlcnZlZF90YWlsKSB7Cj4gLQkJV0FSTihyaW5nYnVmLT50YWlsID4g cmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbCArIHJpbmdidWYtPnJlc2VydmVkX3NpemUsCj4gLQkJwqDC oMKgwqDCoCJyZXF1ZXN0IHJlc2VydmVkIHNpemUgdG9vIHNtYWxsOiAlZCB2cyAlZCFcbiIsCj4g LQkJwqDCoMKgwqDCoHJpbmdidWYtPnRhaWwgLSByaW5nYnVmLT5yZXNlcnZlZF90YWlsLCByaW5n YnVmLT5yZXNlcnZlZF9zaXplKTsKPiAtCX0gZWxzZSB7Cj4gKwlHRU1fQlVHX09OKHJpbmdidWYt PnJlc2VydmVkX3NpemUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHdhaXRfZm9yX3NwYWNlKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgYnl0ZXMpCj4gK3sKPiArCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnRhcmdldDsKPiArCj4gKwlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5n YnVmKTsKPiArCWlmIChyaW5nYnVmLT5zcGFjZSA+PSBieXRlcykKPiArCQlyZXR1cm4gMDsKPiAr Cj4gKwkvKiBUaGUgd2hvbGUgcG9pbnQgb2YgcmVzZXJ2aW5nIHNwYWNlIGlzIHRvIG5vdCB3YWl0 ISAqLwo+ICsJR0VNX0JVR19PTighcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZSk7CgpyZXNlcnZlZF9z aXplID0gMCB3b3VsZCBpbmRpY2F0ZSB3ZSdyZSBhdCBfX2k5MTVfYWRkX3JlcXVlc3QsIGJ1dCB0 aGUKY29tbWVudCBhbmQgdGVzdCBhcmUgbm90IGNsZWFyZXN0LiByZXNlcnZlZF9zaXplIGJlaW5n IHplcm8gZG9lcyBub3QKZGlyZWN0bHkgaW5kaWNhdGUgImFoYSwgcmVzZXJ2ZWQgYnl0ZXMgYXJl IGJlaW5nIHVzZWQiLCBpdCBjb3VsZCB2ZXJ5CndlbGwgYmUgbm8gcmVzZXJ2ZWRfc2l6ZSB3YXMg cmVxdWVzdGVkLiBCdXQgcmlnaHQuCgo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodGFyZ2V0 LCAmZW5naW5lLT5yZXF1ZXN0X2xpc3QsIGxpc3QpIHsKPiArCQl1bnNpZ25lZCBzcGFjZTsKPiAr Cj4gwqAJCS8qCj4gLQkJwqAqIFRoZSByaW5nIHdhcyB3cmFwcGVkIHdoaWxlIHRoZSByZXNlcnZl ZCBzcGFjZSB3YXMgaW4gdXNlLgo+IC0JCcKgKiBUaGF0IG1lYW5zIHRoYXQgc29tZSB1bmtub3du IGFtb3VudCBvZiB0aGUgcmluZyB0YWlsIHdhcwo+IC0JCcKgKiBuby1vcCBmaWxsZWQgYW5kIHNr aXBwZWQuIFRodXMgc2ltcGx5IGFkZGluZyB0aGUgcmluZyBzaXplCj4gLQkJwqAqIHRvIHRoZSB0 YWlsIGFuZCBkb2luZyB0aGUgYWJvdmUgc3BhY2UgY2hlY2sgd2lsbCBub3Qgd29yay4KPiAtCQnC oCogUmF0aGVyIHRoYW4gYXR0ZW1wdCB0byB0cmFjayBob3cgbXVjaCB0YWlsIHdhcyBza2lwcGVk LAo+IC0JCcKgKiBpdCBpcyBtdWNoIHNpbXBsZXIgdG8gc2F5IHRoYXQgYWxzbyBza2lwcGluZyB0 aGUgc2FuaXR5Cj4gLQkJwqAqIGNoZWNrIGV2ZXJ5IG9uY2UgaW4gYSB3aGlsZSBpcyBub3QgYSBi aWcgaXNzdWUuCj4gKwkJwqAqIFRoZSByZXF1ZXN0IHF1ZXVlIGlzIHBlci1lbmdpbmUsIHNvIGNh biBjb250YWluIHJlcXVlc3RzCj4gKwkJwqAqIGZyb20gbXVsdGlwbGUgcmluZ2J1ZmZlcnMuIEhl cmUsIHdlIG11c3QgaWdub3JlIGFueSB0aGF0Cj4gKwkJwqAqIGFyZW4ndCBmcm9tIHRoZSByaW5n YnVmZmVyIHdlJ3JlIGNvbnNpZGVyaW5nLgo+IMKgCQnCoCovCj4gKwkJaWYgKHRhcmdldC0+cmlu Z2J1ZiAhPSByaW5nYnVmKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJLyogV291bGQgY29tcGxl dGlvbiBvZiB0aGlzIHJlcXVlc3QgZnJlZSBlbm91Z2ggc3BhY2U/ICovCj4gKwkJc3BhY2UgPSBf X2ludGVsX3Jpbmdfc3BhY2UodGFyZ2V0LT5wb3N0Zml4LCByaW5nYnVmLT50YWlsLAo+ICsJCQkJ CcKgwqDCoHJpbmdidWYtPnNpemUpOwo+ICsJCWlmIChzcGFjZSA+PSBieXRlcykKPiArCQkJYnJl YWs7Cj4gwqAJfQo+IMKgCj4gLQlyaW5nYnVmLT5yZXNlcnZlZF9zaXplwqDCoMKgPSAwOwo+IC0J cmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlID0gZmFsc2U7Cj4gKwlpZiAoV0FSTl9PTigmdGFyZ2V0 LT5saXN0ID09ICZlbmdpbmUtPnJlcXVlc3RfbGlzdCkpCj4gKwkJcmV0dXJuIC1FTk9TUEM7Cj4g Kwo+ICsJcmV0dXJuIGk5MTVfd2FpdF9yZXF1ZXN0KHRhcmdldCk7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBfX2ludGVsX3JpbmdfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIGludCBieXRlcykKPiAraW50IGludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdvcmRzKQo+IMKgewo+IC0Jc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYgPSBlbmdpbmUtPmJ1ZmZlcjsKPiAtCWludCByZW1haW5fdXNhYmxl ID0gcmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUgLSByaW5nYnVmLT50YWlsOwo+ICsJc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7Cj4gwqAJaW50IHJlbWFpbl9h Y3R1YWwgPSByaW5nYnVmLT5zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPiAtCWludCByZXQsIHRvdGFs X2J5dGVzLCB3YWl0X2J5dGVzID0gMDsKPiArCWludCByZW1haW5fdXNhYmxlID0gcmluZ2J1Zi0+ ZWZmZWN0aXZlX3NpemUgLSByaW5nYnVmLT50YWlsOwo+ICsJaW50IGJ5dGVzID0gbnVtX2R3b3Jk cyAqIHNpemVvZih1MzIpOwo+ICsJaW50IHRvdGFsX2J5dGVzLCB3YWl0X2J5dGVzOwo+IMKgCWJv b2wgbmVlZF93cmFwID0gZmFsc2U7Cj4gwqAKPiAtCWlmIChyaW5nYnVmLT5yZXNlcnZlZF9pbl91 c2UpCj4gLQkJdG90YWxfYnl0ZXMgPSBieXRlczsKPiAtCWVsc2UKPiAtCQl0b3RhbF9ieXRlcyA9 IGJ5dGVzICsgcmluZ2J1Zi0+cmVzZXJ2ZWRfc2l6ZTsKPiArCXRvdGFsX2J5dGVzID0gYnl0ZXMg KyByaW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+IMKgCj4gwqAJaWYgKHVubGlrZWx5KGJ5dGVzID4g cmVtYWluX3VzYWJsZSkpIHsKPiDCoAkJLyoKPiBAQCAtMjQ2OSw0NCArMjQyOSwzOCBAQCBzdGF0 aWMgaW50IF9faW50ZWxfcmluZ19wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwgaW50IGJ5dGVzKQo+IMKgCQnCoCovCj4gwqAJCXdhaXRfYnl0ZXMgPSByZW1haW5fYWN0dWFs ICsgdG90YWxfYnl0ZXM7Cj4gwqAJCW5lZWRfd3JhcCA9IHRydWU7Cj4gLQl9IGVsc2Ugewo+IC0J CWlmICh1bmxpa2VseSh0b3RhbF9ieXRlcyA+IHJlbWFpbl91c2FibGUpKSB7Cj4gLQkJCS8qCj4g LQkJCcKgKiBUaGUgYmFzZSByZXF1ZXN0IHdpbGwgZml0IGJ1dCB0aGUgcmVzZXJ2ZWQgc3BhY2UK PiAtCQkJwqAqIGZhbGxzIG9mZiB0aGUgZW5kLiBTbyBkb24ndCBuZWVkIGFuIGltbWVkaWF0ZSB3 cmFwCj4gLQkJCcKgKiBhbmQgb25seSBuZWVkIHRvIGVmZmVjdGl2ZWx5IHdhaXQgZm9yIHRoZSBy ZXNlcnZlZAo+IC0JCQnCoCogc2l6ZSBzcGFjZSBmcm9tIHRoZSBzdGFydCBvZiByaW5nYnVmZmVy Lgo+IC0JCQnCoCovCj4gLQkJCXdhaXRfYnl0ZXMgPSByZW1haW5fYWN0dWFsICsgcmluZ2J1Zi0+ cmVzZXJ2ZWRfc2l6ZTsKPiAtCQl9IGVsc2UgaWYgKHRvdGFsX2J5dGVzID4gcmluZ2J1Zi0+c3Bh Y2UpIHsKPiAtCQkJLyogTm8gd3JhcHBpbmcgcmVxdWlyZWQsIGp1c3Qgd2FpdGluZy4gKi8KPiAt CQkJd2FpdF9ieXRlcyA9IHRvdGFsX2J5dGVzOwo+IC0JCX0KPiAtCX0KPiArCX0gZWxzZSBpZiAo dW5saWtlbHkodG90YWxfYnl0ZXMgPiByZW1haW5fdXNhYmxlKSkgewo+ICsJCS8qCj4gKwkJwqAq IFRoZSBiYXNlIHJlcXVlc3Qgd2lsbCBmaXQgYnV0IHRoZSByZXNlcnZlZCBzcGFjZQo+ICsJCcKg KiBmYWxscyBvZmYgdGhlIGVuZC4gU28gd2UgZG9uJ3QgbmVlZCBhbiBpbW1lZGlhdGUgd3JhcAo+ ICsJCcKgKiBhbmQgb25seSBuZWVkIHRvIGVmZmVjdGl2ZWx5IHdhaXQgZm9yIHRoZSByZXNlcnZl ZAo+ICsJCcKgKiBzaXplIHNwYWNlIGZyb20gdGhlIHN0YXJ0IG9mIHJpbmdidWZmZXIuCj4gKwkJ wqAqLwo+ICsJCXdhaXRfYnl0ZXMgPSByZW1haW5fYWN0dWFsICsgcmluZ2J1Zi0+cmVzZXJ2ZWRf c2l6ZTsKPiArCX0gZWxzZQoKU2hvdWxkIGhhdmUgYnJhY2VzIGhlcmUgaW4gdGhlIGZpbmFsIGVs c2UuCgo+ICsJCS8qIE5vIHdyYXBwaW5nIHJlcXVpcmVkLCBqdXN0IHdhaXRpbmcuICovCj4gKwkJ d2FpdF9ieXRlcyA9IHRvdGFsX2J5dGVzOwo+IMKgCj4gLQlpZiAod2FpdF9ieXRlcykgewo+IC0J CXJldCA9IHJpbmdfd2FpdF9mb3Jfc3BhY2UoZW5naW5lLCB3YWl0X2J5dGVzKTsKPiArCWlmICh3 YWl0X2J5dGVzID4gcmluZ2J1Zi0+c3BhY2UpIHsKPiArCQlpbnQgcmV0ID0gd2FpdF9mb3Jfc3Bh Y2UocmVxLCB3YWl0X2J5dGVzKTsKPiDCoAkJaWYgKHVubGlrZWx5KHJldCkpCj4gwqAJCQlyZXR1 cm4gcmV0Owo+IMKgCj4gLQkJaWYgKG5lZWRfd3JhcCkKPiAtCQkJX193cmFwX3JpbmdfYnVmZmVy KHJpbmdidWYpOwo+ICsJCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmdidWYpOwo+IMKgCX0K PiDCoAo+IC0JcmV0dXJuIDA7Cj4gLX0KPiArCWlmICh1bmxpa2VseShuZWVkX3dyYXApKSB7Cj4g KwkJR0VNX0JVR19PTihyZW1haW5fYWN0dWFsID4gcmluZ2J1Zi0+c3BhY2UpOwo+ICsJCUdFTV9C VUdfT04ocmluZ2J1Zi0+dGFpbCArIHJlbWFpbl9hY3R1YWwgPiByaW5nYnVmLT5zaXplKTsKPiDC oAo+IC1pbnQgaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKPiAtCQnCoMKgwqDCoMKgaW50IG51bV9kd29yZHMpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+IC0JaW50IHJldDsKPiAtCj4gLQlyZXQg PSBfX2ludGVsX3JpbmdfcHJlcGFyZShlbmdpbmUsIG51bV9kd29yZHMgKiBzaXplb2YodWludDMy X3QpKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiArCQltZW1zZXQocmluZ2J1Zi0+ dmlydHVhbF9zdGFydCArIHJpbmdidWYtPnRhaWwsCj4gKwkJwqDCoMKgwqDCoMKgwqAwLCByZW1h aW5fYWN0dWFsKTsKCkknZCBsaWtlIHRvIHNlZSBNSV9OT09QIG9yIGF0IGxlYXN0IGEgY29tbWVu dCB0aGF0IHRoaXMgaXMgbm90IGEgY2FzdWFsCmNsZWFyIHRvIDAuCgpXaXRoIGFib3ZlIGFkZHJl c3NlZCwKClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51 eC5pbnRlbC5jb20+Cgo+ICsJCXJpbmdidWYtPnRhaWwgPSAwOwo+ICsJCXJpbmdidWYtPnNwYWNl IC09IHJlbWFpbl9hY3R1YWw7Cj4gKwl9Cj4gwqAKPiAtCWVuZ2luZS0+YnVmZmVyLT5zcGFjZSAt PSBudW1fZHdvcmRzICogc2l6ZW9mKHVpbnQzMl90KTsKPiArCXJpbmdidWYtPnNwYWNlIC09IGJ5 dGVzOwo+ICsJR0VNX0JVR19PTihyaW5nYnVmLT5zcGFjZSA8IDApOwo+IMKgCXJldHVybiAwOwo+ IMKgfQo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4 IDJhZGUxOTRiYmVhOS4uMjAxZTc3NTJkNzY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAo+IEBAIC0xMDgsOCArMTA4LDYgQEAgc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgewo+IMKgCWludCBzaXplOwo+IMKgCWludCBlZmZlY3RpdmVfc2l6ZTsKPiDCoAlpbnQg cmVzZXJ2ZWRfc2l6ZTsKPiAtCWludCByZXNlcnZlZF90YWlsOwo+IC0JYm9vbCByZXNlcnZlZF9p bl91c2U7Cj4gwqAKPiDCoAkvKiogV2UgdHJhY2sgdGhlIHBvc2l0aW9uIG9mIHRoZSByZXF1ZXN0 cyBpbiB0aGUgcmluZyBidWZmZXIsIGFuZAo+IMKgCcKgKiB3aGVuIGVhY2ggaXMgcmV0aXJlZCB3 ZSBpbmNyZW1lbnQgbGFzdF9yZXRpcmVkX2hlYWQgYXMgdGhlIEdQVQo+IEBAIC00NTksNyArNDU3 LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gwqB9Cj4gwqBpbnQgX19pbnRlbF9yaW5nX3NwYWNlKGludCBo ZWFkLCBpbnQgdGFpbCwgaW50IHNpemUpOwo+IMKgdm9pZCBpbnRlbF9yaW5nX3VwZGF0ZV9zcGFj ZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4gLWludCBpbnRlbF9yaW5nX3Nw YWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKPiDCoGJvb2wgaW50ZWxfZW5n aW5lX3N0b3BwZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiDCoAo+IMKgaW50 IF9fbXVzdF9jaGVjayBpbnRlbF9lbmdpbmVfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpOwotLSAKSm9vbmFzIExhaHRpbmVuCk9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVy CkludGVsIENvcnBvcmF0aW9uCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=