From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2 01/15] drm/i915: Keep a global seqno per-engine Date: Wed, 22 Feb 2017 12:24:00 +0000 Message-ID: <271e3db5-dd07-8afe-134e-38430575404f@linux.intel.com> References: <20170222114610.5819-1-chris@chris-wilson.co.uk> <20170222114610.5819-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9D55C6E7D6 for ; Wed, 22 Feb 2017 12:24:03 +0000 (UTC) In-Reply-To: <20170222114610.5819-2-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 Ck9uIDIyLzAyLzIwMTcgMTE6NDUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBSZXBsYWNlIHRoZSBn bG9iYWwgZGV2aWNlIHNlcW5vIHdpdGggb25lIGZvciBlYWNoIGVuZ2luZSwgYW5kIGFjY291bnQK PiBmb3IgaW4tZmxpZ2h0IHNlcW5vIG9uIGVhY2ggc2VwYXJhdGVseS4gVGhpcyBpcyBjb25zaXN0 ZW50IHdpdGgKPiBkbWEtZmVuY2UgYXMgZWFjaCB0aW1lbGluZSBoYXMgc2VwYXJhdGUgZmVuY2Ut Y29udGV4dHMgZm9yIGVhY2ggZW5naW5lCj4gYW5kIGEgc2Vxbm8gaXMgb25seSBvcmRlcmVkIHdp dGhpbiBhIGZlbmNlLWNvbnRleHQgKGkuZS4gIHNlcW5vIGRvIG5vdAo+IG5lZWQgdG8gYmUgb3Jk ZXJlZCB3cnQgdG8gb3RoZXIgZW5naW5lcywganVzdCBvcmRlcmVkIHdpdGhpbiBhIHNpbmdsZQo+ IGVuZ2luZSkuIFRoaXMgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIHJlcXVlc3QgcmV3aW5kaW5nIGZv ciBwcmVlbXB0aW9uIG9uCj4gaW5kaXZpZHVhbCBlbmdpbmVzICh3ZSBoYXZlIHRvIHJld2luZCB0 aGUgZ2xvYmFsIHNlcW5vIHRvIGF2b2lkCj4gb3ZlcmZsb3csIGFuZCB3ZSBkbyBub3QgaGF2ZSB0 byByZXdpbmQgYWxsIGVuZ2luZXMganVzdCB0byBwcmVlbXB0IG9uZS4pCj4KPiB2MjogUmVuYW1l IGFjdGl2ZV9zZXFubyB0byBpbmZsaWdodF9zZXFub3MgdG8gbW9yZSBjbGVhcmx5IGluZGljYXRl IHRoYXQKPiBpdCBpcyBhIGNvdW50ZXIgYW5kIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBleGlzdGlu ZyBzZXFuby4gVXBkYXRlCj4gZnVuY3Rpb25zIHRoYXQgb3BlcmF0ZWQgb24gYWN0aXZlX3NlcW5v IHNpbWlsYXJseS4KCk1pc3NlZCBhIGNvdXBsZSBkZXRhaWxzIGJ1dCBuZXZlciBtaW5kLgoKUmV2 aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdh cmRzLAoKVHZydGtvCgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgo+IFJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0 aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jICAgICAgfCAxMSArLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9yZXF1ZXN0LmMgIHwgODMgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICB8ICA4ICstLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5oIHwgIDkgKysrLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jIHwgMzMgKysrKysrLS0tLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgIHwgIDIgLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggIHwgIDQgKy0KPiAgNyBmaWxlcyBjaGFuZ2Vk LCA3MCBpbnNlcnRpb25zKCspLCA4MCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gaW5kZXggNjU1ZTYwZDYwOWMyLi4xYTI4YjUyNzliZWMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0xMDgwLDE1ICsxMDgwLDYgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9lcnJvcl9zdGF0ZV9mb3BzID0g ewo+ICAjZW5kaWYKPgo+ICBzdGF0aWMgaW50Cj4gLWk5MTVfbmV4dF9zZXFub19nZXQodm9pZCAq ZGF0YSwgdTY0ICp2YWwpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRhdGE7Cj4gLQo+IC0JKnZhbCA9IDEgKyBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPmd0Lmds b2JhbF90aW1lbGluZS5zZXFubyk7Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtc3RhdGljIGlu dAo+ICBpOTE1X25leHRfc2Vxbm9fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7Cj4gQEAgLTExMDYsNyArMTA5 Nyw3IEBAIGk5MTVfbmV4dF9zZXFub19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAgfQo+Cj4g IERFRklORV9TSU1QTEVfQVRUUklCVVRFKGk5MTVfbmV4dF9zZXFub19mb3BzLAo+IC0JCQlpOTE1 X25leHRfc2Vxbm9fZ2V0LCBpOTE1X25leHRfc2Vxbm9fc2V0LAo+ICsJCQlOVUxMLCBpOTE1X25l eHRfc2Vxbm9fc2V0LAo+ICAJCQkiMHglbGx4XG4iKTsKPgo+ICBzdGF0aWMgaW50IGk5MTVfZnJl cXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IGluZGV4IDUxYmMyNGQxZDdjOS4uZThiMzU0 Y2YyZjA2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IEBA IC0xOTgsNiArMTk4LDEyIEBAIGk5MTVfcHJpb3RyZWVfaW5pdChzdHJ1Y3QgaTkxNV9wcmlvdHJl ZSAqcHQpCj4gIAlwdC0+cHJpb3JpdHkgPSBJTlRfTUlOOwo+ICB9Cj4KPiArc3RhdGljIHZvaWQg dW5yZXNlcnZlX3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJ R0VNX0JVR19PTighZW5naW5lLT50aW1lbGluZS0+aW5mbGlnaHRfc2Vxbm9zKTsKPiArCWVuZ2lu ZS0+dGltZWxpbmUtPmluZmxpZ2h0X3NlcW5vcy0tOwo+ICt9Cj4gKwo+ICB2b2lkIGk5MTVfZ2Vt X3JldGlyZV9ub29wKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKPiAgCQkJICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIHsKPiBAQCAtMjM3LDYgKzI0Myw3 IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCQkJCSAmcmVxdWVzdC0+aTkxNS0+Z3QuaWRsZV93b3Jr LAo+ICAJCQkJIG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7Cj4gIAl9Cj4gKwl1bnJlc2VydmVfc2Vx bm8ocmVxdWVzdC0+ZW5naW5lKTsKPgo+ICAJLyogV2FsayB0aHJvdWdoIHRoZSBhY3RpdmUgbGlz dCwgY2FsbGluZyByZXRpcmUgb24gZWFjaC4gVGhpcyBhbGxvd3MKPiAgCSAqIG9iamVjdHMgdG8g dHJhY2sgdGhlaXIgR1BVIGFjdGl2aXR5IGFuZCBtYXJrIHRoZW1zZWx2ZXMgYXMgaWRsZQo+IEBA IC0zMDcsNyArMzE0LDcgQEAgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZV91cHRvKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAJfSB3aGlsZSAodG1wICE9IHJlcSk7Cj4g IH0KPgo+IC1zdGF0aWMgaW50IGk5MTVfZ2VtX2luaXRfZ2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LCB1MzIgc2Vxbm8pCj4gK3N0YXRpYyBpbnQgcmVzZXRfYWxsX2ds b2JhbF9zZXFubyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHNlcW5vKQo+ICB7 Cj4gIAlzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKnRpbWVsaW5lID0gJmk5MTUtPmd0Lmdsb2Jh bF90aW1lbGluZTsKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiBAQCAtMzI1 LDE1ICszMzIsMTkgQEAgc3RhdGljIGludCBpOTE1X2dlbV9pbml0X2dsb2JhbF9zZXFubyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHNlcW5vKQo+ICAJR0VNX0JVR19PTihpOTE1 LT5ndC5hY3RpdmVfcmVxdWVzdHMgPiAxKTsKPgo+ICAJLyogSWYgdGhlIHNlcW5vIHdyYXBzIGFy b3VuZCwgd2UgbmVlZCB0byBjbGVhciB0aGUgYnJlYWRjcnVtYiByYnRyZWUgKi8KPiAtCWlmICgh aTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIGF0b21pY19yZWFkKCZ0aW1lbGluZS0+c2Vxbm8pKSkg ewo+IC0JCXdoaWxlIChpbnRlbF9icmVhZGNydW1ic19idXN5KGk5MTUpKQo+IC0JCQljb25kX3Jl c2NoZWQoKTsgLyogc3BpbiB1bnRpbCB0aHJlYWRzIGFyZSBjb21wbGV0ZSAqLwo+IC0JfQo+IC0J YXRvbWljX3NldCgmdGltZWxpbmUtPnNlcW5vLCBzZXFubyk7Cj4gKwlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwgPSAmdGlt ZWxpbmUtPmVuZ2luZVtpZF07Cj4KPiAtCS8qIEZpbmFsbHkgcmVzZXQgaHcgc3RhdGUgKi8KPiAt CWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQo+ICsJCWlmICghaTkxNV9zZXFub19w YXNzZWQoc2Vxbm8sIHRsLT5zZXFubykpIHsKPiArCQkJLyogc3BpbiB1bnRpbCB0aHJlYWRzIGFy ZSBjb21wbGV0ZSAqLwo+ICsJCQl3aGlsZSAoaW50ZWxfYnJlYWRjcnVtYnNfYnVzeShlbmdpbmUp KQo+ICsJCQkJY29uZF9yZXNjaGVkKCk7Cj4gKwkJfQo+ICsKPiArCQkvKiBGaW5hbGx5IHJlc2V0 IGh3IHN0YXRlICovCj4gKwkJdGwtPnNlcW5vID0gc2Vxbm87Cj4gIAkJaW50ZWxfZW5naW5lX2lu aXRfZ2xvYmFsX3NlcW5vKGVuZ2luZSwgc2Vxbm8pOwo+ICsJfQo+Cj4gIAlsaXN0X2Zvcl9lYWNo X2VudHJ5KHRpbWVsaW5lLCAmaTkxNS0+Z3QudGltZWxpbmVzLCBsaW5rKSB7Cj4gIAkJZm9yX2Vh Y2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiBAQCAtMzU4LDM3ICszNjksMzggQEAgaW50 IGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNl cW5vKQo+ICAJLyogSFdTIHBhZ2UgbmVlZHMgdG8gYmUgc2V0IGxlc3MgdGhhbiB3aGF0IHdlCj4g IAkgKiB3aWxsIGluamVjdCB0byByaW5nCj4gIAkgKi8KPiAtCXJldHVybiBpOTE1X2dlbV9pbml0 X2dsb2JhbF9zZXFubyhkZXZfcHJpdiwgc2Vxbm8gLSAxKTsKPiArCXJldHVybiByZXNldF9hbGxf Z2xvYmFsX3NlcW5vKGRldl9wcml2LCBzZXFubyAtIDEpOwo+ICB9Cj4KPiAtc3RhdGljIGludCBy ZXNlcnZlX2dsb2JhbF9zZXFubyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArc3Rh dGljIGludCByZXNlcnZlX3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAg ewo+IC0JdTMyIGFjdGl2ZV9yZXF1ZXN0cyA9ICsraTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzOwo+ IC0JdTMyIHNlcW5vID0gYXRvbWljX3JlYWQoJmk5MTUtPmd0Lmdsb2JhbF90aW1lbGluZS5zZXFu byk7Cj4gKwl1MzIgYWN0aXZlID0gKytlbmdpbmUtPnRpbWVsaW5lLT5pbmZsaWdodF9zZXFub3M7 Cj4gKwl1MzIgc2Vxbm8gPSBlbmdpbmUtPnRpbWVsaW5lLT5zZXFubzsKPiAgCWludCByZXQ7Cj4K PiAgCS8qIFJlc2VydmF0aW9uIGlzIGZpbmUgdW50aWwgd2UgbmVlZCB0byB3cmFwIGFyb3VuZCAq Lwo+IC0JaWYgKGxpa2VseShzZXFubyArIGFjdGl2ZV9yZXF1ZXN0cyA+IHNlcW5vKSkKPiArCWlm IChsaWtlbHkoIWFkZF9vdmVyZmxvd3Moc2Vxbm8sIGFjdGl2ZSkpKQo+ICAJCXJldHVybiAwOwo+ Cj4gLQlyZXQgPSBpOTE1X2dlbV9pbml0X2dsb2JhbF9zZXFubyhpOTE1LCAwKTsKPiArCS8qIEV2 ZW4gdGhvdWdoIHdlIGFyZSB0cmFja2luZyBpbmZsaWdodCBzZXFubyBpbmRpdmlkdWFsbHkgb24g ZWFjaAo+ICsJICogZW5naW5lLCBvdGhlciBlbmdpbmVzIG1heSBiZSBvYnNlcnZpbmcgdXMgdXNp bmcgaHcgc2VtYXBob3JlcyBhbmQKPiArCSAqIHNvIHdlIG5lZWQgdG8gaWRsZSBhbGwgZW5naW5l cyBiZWZvcmUgd3JhcHBpbmcgYXJvdW5kIHRoaXMgZW5naW5lLgo+ICsJICogQXMgYWxsIGVuZ2lu ZXMgYXJlIHRoZW4gaWRsZSwgd2UgY2FuIHJlc2V0IHRoZSBzZXFubyBvbiBhbGwsIHNvCj4gKwkg KiB3ZSBkb24ndCBzdGFsbCBpbiBxdWljayBzdWNjZXNzaW9uIGlmIGVhY2ggZW5naW5lIGlzIGJl aW5nCj4gKwkgKiBzaW1pbGFybHkgdXRpbGl6ZWQuCj4gKwkgKi8KPiArCXJldCA9IHJlc2V0X2Fs bF9nbG9iYWxfc2Vxbm8oZW5naW5lLT5pOTE1LCAwKTsKPiAgCWlmIChyZXQpIHsKPiAtCQlpOTE1 LT5ndC5hY3RpdmVfcmVxdWVzdHMtLTsKPiArCQllbmdpbmUtPnRpbWVsaW5lLT5pbmZsaWdodF9z ZXFub3MtLTsKPiAgCQlyZXR1cm4gcmV0Owo+ICAJfQo+Cj4gIAlyZXR1cm4gMDsKPiAgfQo+Cj4g LXN0YXRpYyB1MzIgX190aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5l ICp0bCkKPiAtewo+IC0JLyogc2Vxbm8gb25seSBpbmNyZW1lbnRlZCB1bmRlciBhIG11dGV4ICov Cj4gLQlyZXR1cm4gKyt0bC0+c2Vxbm8uY291bnRlcjsKPiAtfQo+IC0KPiAtc3RhdGljIHUzMiB0 aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0bCkKPiArc3RhdGlj IHUzMiB0aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKPiAgewo+ IC0JcmV0dXJuIGF0b21pY19pbmNfcmV0dXJuKCZ0bC0+c2Vxbm8pOwo+ICsJcmV0dXJuICsrdGwt PnNlcW5vOwo+ICB9Cj4KPiAgdm9pZCBfX2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiBAQCAtNDAyLDE0ICs0MTQsMTAgQEAgdm9p ZCBfX2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCkKPiAgCUdFTV9CVUdfT04odGltZWxpbmUgPT0gcmVxdWVzdC0+dGltZWxpbmUpOwo+ ICAJYXNzZXJ0X3NwaW5fbG9ja2VkKCZ0aW1lbGluZS0+bG9jayk7Cj4KPiAtCXNlcW5vID0gdGlt ZWxpbmVfZ2V0X3NlcW5vKHRpbWVsaW5lLT5jb21tb24pOwo+ICsJc2Vxbm8gPSB0aW1lbGluZV9n ZXRfc2Vxbm8odGltZWxpbmUpOwo+ICAJR0VNX0JVR19PTighc2Vxbm8pOwo+ICAJR0VNX0JVR19P TihpOTE1X3NlcW5vX3Bhc3NlZChpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSksIHNlcW5v KSk7Cj4KPiAtCUdFTV9CVUdfT04oaTkxNV9zZXFub19wYXNzZWQodGltZWxpbmUtPmxhc3Rfc3Vi bWl0dGVkX3NlcW5vLCBzZXFubykpOwo+IC0JcmVxdWVzdC0+cHJldmlvdXNfc2Vxbm8gPSB0aW1l bGluZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm87Cj4gLQl0aW1lbGluZS0+bGFzdF9zdWJtaXR0ZWRf c2Vxbm8gPSBzZXFubzsKPiAtCj4gIAkvKiBXZSBtYXkgYmUgcmVjdXJzaW5nIGZyb20gdGhlIHNp Z25hbCBjYWxsYmFjayBvZiBhbm90aGVyIGk5MTUgZmVuY2UgKi8KPiAgCXNwaW5fbG9ja19uZXN0 ZWQoJnJlcXVlc3QtPmxvY2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKPiAgCXJlcXVlc3QtPmds b2JhbF9zZXFubyA9IHNlcW5vOwo+IEBAIC01MTYsNyArNTI0LDcgQEAgaTkxNV9nZW1fcmVxdWVz dF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAlpZiAocmV0KQo+ICAJ CXJldHVybiBFUlJfUFRSKHJldCk7Cj4KPiAtCXJldCA9IHJlc2VydmVfZ2xvYmFsX3NlcW5vKGRl dl9wcml2KTsKPiArCXJldCA9IHJlc2VydmVfc2Vxbm8oZW5naW5lKTsKPiAgCWlmIChyZXQpCj4g IAkJZ290byBlcnJfdW5waW47Cj4KPiBAQCAtNTY4LDcgKzU3Niw3IEBAIGk5MTVfZ2VtX3JlcXVl c3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJCSAgICAgICAmaTkx NV9mZW5jZV9vcHMsCj4gIAkJICAgICAgICZyZXEtPmxvY2ssCj4gIAkJICAgICAgIHJlcS0+dGlt ZWxpbmUtPmZlbmNlX2NvbnRleHQsCj4gLQkJICAgICAgIF9fdGltZWxpbmVfZ2V0X3NlcW5vKHJl cS0+dGltZWxpbmUtPmNvbW1vbikpOwo+ICsJCSAgICAgICB0aW1lbGluZV9nZXRfc2Vxbm8ocmVx LT50aW1lbGluZSkpOwo+Cj4gIAkvKiBXZSBidW1wIHRoZSByZWYgZm9yIHRoZSBmZW5jZSBjaGFp biAqLwo+ICAJaTkxNV9zd19mZW5jZV9pbml0KCZpOTE1X2dlbV9yZXF1ZXN0X2dldChyZXEpLT5z dWJtaXQsIHN1Ym1pdF9ub3RpZnkpOwo+IEBAIC02MTMsNiArNjIxLDggQEAgaTkxNV9nZW1fcmVx dWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAkgKi8KPiAgCXJl cS0+aGVhZCA9IHJlcS0+cmluZy0+dGFpbDsKPgo+ICsJLyogQ2hlY2sgdGhhdCB3ZSBkaWRuJ3Qg aW50ZXJydXB0IG91cnNlbHZlcyB3aXRoIGEgbmV3IHJlcXVlc3QgKi8KPiArCUdFTV9CVUdfT04o cmVxLT50aW1lbGluZS0+c2Vxbm8gIT0gcmVxLT5mZW5jZS5zZXFubyk7Cj4gIAlyZXR1cm4gcmVx Owo+Cj4gIGVycl9jdHg6Cj4gQEAgLTYyMyw3ICs2MzMsNyBAQCBpOTE1X2dlbV9yZXF1ZXN0X2Fs bG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPgo+ICAJa21lbV9jYWNoZV9mcmVl KGRldl9wcml2LT5yZXF1ZXN0cywgcmVxKTsKPiAgZXJyX3VucmVzZXJ2ZToKPiAtCWRldl9wcml2 LT5ndC5hY3RpdmVfcmVxdWVzdHMtLTsKPiArCXVucmVzZXJ2ZV9zZXFubyhlbmdpbmUpOwo+ICBl cnJfdW5waW46Cj4gIAllbmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBjdHgpOwo+ICAJcmV0 dXJuIEVSUl9QVFIocmV0KTsKPiBAQCAtODM3LDggKzg0Nyw3IEBAIHZvaWQgX19pOTE1X2FkZF9y ZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBmbHVzaF9j YWNoZXMpCj4gIAkgKiBvdXIgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYygpIGFuZCBjYWxsZWQgX19p OTE1X2FkZF9yZXF1ZXN0KCkgYmVmb3JlCj4gIAkgKiB1cywgdGhlIHRpbWVsaW5lIHdpbGwgaG9s ZCBpdHMgc2Vxbm8gd2hpY2ggaXMgbGF0ZXIgdGhhbiBvdXJzLgo+ICAJICovCj4gLQlHRU1fQlVH X09OKGk5MTVfc2Vxbm9fcGFzc2VkKHRpbWVsaW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubywKPiAt CQkJCSAgICAgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8pKTsKPiArCUdFTV9CVUdfT04odGltZWxpbmUt PnNlcW5vICE9IHJlcXVlc3QtPmZlbmNlLnNlcW5vKTsKPgo+ICAJLyoKPiAgCSAqIFRvIGVuc3Vy ZSB0aGF0IHRoaXMgY2FsbCB3aWxsIG5vdCBmYWlsLCBzcGFjZSBmb3IgaXRzIGVtaXNzaW9ucwo+ IEBAIC04OTIsMTYgKzkwMSwxNCBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQo+ICAJbGlzdF9h ZGRfdGFpbCgmcmVxdWVzdC0+bGluaywgJnRpbWVsaW5lLT5yZXF1ZXN0cyk7Cj4gIAlzcGluX3Vu bG9ja19pcnEoJnRpbWVsaW5lLT5sb2NrKTsKPgo+IC0JR0VNX0JVR19PTihpOTE1X3NlcW5vX3Bh c3NlZCh0aW1lbGluZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8sCj4gLQkJCQkgICAgIHJlcXVlc3Qt PmZlbmNlLnNlcW5vKSk7Cj4gLQo+IC0JdGltZWxpbmUtPmxhc3Rfc3VibWl0dGVkX3NlcW5vID0g cmVxdWVzdC0+ZmVuY2Uuc2Vxbm87Cj4gKwlHRU1fQlVHX09OKHRpbWVsaW5lLT5zZXFubyAhPSBy ZXF1ZXN0LT5mZW5jZS5zZXFubyk7Cj4gIAlpOTE1X2dlbV9hY3RpdmVfc2V0KCZ0aW1lbGluZS0+ bGFzdF9yZXF1ZXN0LCByZXF1ZXN0KTsKPgo+ICAJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+cmlu Z19saW5rLCAmcmluZy0+cmVxdWVzdF9saXN0KTsKPiAgCXJlcXVlc3QtPmVtaXR0ZWRfamlmZmll cyA9IGppZmZpZXM7Cj4KPiAtCWk5MTVfZ2VtX21hcmtfYnVzeShlbmdpbmUpOwo+ICsJaWYgKCFy ZXF1ZXN0LT5pOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMrKykKPiArCQlpOTE1X2dlbV9tYXJrX2J1 c3koZW5naW5lKTsKPgo+ICAJLyogTGV0IHRoZSBiYWNrZW5kIGtub3cgYSBuZXcgcmVxdWVzdCBo YXMgYXJyaXZlZCB0aGF0IG1heSBuZWVkCj4gIAkgKiB0byBhZGp1c3QgdGhlIGV4aXN0aW5nIGV4 ZWN1dGlvbiBzY2hlZHVsZSBkdWUgdG8gYSBoaWdoIHByaW9yaXR5Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+IGluZGV4IGVhNTExZjA2ZWZhZi4uOTA0OTkzNmM1NzFj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+IEBAIC0xNDUs MTIgKzE0NSw2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4KPiAgCXUzMiBnbG9i YWxfc2Vxbm87Cj4KPiAtCS8qKiBHRU0gc2VxdWVuY2UgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0 aGUgcHJldmlvdXMgcmVxdWVzdCwKPiAtCSAqIHdoZW4gdGhlIEhXUyBicmVhZGNydW1iIGlzIGVx dWFsIHRvIHRoaXMgdGhlIEdQVSBpcyBwcm9jZXNzaW5nCj4gLQkgKiB0aGlzIHJlcXVlc3QuCj4g LQkgKi8KPiAtCXUzMiBwcmV2aW91c19zZXFubzsKPiAtCj4gIAkvKiogUG9zaXRpb24gaW4gdGhl IHJpbmcgb2YgdGhlIHN0YXJ0IG9mIHRoZSByZXF1ZXN0ICovCj4gIAl1MzIgaGVhZDsKPgo+IEBA IC0yODcsNyArMjgxLDcgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X3N0YXJ0ZWQoY29uc3Qgc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIHsKPiAgCUdFTV9CVUdfT04oIXJlcS0+Z2xv YmFsX3NlcW5vKTsKPiAgCXJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChpbnRlbF9lbmdpbmVfZ2V0 X3NlcW5vKHJlcS0+ZW5naW5lKSwKPiAtCQkJCSByZXEtPnByZXZpb3VzX3NlcW5vKTsKPiArCQkJ CSByZXEtPmdsb2JhbF9zZXFubyAtIDEpOwo+ICB9Cj4KPiAgc3RhdGljIGlubGluZSBib29sCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5oCj4gaW5kZXggZjJlNTFmNDJj YzJmLi42YzUzZTE0Y2FiMmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fdGltZWxpbmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Rp bWVsaW5lLmgKPiBAQCAtMzMsNyArMzMsMTMgQEAgc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lOwo+ Cj4gIHN0cnVjdCBpbnRlbF90aW1lbGluZSB7Cj4gIAl1NjQgZmVuY2VfY29udGV4dDsKPiAtCXUz MiBsYXN0X3N1Ym1pdHRlZF9zZXFubzsKPiArCXUzMiBzZXFubzsKPiArCj4gKwkvKioKPiArCSAq IENvdW50IG9mIG91dHN0YW5kaW5nIHJlcXVlc3RzLCBmcm9tIHRoZSB0aW1lIHRoZXkgYXJlIGNv bnN0cnVjdGVkCj4gKwkgKiB0byB0aGUgbW9tZW50IHRoZXkgYXJlIHJldGlyZWQuIExvb3NlbHkg Y291cGxlZCB0byBoYXJkd2FyZS4KPiArCSAqLwo+ICsJdTMyIGluZmxpZ2h0X3NlcW5vczsKPgo+ ICAJc3BpbmxvY2tfdCBsb2NrOwo+Cj4gQEAgLTU2LDcgKzYyLDYgQEAgc3RydWN0IGludGVsX3Rp bWVsaW5lIHsKPgo+ICBzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgewo+ICAJc3RydWN0IGxpc3Rf aGVhZCBsaW5rOwo+IC0JYXRvbWljX3Qgc2Vxbm87Cj4KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1Owo+ICAJY29uc3QgY2hhciAqbmFtZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2JyZWFkY3J1bWJzLmMKPiBpbmRleCA1OTMyZTJkYzBjNmYuLjRmNGU3MDNkMWIxNCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+IEBAIC02NzYsMzEg KzY3NiwyNiBAQCB2b2lkIGludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWNhbmNlbF9mYWtlX2lycShlbmdpbmUpOwo+ICB9Cj4K PiAtdW5zaWduZWQgaW50IGludGVsX2JyZWFkY3J1bWJzX2J1c3koc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gK2Jvb2wgaW50ZWxfYnJlYWRjcnVtYnNfYnVzeShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKPiAtCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+IC0JdW5zaWduZWQgaW50IG1hc2sgPSAw Owo+IC0KPiAtCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gLQkJc3RydWN0 IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+YnJlYWRjcnVtYnM7Cj4gLQo+IC0JCXNw aW5fbG9ja19pcnEoJmItPmxvY2spOwo+ICsJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0g JmVuZ2luZS0+YnJlYWRjcnVtYnM7Cj4gKwlib29sIGJ1c3kgPSBmYWxzZTsKPgo+IC0JCWlmIChi LT5maXJzdF93YWl0KSB7Cj4gLQkJCXdha2VfdXBfcHJvY2VzcyhiLT5maXJzdF93YWl0LT50c2sp Owo+IC0JCQltYXNrIHw9IGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7Cj4gLQkJfQo+ICsJc3Bp bl9sb2NrX2lycSgmYi0+bG9jayk7Cj4KPiAtCQlpZiAoYi0+Zmlyc3Rfc2lnbmFsKSB7Cj4gLQkJ CXdha2VfdXBfcHJvY2VzcyhiLT5zaWduYWxlcik7Cj4gLQkJCW1hc2sgfD0gaW50ZWxfZW5naW5l X2ZsYWcoZW5naW5lKTsKPiAtCQl9Cj4gKwlpZiAoYi0+Zmlyc3Rfd2FpdCkgewo+ICsJCXdha2Vf dXBfcHJvY2VzcyhiLT5maXJzdF93YWl0LT50c2spOwo+ICsJCWJ1c3kgfD0gaW50ZWxfZW5naW5l X2ZsYWcoZW5naW5lKTsKPiArCX0KPgo+IC0JCXNwaW5fdW5sb2NrX2lycSgmYi0+bG9jayk7Cj4g KwlpZiAoYi0+Zmlyc3Rfc2lnbmFsKSB7Cj4gKwkJd2FrZV91cF9wcm9jZXNzKGItPnNpZ25hbGVy KTsKPiArCQlidXN5IHw9IGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7Cj4gIAl9Cj4KPiAtCXJl dHVybiBtYXNrOwo+ICsJc3Bpbl91bmxvY2tfaXJxKCZiLT5sb2NrKTsKPiArCj4gKwlyZXR1cm4g YnVzeTsKPiAgfQo+Cj4gICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IDQ2Yzk0NzQwYmU1 My4uYzRkNDY5OGY5OGU3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKPiBAQCAtMjUyLDggKzI1Miw2IEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZ2xvYmFsX3Nl cW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKQo+ICAJCWVuZ2lu ZS0+aXJxX3NlcW5vX2JhcnJpZXIoZW5naW5lKTsKPgo+ICAJR0VNX0JVR19PTihpOTE1X2dlbV9h Y3RpdmVfaXNzZXQoJmVuZ2luZS0+dGltZWxpbmUtPmxhc3RfcmVxdWVzdCkpOwo+IC0JZW5naW5l LT50aW1lbGluZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8gPSBzZXFubzsKPiAtCj4gIAllbmdpbmUt PmhhbmdjaGVjay5zZXFubyA9IHNlcW5vOwo+Cj4gIAkvKiBBZnRlciBtYW51YWxseSBhZHZhbmNp bmcgdGhlIHNlcW5vLCBmYWtlIHRoZSBpbnRlcnJ1cHQgaW4gY2FzZQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCA0MDkxYzk3YmU2ZWMuLmI5MWMyYzdlZjVh NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtNTU2 LDcgKzU1Niw3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGludGVsX2VuZ2luZV9sYXN0X3N1Ym1pdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkgKiB3dGloIHNlcmlhbGlzaW5nIHRo aXMgaGludCB3aXRoIGFueXRoaW5nLCBzbyBkb2N1bWVudCBpdCBhcwo+ICAJICogYSBoaW50IGFu ZCBub3RoaW5nIG1vcmUuCj4gIAkgKi8KPiAtCXJldHVybiBSRUFEX09OQ0UoZW5naW5lLT50aW1l bGluZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8pOwo+ICsJcmV0dXJuIFJFQURfT05DRShlbmdpbmUt PnRpbWVsaW5lLT5zZXFubyk7Cj4gIH0KPgo+ICBpbnQgaW5pdF93b3JrYXJvdW5kc19yaW5nKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gQEAgLTYzMCw3ICs2MzAsNyBAQCBzdGF0 aWMgaW5saW5lIGJvb2wgaW50ZWxfZW5naW5lX3dha2V1cChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4KPiAgdm9pZCBpbnRlbF9lbmdpbmVfcmVzZXRfYnJlYWRjcnVtYnMo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgdm9pZCBpbnRlbF9lbmdpbmVfZmlu aV9icmVhZGNydW1icyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+IC11bnNpZ25l ZCBpbnQgaW50ZWxfYnJlYWRjcnVtYnNfYnVzeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSk7Cj4gK2Jvb2wgaW50ZWxfYnJlYWRjcnVtYnNfYnVzeShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwo+Cj4gIHN0YXRpYyBpbmxpbmUgdTMyICpnZW44X2VtaXRfcGlwZV9jb250cm9s KHUzMiAqYmF0Y2gsIHUzMiBmbGFncywgdTMyIG9mZnNldCkKPiAgewo+Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=