From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 2/2] drm/i915/execlists: Always reset the context's RING registers Date: Wed, 10 Apr 2019 17:40:13 +0300 Message-ID: <871s29exf6.fsf@gaia.fi.intel.com> References: <20190408223857.7035-1-chris@chris-wilson.co.uk> <20190408223857.7035-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC7E58979D for ; Wed, 10 Apr 2019 14:40:32 +0000 (UTC) In-Reply-To: <20190408223857.7035-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 Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gRHVyaW5n IHJlc2V0LCB3ZSB0cnkgYW5kIHN0b3AgdGhlIGFjdGl2ZSByaW5nLiBUaGlzIGhhcyB0aGUgY29u c2VxdWVuY2UKPiB0aGF0IHdlIG9mdGVuIGNsb2JiZXIgdGhlIFJJTkcgcmVnaXN0ZXJzIHdpdGhp biB0aGUgY29udGV4dCBpbWFnZS4gV2hlbgo+IHdlIGZpbmQgYW4gYWN0aXZlIHJlcXVlc3QsIHdl IHVwZGF0ZSB0aGUgY29udGV4dCBpbWFnZSB0byByZXJ1biB0aGF0Cj4gcmVxdWVzdCAoaWYgaXQg d2FzIGd1aWx0eSwgd2UgcmVwbGFjZSB0aGUgaGFuZ2luZyB1c2VyIHBheWxvYWQgd2l0aAo+IE5P UHMpLiBIb3dldmVyLCB3ZSB3ZXJlIGlnbm9yaW5nIGFuIGFjdGl2ZSBjb250ZXh0IGlmIHRoZSBy ZXF1ZXN0IGhhZAo+IGNvbXBsZXRlZCwgd2l0aCB0aGUgY29uc2VxdWVuY2UgdGhhdCB0aGUgbmV4 dCBzdWJtaXNzaW9uIG9uIHRoYXQgcmVxdWVzdAo+IHdvdWxkIHN0YXJ0IHdpdGggUklOR19IRUFE PT0wIGFuZCBub3QgdGhlIHRhaWwgb2YgdGhlIHByZXZpb3VzIHJlcXVlc3QsCj4gY2F1c2luZyBh bGwgcmVxdWVzdHMgc3RpbGwgaW4gdGhlIHJpbmcgdG8gYmUgcmVydW4uIFJhcmUsIGJ1dAo+IG9j Y2FzaW9uYWxseSBzZWVuIHdpdGhpbiBDSSB3aGVyZSB3ZSB3b3VsZCBzcG90IHRoYXQgdGhlIGNv bnRleHQgc2Vxbm8KPiB3b3VsZCByZXZlcnNlIGFuZCBjb21wbGFpbiB0aGF0IHdlIHdlcmUgcmV0 aXJpbmcgYW4gaW5jb21wbGV0ZSByZXF1ZXN0Lgo+Cj4gICAgIDwwPiBbNDEyLjM5MDM1MF0gICA8 aWRsZT4tMCAgICAgICAzZC5zMiA0MDgzNzMzNTJ1cyA6IF9faTkxNV9yZXF1ZXN0X3N1Ym1pdDog cmNzMCBmZW5jZSAxZTk1YjozNjQwIC0+IGN1cnJlbnQgMzYzOAo+ICAgICA8MD4gWzQxMi4zOTAz NTBdICAgPGlkbGU+LTAgICAgICAgM2QuczIgNDA4MzczMzUzdXMgOiBfX2k5MTVfcmVxdWVzdF9z dWJtaXQ6IHJjczAgZmVuY2UgMWU5NWI6MzY0MiAtPiBjdXJyZW50IDM2MzgKPiAgICAgPDA+IFs0 MTIuMzkwMzUwXSAgIDxpZGxlPi0wICAgICAgIDNkLnMyIDQwODM3MzM1NHVzIDogX19pOTE1X3Jl cXVlc3Rfc3VibWl0OiByY3MwIGZlbmNlIDFlOTViOjM2NDQgLT4gY3VycmVudCAzNjM4Cj4gICAg IDwwPiBbNDEyLjM5MDM1MF0gICA8aWRsZT4tMCAgICAgICAzZC5zMiA0MDgzNzMzNTR1cyA6IF9f aTkxNV9yZXF1ZXN0X3N1Ym1pdDogcmNzMCBmZW5jZSAxZTk1YjozNjQ2IC0+IGN1cnJlbnQgMzYz OAo+ICAgICA8MD4gWzQxMi4zOTAzNTBdICAgPGlkbGU+LTAgICAgICAgM2QuczIgNDA4MzczMzU2 dXMgOiBfX2V4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQ6IHJjczAgaW5bMF06ICBjdHg9Mi4x LCBmZW5jZSAxZTk1YjozNjQ2IChjdXJyZW50IDM2MzgpLCBwcmlvPTQKPiAgICAgPDA+IFs0MTIu MzkwMzUwXSBpOTE1X3NlbC00NjEzICAgIDAuLi4uIDQwODM3MzM3NHVzIDogX19pOTE1X3JlcXVl c3RfY29tbWl0OiByY3MwIGZlbmNlIDFlOTViOjM2NDgKPiAgICAgPDA+IFs0MTIuMzkwMzUwXSBp OTE1X3NlbC00NjEzICAgIDBkLi4xIDQwODM3MzM3N3VzIDogcHJvY2Vzc19jc2I6IHJjczAgY3Mt aXJxIGhlYWQ9MiwgdGFpbD0zCj4gICAgIDwwPiBbNDEyLjM5MDM1MF0gaTkxNV9zZWwtNDYxMyAg ICAwZC4uMSA0MDgzNzMzNzd1cyA6IHByb2Nlc3NfY3NiOiByY3MwIGNzYlszXTogc3RhdHVzPTB4 MDAwMDAwMDE6MHgwMDAwMDAwMCwgYWN0aXZlPTB4MQo+ICAgICA8MD4gWzQxMi4zOTAzNTBdIGk5 MTVfc2VsLTQ2MTMgICAgMGQuLjEgNDA4MzczMzc4dXMgOiBfX2k5MTVfcmVxdWVzdF9zdWJtaXQ6 IHJjczAgZmVuY2UgMWU5NWI6MzY0OCAtPiBjdXJyZW50IDM2MzgKPiAgICAgPDA+IFs0MTIuMzkw MzUwXSAgIDxpZGxlPi0wICAgICAgIDMuLnMxIDQwODM3MzM3OHVzIDogZXhlY2xpc3RzX3N1Ym1p c3Npb25fdGFza2xldDogcmNzMCBhd2FrZT89MSwgYWN0aXZlPTUKPiAgICAgPDA+IFs0MTIuMzkw MzUwXSBpOTE1X3NlbC00NjEzICAgIDBkLi4xIDQwODM3MzM3OXVzIDogX19leGVjbGlzdHNfc3Vi bWlzc2lvbl90YXNrbGV0OiByY3MwIGluWzBdOiAgY3R4PTIuMiwgZmVuY2UgMWU5NWI6MzY0OCAo Y3VycmVudCAzNjM4KSwgcHJpbz00Cj4gICAgIDwwPiBbNDEyLjM5MDM1MF0gaTkxNV9zZWwtNDYx MyAgICAwLi4uLiA0MDgzNzMzODF1cyA6IGk5MTVfcmVzZXRfZW5naW5lOiByY3MwIGZsYWdzPTQK PiAgICAgPDA+IFs0MTIuMzkwMzUwXSBpOTE1X3NlbC00NjEzICAgIDAuLi4uIDQwODM3MzM4MnVz IDogZXhlY2xpc3RzX3Jlc2V0X3ByZXBhcmU6IHJjczA6IGRlcHRoPC0wCj4gICAgIDwwPiBbNDEy LjM5MDM1MF0gICA8aWRsZT4tMCAgICAgICAzZC5zMiA0MDgzNzMzOTB1cyA6IHByb2Nlc3NfY3Ni OiByY3MwIGNzLWlycSBoZWFkPTMsIHRhaWw9NAo+ICAgICA8MD4gWzQxMi4zOTAzNTBdICAgPGlk bGU+LTAgICAgICAgM2QuczIgNDA4MzczMzkwdXMgOiBwcm9jZXNzX2NzYjogcmNzMCBjc2JbNF06 IHN0YXR1cz0weDAwMDA4MDAyOjB4MDAwMDAwMDIsIGFjdGl2ZT0weDEKPiAgICAgPDA+IFs0MTIu MzkwMzUwXSAgIDxpZGxlPi0wICAgICAgIDNkLnMyIDQwODM3MzM5MHVzIDogcHJvY2Vzc19jc2I6 IHJjczAgb3V0WzBdOiBjdHg9Mi4yLCBmZW5jZSAxZTk1YjozNjQ4IChjdXJyZW50IDM2NDApLCBw cmlvPTQKPiAgICAgPDA+IFs0MTIuMzkwMzUwXSBpOTE1X3NlbC00NjEzICAgIDAuLi4uIDQwODM3 MzQwMXVzIDogaW50ZWxfZW5naW5lX3N0b3BfY3M6IHJjczAKPiAgICAgPDA+IFs0MTIuMzkwMzUw XSBpOTE1X3NlbC00NjEzICAgIDBkLi4xIDQwODM3MzQwMnVzIDogcHJvY2Vzc19jc2I6IHJjczAg Y3MtaXJxIGhlYWQ9NCwgdGFpbD00Cj4gICAgIDwwPiBbNDEyLjM5MDM1MF0gaTkxNV9zZWwtNDYx MyAgICAwLi4uLiA0MDgzNzM0MDN1cyA6IGludGVsX2dwdV9yZXNldDogZW5naW5lX21hc2s9MQo+ ICAgICA8MD4gWzQxMi4zOTAzNTBdIGk5MTVfc2VsLTQ2MTMgICAgMGQuLjEgNDA4MzczNDA4dXMg OiBleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHM6IHJjczA6cG9ydDAgZmVuY2UgMWU5NWI6 MzY0OCwgKGN1cnJlbnQgMzY0OCkKPiAgICAgPDA+IFs0MTIuMzkwMzUwXSBpOTE1X3NlbC00NjEz ICAgIDAuLi4uIDQwODM3MzQ0MnVzIDogaW50ZWxfZW5naW5lX2NhbmNlbF9zdG9wX2NzOiByY3Mw Cj4gICAgIDwwPiBbNDEyLjM5MDM1MF0gaTkxNV9zZWwtNDYxMyAgICAwLi4uLiA0MDgzNzM0NDJ1 cyA6IGV4ZWNsaXN0c19yZXNldF9maW5pc2g6IHJjczA6IGRlcHRoLT4wCj4gICAgIDwwPiBbNDEy LjM5MDM1MF0ga3NvZnRpcnEtMjYgICAgICAzLi5zLiA0MDgzNzM0NDJ1cyA6IGV4ZWNsaXN0c19z dWJtaXNzaW9uX3Rhc2tsZXQ6IHJjczAgYXdha2U/PTEsIGFjdGl2ZT0wCj4gICAgIDwwPiBbNDEy LjM5MDM1MF0ga3NvZnRpcnEtMjYgICAgICAzZC5zMSA0MDgzNzM0NDN1cyA6IHByb2Nlc3NfY3Ni OiByY3MwIGNzLWlycSBoZWFkPTUsIHRhaWw9NQo+ICAgICA8MD4gWzQxMi4zOTAzNTBdIGk5MTVf c2VsLTQ2MTMgICAgMC4uLi4gNDA4MzczNDc1dXMgOiBpOTE1X3JlcXVlc3RfcmV0aXJlOiByY3Mw IGZlbmNlIDFlOTViOjM2NDAsIGN1cnJlbnQgMzY0OAo+ICAgICA8MD4gWzQxMi4zOTAzNTBdIGk5 MTVfc2VsLTQ2MTMgICAgMC4uLi4gNDA4MzczNDc2dXMgOiBpOTE1X3JlcXVlc3RfcmV0aXJlOiBf X3JldGlyZV9lbmdpbmVfcmVxdWVzdChyY3MwKSBmZW5jZSAxZTk1YjozNjQwLCBjdXJyZW50IDM2 NDgKPiAgICAgPDA+IFs0MTIuMzkwMzUwXSBpOTE1X3NlbC00NjEzICAgIDAuLi4uIDQwODM3MzQ5 NHVzIDogX19pOTE1X3JlcXVlc3RfY29tbWl0OiByY3MwIGZlbmNlIDFlOTViOjM2NTAKPiAgICAg PDA+IFs0MTIuMzkwMzUwXSBpOTE1X3NlbC00NjEzICAgIDBkLi4xIDQwODM3MzQ5NnVzIDogcHJv Y2Vzc19jc2I6IHJjczAgY3MtaXJxIGhlYWQ9NSwgdGFpbD01Cj4gICAgIDwwPiBbNDEyLjM5MDM1 MF0gaTkxNV9zZWwtNDYxMyAgICAwZC4uMSA0MDgzNzM0OTZ1cyA6IF9faTkxNV9yZXF1ZXN0X3N1 Ym1pdDogcmNzMCBmZW5jZSAxZTk1YjozNjUwIC0+IGN1cnJlbnQgMzY0OAo+ICAgICA8MD4gWzQx Mi4zOTAzNTBdIGk5MTVfc2VsLTQ2MTMgICAgMGQuLjEgNDA4MzczNDk4dXMgOiBfX2V4ZWNsaXN0 c19zdWJtaXNzaW9uX3Rhc2tsZXQ6IHJjczAgaW5bMF06ICBjdHg9Mi4xLCBmZW5jZSAxZTk1Yjoz NjUwIChjdXJyZW50IDM2NDgpLCBwcmlvPTYKPiAgICAgPDA+IFs0MTIuMzkwMzUwXSBpOTE1X3Nl bC00NjEzICAgIDAuLi4uIDQwODM3MzUwMHVzIDogaTkxNV9yZXF1ZXN0X3JldGlyZV91cHRvOiBy Y3MwIGZlbmNlIDFlOTViOjM2NDgsIGN1cnJlbnQgMzY0OAo+ICAgICA8MD4gWzQxMi4zOTAzNTBd IGk5MTVfc2VsLTQ2MTMgICAgMC4uLi4gNDA4MzczNTAwdXMgOiBpOTE1X3JlcXVlc3RfcmV0aXJl OiByY3MwIGZlbmNlIDFlOTViOjM2NDIsIGN1cnJlbnQgMzY0OAo+ICAgICA8MD4gWzQxMi4zOTAz NTBdIGk5MTVfc2VsLTQ2MTMgICAgMC4uLi4gNDA4MzczNTAxdXMgOiBpOTE1X3JlcXVlc3RfcmV0 aXJlOiBfX3JldGlyZV9lbmdpbmVfcmVxdWVzdChyY3MwKSBmZW5jZSAxZTk1YjozNjQyLCBjdXJy ZW50IDM2NDgKPiAgICAgPDA+IFs0MTIuMzkwMzUwXSBpOTE1X3NlbC00NjEzICAgIDAuLi4uIDQw ODM3MzUxNHVzIDogaTkxNV9yZXF1ZXN0X3JldGlyZTogcmNzMCBmZW5jZSAxZTk1YjozNjQ0LCBj dXJyZW50IDM2NDgKPiAgICAgPDA+IFs0MTIuMzkwMzUwXSBpOTE1X3NlbC00NjEzICAgIDAuLi4u IDQwODM3MzUxNXVzIDogaTkxNV9yZXF1ZXN0X3JldGlyZTogX19yZXRpcmVfZW5naW5lX3JlcXVl c3QocmNzMCkgZmVuY2UgMWU5NWI6MzY0NCwgY3VycmVudCAzNjQ4Cj4gICAgIDwwPiBbNDEyLjM5 MDM1MF0gaTkxNV9zZWwtNDYxMyAgICAwLi4uLiA0MDgzNzM1Mjd1cyA6IGk5MTVfcmVxdWVzdF9y ZXRpcmU6IHJjczAgZmVuY2UgMWU5NWI6MzY0NiwgY3VycmVudCAzNjQwCj4gICAgIDwwPiBbNDEy LjM5MDM1MF0gICA8aWRsZT4tMCAgICAgICAzLi5zMSA0MDgzNzM1Njl1cyA6IGV4ZWNsaXN0c19z dWJtaXNzaW9uX3Rhc2tsZXQ6IHJjczAgYXdha2U/PTEsIGFjdGl2ZT0xCj4gICAgIDwwPiBbNDEy LjM5MDM1MF0gICA8aWRsZT4tMCAgICAgICAzZC5zMiA0MDgzNzM1Njl1cyA6IHByb2Nlc3NfY3Ni OiByY3MwIGNzLWlycSBoZWFkPTUsIHRhaWw9MQo+ICAgICA8MD4gWzQxMi4zOTAzNTBdICAgPGlk bGU+LTAgICAgICAgM2QuczIgNDA4MzczNTcwdXMgOiBwcm9jZXNzX2NzYjogcmNzMCBjc2JbMF06 IHN0YXR1cz0weDAwMDAwMDAxOjB4MDAwMDAwMDAsIGFjdGl2ZT0weDEKPiAgICAgPDA+IFs0MTIu MzkwMzUwXSAgIDxpZGxlPi0wICAgICAgIDNkLnMyIDQwODM3MzU3MHVzIDogcHJvY2Vzc19jc2I6 IHJjczAgY3NiWzFdOiBzdGF0dXM9MHgwMDAwMDAxODoweDAwMDAwMDAyLCBhY3RpdmU9MHg1Cj4g ICAgIDwwPiBbNDEyLjM5MDM1MF0gICA8aWRsZT4tMCAgICAgICAzZC5zMiA0MDgzNzM1NzB1cyA6 IHByb2Nlc3NfY3NiOiByY3MwIG91dFswXTogY3R4PTIuMSwgZmVuY2UgMWU5NWI6MzY1MCAoY3Vy cmVudCAzNjUwKSwgcHJpbz02Cj4gICAgIDwwPiBbNDEyLjM5MDM1MF0gICA8aWRsZT4tMCAgICAg ICAzZC5zMiA0MDgzNzM1NzF1cyA6IHByb2Nlc3NfY3NiOiByY3MwIGNvbXBsZXRlZCBjdHg9Mgo+ ICAgICA8MD4gWzQxMi4zOTAzNTBdIGk5MTVfc2VsLTQ2MTMgICAgMC4uLi4gNDA4MzczNjIxdXMg OiBpOTE1X3JlcXVlc3RfcmV0aXJlOiBpOTE1X3JlcXVlc3RfcmV0aXJlOjI1MyBHRU1fQlVHX09O KCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QpKQo+Cj4gdjI6IEZpeHVwIHRoZSBjYW5j ZWxsYXRpb24gcGF0aCB0byBkcmFpbiB0aGUgQ1NCIGFuZCByZXNldCB0aGUgcG9pbnRlcnMuCj4K PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K PiBDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIHwgMjM5ICsrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCAx MDcgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IGYwOTZi YzdiYmUzNS4uYjAyMGJjNTliMjMzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBA QCAtODkzLDk2ICs4OTMsNiBAQCBpbnZhbGlkYXRlX2NzYl9lbnRyaWVzKGNvbnN0IHUzMiAqZmly c3QsIGNvbnN0IHUzMiAqbGFzdCkKPiAgCWNsZmx1c2goKHZvaWQgKilsYXN0KTsKPiAgfQo+ICAK PiAtc3RhdGljIHZvaWQgcmVzZXRfY3NiX3BvaW50ZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhl Y2xpc3RzICpleGVjbGlzdHMpCj4gLXsKPiAtCWNvbnN0IHVuc2lnbmVkIGludCByZXNldF92YWx1 ZSA9IEdFTjhfQ1NCX0VOVFJJRVMgLSAxOwo+IC0KPiAtCS8qCj4gLQkgKiBBZnRlciBhIHJlc2V0 LCB0aGUgSFcgc3RhcnRzIHdyaXRpbmcgaW50byBDU0IgZW50cnkgWzBdLiBXZQo+IC0JICogdGhl cmVmb3JlIGhhdmUgdG8gc2V0IG91ciBIRUFEIHBvaW50ZXIgYmFjayBvbmUgZW50cnkgc28gdGhh dAo+IC0JICogdGhlICpmaXJzdCogZW50cnkgd2UgY2hlY2sgaXMgZW50cnkgMC4gVG8gY29tcGxp Y2F0ZSB0aGlzIGZ1cnRoZXIsCj4gLQkgKiBhcyB3ZSBkb24ndCB3YWl0IGZvciB0aGUgZmlyc3Qg aW50ZXJydXB0IGFmdGVyIHJlc2V0LCB3ZSBoYXZlIHRvCj4gLQkgKiBmYWtlIHRoZSBIVyB3cml0 ZSB0byBwb2ludCBiYWNrIHRvIHRoZSBsYXN0IGVudHJ5IHNvIHRoYXQgb3VyCj4gLQkgKiBpbmxp bmUgY29tcGFyaXNvbiBvZiBvdXIgY2FjaGVkIGhlYWQgcG9zaXRpb24gYWdhaW5zdCB0aGUgbGFz dCBIVwo+IC0JICogd3JpdGUgd29ya3MgZXZlbiBiZWZvcmUgdGhlIGZpcnN0IGludGVycnVwdC4K PiAtCSAqLwo+IC0JZXhlY2xpc3RzLT5jc2JfaGVhZCA9IHJlc2V0X3ZhbHVlOwo+IC0JV1JJVEVf T05DRSgqZXhlY2xpc3RzLT5jc2Jfd3JpdGUsIHJlc2V0X3ZhbHVlKTsKPiAtCj4gLQlpbnZhbGlk YXRlX2NzYl9lbnRyaWVzKCZleGVjbGlzdHMtPmNzYl9zdGF0dXNbMF0sCj4gLQkJCSAgICAgICAm ZXhlY2xpc3RzLT5jc2Jfc3RhdHVzW0dFTjhfQ1NCX0VOVFJJRVMgLSAxXSk7Cj4gLX0KPiAtCj4g LXN0YXRpYyB2b2lkIG5vcF9zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQo+ IC17Cj4gLQkvKiBUaGUgZHJpdmVyIGlzIHdlZGdlZDsgZG9uJ3QgcHJvY2VzcyBhbnkgbW9yZSBl dmVudHMuICovCj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jYW5jZWxfcmVxdWVz dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsK PiAtCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47Cj4gLQlzdHJ1Y3QgcmJfbm9kZSAqcmI7 Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtCUdFTV9UUkFDRSgiJXNcbiIsIGVuZ2lu ZS0+bmFtZSk7Cj4gLQo+IC0JLyoKPiAtCSAqIEJlZm9yZSB3ZSBjYWxsIGVuZ2luZS0+Y2FuY2Vs X3JlcXVlc3RzKCksIHdlIHNob3VsZCBoYXZlIGV4Y2x1c2l2ZQo+IC0JICogYWNjZXNzIHRvIHRo ZSBzdWJtaXNzaW9uIHN0YXRlLiBUaGlzIGlzIGFycmFuZ2VkIGZvciB1cyBieSB0aGUKPiAtCSAq IGNhbGxlciBkaXNhYmxpbmcgdGhlIGludGVycnVwdCBnZW5lcmF0aW9uLCB0aGUgdGFza2xldCBh bmQgb3RoZXIKPiAtCSAqIHRocmVhZHMgdGhhdCBtYXkgdGhlbiBhY2Nlc3MgdGhlIHNhbWUgc3Rh dGUsIGdpdmluZyB1cyBhIGZyZWUgaGFuZAo+IC0JICogdG8gcmVzZXQgc3RhdGUuIEhvd2V2ZXIs IHdlIHN0aWxsIG5lZWQgdG8gbGV0IGxvY2tkZXAgYmUgYXdhcmUgdGhhdAo+IC0JICogd2Uga25v dyB0aGlzIHN0YXRlIG1heSBiZSBhY2Nlc3NlZCBpbiBoYXJkaXJxIGNvbnRleHQsIHNvIHdlCj4g LQkgKiBkaXNhYmxlIHRoZSBpcnEgYXJvdW5kIHRoaXMgbWFuaXB1bGF0aW9uIGFuZCB3ZSB3YW50 IHRvIGtlZXAKPiAtCSAqIHRoZSBzcGlubG9jayBmb2N1c2VkIG9uIGl0cyBkdXRpZXMgYW5kIG5v dCBhY2NpZGVudGFsbHkgY29uZmxhdGUKPiAtCSAqIGNvdmVyYWdlIHRvIHRoZSBzdWJtaXNzaW9u J3MgaXJxIHN0YXRlLiAoU2ltaWxhcmx5LCBhbHRob3VnaCB3ZQo+IC0JICogc2hvdWxkbid0IG5l ZWQgdG8gZGlzYWJsZSBpcnEgYXJvdW5kIHRoZSBtYW5pcHVsYXRpb24gb2YgdGhlCj4gLQkgKiBz dWJtaXNzaW9uJ3MgaXJxIHN0YXRlLCB3ZSBhbHNvIHdpc2ggdG8gcmVtaW5kIG91cnNlbHZlcyB0 aGF0Cj4gLQkgKiBpdCBpcyBpcnEgc3RhdGUuKQo+IC0JICovCj4gLQlzcGluX2xvY2tfaXJxc2F2 ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gLQo+IC0JLyogQ2FuY2VsIHRoZSBy ZXF1ZXN0cyBvbiB0aGUgSFcgYW5kIGNsZWFyIHRoZSBFTFNQIHRyYWNrZXIuICovCj4gLQlleGVj bGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHMoZXhlY2xpc3RzKTsKPiAtCWV4ZWNsaXN0c191c2Vy X2VuZChleGVjbGlzdHMpOwoKQ2FuY2VsIGFsbCBhY3RpdmUgaW4gdGhlIG5ldyBfX3Jlc2V0IHNl ZW1zIHRvIGhhbmRsZSB0aGlzIG5vdy4KCj4gLQo+IC0JLyogTWFyayBhbGwgZXhlY3V0aW5nIHJl cXVlc3RzIGFzIHNraXBwZWQuICovCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmZW5naW5l LT50aW1lbGluZS5yZXF1ZXN0cywgbGluaykgewo+IC0JCWlmICghaTkxNV9yZXF1ZXN0X3NpZ25h bGVkKHJxKSkKPiAtCQkJZG1hX2ZlbmNlX3NldF9lcnJvcigmcnEtPmZlbmNlLCAtRUlPKTsKPiAt Cj4gLQkJaTkxNV9yZXF1ZXN0X21hcmtfY29tcGxldGUocnEpOwo+IC0JfQo+IC0KPiAtCS8qIEZs dXNoIHRoZSBxdWV1ZWQgcmVxdWVzdHMgdG8gdGhlIHRpbWVsaW5lIGxpc3QgKGZvciByZXRpcmlu ZykuICovCj4gLQl3aGlsZSAoKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZleGVjbGlzdHMtPnF1ZXVl KSkpIHsKPiAtCQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKPiAt CQlpbnQgaTsKPiAtCj4gLQkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1lKHJxLCBy biwgcCwgaSkgewo+IC0JCQlsaXN0X2RlbF9pbml0KCZycS0+c2NoZWQubGluayk7Cj4gLQkJCV9f aTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7Cj4gLQkJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnJxLT5m ZW5jZSwgLUVJTyk7Cj4gLQkJCWk5MTVfcmVxdWVzdF9tYXJrX2NvbXBsZXRlKHJxKTsKPiAtCQl9 Cj4gLQo+IC0JCXJiX2VyYXNlX2NhY2hlZCgmcC0+bm9kZSwgJmV4ZWNsaXN0cy0+cXVldWUpOwo+ IC0JCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKPiAtCX0KPiAtCj4gLQkvKiBSZW1haW5pbmcgX3Vu cmVhZHlfIHJlcXVlc3RzIHdpbGwgYmUgbm9wJ2VkIHdoZW4gc3VibWl0dGVkICovCj4gLQo+IC0J ZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0gSU5UX01JTjsKPiAtCWV4ZWNsaXN0cy0+ cXVldWUgPSBSQl9ST09UX0NBQ0hFRDsKPiAtCUdFTV9CVUdfT04ocG9ydF9pc3NldChleGVjbGlz dHMtPnBvcnQpKTsKPiAtCj4gLQlHRU1fQlVHX09OKF9fdGFza2xldF9pc19lbmFibGVkKCZleGVj bGlzdHMtPnRhc2tsZXQpKTsKPiAtCWV4ZWNsaXN0cy0+dGFza2xldC5mdW5jID0gbm9wX3N1Ym1p c3Npb25fdGFza2xldDsKPiAtCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdpbmUtPnRp bWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAtfQo+IC0KPiAgc3RhdGljIGlubGluZSBib29sCj4gIHJl c2V0X2luX3Byb2dyZXNzKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVj bGlzdHMpCj4gIHsKPiBAQCAtMTkwNCw3ICsxODE0LDYgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3Rz X3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAKPiAgCS8q IEFuZCBmbHVzaCBhbnkgY3VycmVudCBkaXJlY3Qgc3VibWlzc2lvbi4gKi8KPiAgCXNwaW5fbG9j a19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAtCXByb2Nlc3NfY3Ni KGVuZ2luZSk7IC8qIGRyYWluIHByZWVtcHRpb24gZXZlbnRzICovCj4gIAlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgfQo+ICAKPiBAQCAt MTkyNSwxNCArMTgzNCw0NyBAQCBzdGF0aWMgYm9vbCBscmNfcmVnc19vayhjb25zdCBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCBleGVjbGlzdHNfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0 YWxsZWQpCj4gK3N0YXRpYyB2b2lkIHJlc2V0X2NzYl9wb2ludGVycyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzKQo+ICt7Cj4gKwljb25zdCB1bnNpZ25lZCBpbnQgcmVz ZXRfdmFsdWUgPSBHRU44X0NTQl9FTlRSSUVTIC0gMTsKPiArCj4gKwkvKgo+ICsJICogQWZ0ZXIg YSByZXNldCwgdGhlIEhXIHN0YXJ0cyB3cml0aW5nIGludG8gQ1NCIGVudHJ5IFswXS4gV2UKPiAr CSAqIHRoZXJlZm9yZSBoYXZlIHRvIHNldCBvdXIgSEVBRCBwb2ludGVyIGJhY2sgb25lIGVudHJ5 IHNvIHRoYXQKPiArCSAqIHRoZSAqZmlyc3QqIGVudHJ5IHdlIGNoZWNrIGlzIGVudHJ5IDAuIFRv IGNvbXBsaWNhdGUgdGhpcyBmdXJ0aGVyLAo+ICsJICogYXMgd2UgZG9uJ3Qgd2FpdCBmb3IgdGhl IGZpcnN0IGludGVycnVwdCBhZnRlciByZXNldCwgd2UgaGF2ZSB0bwo+ICsJICogZmFrZSB0aGUg SFcgd3JpdGUgdG8gcG9pbnQgYmFjayB0byB0aGUgbGFzdCBlbnRyeSBzbyB0aGF0IG91cgo+ICsJ ICogaW5saW5lIGNvbXBhcmlzb24gb2Ygb3VyIGNhY2hlZCBoZWFkIHBvc2l0aW9uIGFnYWluc3Qg dGhlIGxhc3QgSFcKPiArCSAqIHdyaXRlIHdvcmtzIGV2ZW4gYmVmb3JlIHRoZSBmaXJzdCBpbnRl cnJ1cHQuCj4gKwkgKi8KPiArCWV4ZWNsaXN0cy0+Y3NiX2hlYWQgPSByZXNldF92YWx1ZTsKPiAr CVdSSVRFX09OQ0UoKmV4ZWNsaXN0cy0+Y3NiX3dyaXRlLCByZXNldF92YWx1ZSk7Cj4gKwo+ICsJ aW52YWxpZGF0ZV9jc2JfZW50cmllcygmZXhlY2xpc3RzLT5jc2Jfc3RhdHVzWzBdLAo+ICsJCQkg ICAgICAgJmV4ZWNsaXN0cy0+Y3NiX3N0YXR1c1tHRU44X0NTQl9FTlRSSUVTIC0gMV0pOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2V4ZWNsaXN0c19yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUsIGJvb2wgc3RhbGxlZCkKPiAgewo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9l eGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Cj4gKwlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAtCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAl1MzIgKnJlZ3M7Cj4gIAo+IC0Jc3Bpbl9sb2NrX2lycXNh dmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICsJcHJvY2Vzc19jc2IoZW5naW5l KTsgLyogZHJhaW4gcHJlZW1wdGlvbiBldmVudHMgKi8KPiArCj4gKwkvKiBGb2xsb3dpbmcgdGhl IHJlc2V0LCB3ZSBuZWVkIHRvIHJlbG9hZCB0aGUgQ1NCIHJlYWQvd3JpdGUgcG9pbnRlcnMgKi8K PiArCXJlc2V0X2NzYl9wb2ludGVycygmZW5naW5lLT5leGVjbGlzdHMpOwo+ICsKPiArCS8qCj4g KwkgKiBTYXZlIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNvbnRleHQsIGV2ZW4gaWYgd2UgY29t cGxldGVkCj4gKwkgKiBpdHMgcmVxdWVzdCwgaXQgd2FzIHN0aWxsIHJ1bm5pbmcgYXQgdGhlIHRp bWUgb2YgdGhlCj4gKwkgKiByZXNldCBhbmQgd2lsbCBoYXZlIGJlZW4gY2xvYmJlcmVkLgo+ICsJ ICovCj4gKwlpZiAoIXBvcnRfaXNzZXQoZXhlY2xpc3RzLT5wb3J0KSkKPiArCQlnb3RvIG91dF9j bGVhcjsKPiArCj4gKwljZSA9IHBvcnRfcmVxdWVzdChleGVjbGlzdHMtPnBvcnQpLT5od19jb250 ZXh0Owo+ICAKPiAgCS8qCj4gIAkgKiBDYXRjaCB1cCB3aXRoIGFueSBtaXNzZWQgY29udGV4dC1z d2l0Y2ggaW50ZXJydXB0cy4KPiBAQCAtMTk0NywxMiArMTg4OSwxMyBAQCBzdGF0aWMgdm9pZCBl eGVjbGlzdHNfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0YWxs ZWQpCj4gIAo+ICAJLyogUHVzaCBiYWNrIGFueSBpbmNvbXBsZXRlIHJlcXVlc3RzIGZvciByZXBs YXkgYWZ0ZXIgdGhlIHJlc2V0LiAqLwo+ICAJcnEgPSBfX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVl c3RzKGVuZ2luZSk7Cj4gLQo+IC0JLyogRm9sbG93aW5nIHRoZSByZXNldCwgd2UgbmVlZCB0byBy ZWxvYWQgdGhlIENTQiByZWFkL3dyaXRlIHBvaW50ZXJzICovCj4gLQlyZXNldF9jc2JfcG9pbnRl cnMoJmVuZ2luZS0+ZXhlY2xpc3RzKTsKPiAtCj4gIAlpZiAoIXJxKQo+IC0JCWdvdG8gb3V0X3Vu bG9jazsKPiArCQlnb3RvIG91dF9yZXBsYXk7Cj4gKwo+ICsJaWYgKHJxLT5od19jb250ZXh0ICE9 IGNlKSB7IC8qIGNhdWdodCBqdXN0IGJlZm9yZSBhIENTIGV2ZW50ICovCj4gKwkJcnEgPSBOVUxM OwoKU28gaXQgd2FzIGNvbXBsZXRlIGJ1dCBub3QgeWV0IHByb2Nlc3NlZC4KCj4gKwkJZ290byBv dXRfcmVwbGF5Owo+ICsJfQo+ICAKPiAgCS8qCj4gIAkgKiBJZiB0aGlzIHJlcXVlc3QgaGFzbid0 IHN0YXJ0ZWQgeWV0LCBlLmcuIGl0IGlzIHdhaXRpbmcgb24gYQo+IEBAIC0xOTY3LDcgKzE5MTAs NyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCBib29sIHN0YWxsZWQpCj4gIAkgKiBwZXJmZWN0bHkgYW5kIHdlIGRvIG5vdCBuZWVk IHRvIGZsYWcgdGhlIHJlc3VsdCBhcyBiZWluZyBlcnJvbmVvdXMuCj4gIAkgKi8KPiAgCWlmICgh aTkxNV9yZXF1ZXN0X3N0YXJ0ZWQocnEpICYmIGxyY19yZWdzX29rKHJxKSkKPiAtCQlnb3RvIG91 dF91bmxvY2s7Cj4gKwkJZ290byBvdXRfcmVwbGF5Owo+ICAKPiAgCS8qCj4gIAkgKiBJZiB0aGUg cmVxdWVzdCB3YXMgaW5ub2NlbnQsIHdlIGxlYXZlIHRoZSByZXF1ZXN0IGluIHRoZSBFTFNQCj4g QEAgLTE5ODIsNyArMTkyNSw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wgc3RhbGxlZCkKPiAgCSAqLwo+ICAJaTkxNV9y ZXNldF9yZXF1ZXN0KHJxLCBzdGFsbGVkKTsKPiAgCWlmICghc3RhbGxlZCAmJiBscmNfcmVnc19v ayhycSkpCj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCWdvdG8gb3V0X3JlcGxheTsKPiAgCj4g IAkvKgo+ICAJICogV2Ugd2FudCBhIHNpbXBsZSBjb250ZXh0ICsgcmluZyB0byBleGVjdXRlIHRo ZSBicmVhZGNydW1iIHVwZGF0ZS4KPiBAQCAtMTk5MiwyMSArMTkzNSwxMDMgQEAgc3RhdGljIHZv aWQgZXhlY2xpc3RzX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgYm9vbCBz dGFsbGVkKQo+ICAJICogZnV0dXJlIHJlcXVlc3Qgd2lsbCBiZSBhZnRlciB1c2Vyc3BhY2UgaGFz IGhhZCB0aGUgb3Bwb3J0dW5pdHkKPiAgCSAqIHRvIHJlY3JlYXRlIGl0cyBvd24gc3RhdGUuCj4g IAkgKi8KPiAtCXJlZ3MgPSBycS0+aHdfY29udGV4dC0+bHJjX3JlZ19zdGF0ZTsKPiArCXJlZ3Mg PSBjZS0+bHJjX3JlZ19zdGF0ZTsKClllcywgbG9va3MgbXVjaCBzYW5lci4gT25seSBwbGF5IHdp dGggZ3VhcmFudGVlZCBhY3RpdmUgb25lLgoKPiAgCWlmIChlbmdpbmUtPnBpbm5lZF9kZWZhdWx0 X3N0YXRlKSB7Cj4gIAkJbWVtY3B5KHJlZ3MsIC8qIHNraXAgcmVzdG9yaW5nIHRoZSB2YW5pbGxh IFBQSFdTUCAqLwo+ICAJCSAgICAgICBlbmdpbmUtPnBpbm5lZF9kZWZhdWx0X3N0YXRlICsgTFJD X1NUQVRFX1BOICogUEFHRV9TSVpFLAo+ICAJCSAgICAgICBlbmdpbmUtPmNvbnRleHRfc2l6ZSAt IFBBR0VfU0laRSk7Cj4gIAl9Cj4gKwlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUocmVncywgY2Us IGVuZ2luZSwgY2UtPnJpbmcpOwo+ICAKPiAgCS8qIFJlcnVuIHRoZSByZXF1ZXN0OyBpdHMgcGF5 bG9hZCBoYXMgYmVlbiBuZXV0ZXJlZCAoaWYgZ3VpbHR5KS4gKi8KPiAtCXJxLT5yaW5nLT5oZWFk ID0gaW50ZWxfcmluZ193cmFwKHJxLT5yaW5nLCBycS0+aGVhZCk7Cj4gLQlpbnRlbF9yaW5nX3Vw ZGF0ZV9zcGFjZShycS0+cmluZyk7Cj4gK291dF9yZXBsYXk6Cj4gKwljZS0+cmluZy0+aGVhZCA9 Cj4gKwkJcnEgPyBpbnRlbF9yaW5nX3dyYXAoY2UtPnJpbmcsIHJxLT5oZWFkKSA6IGNlLT5yaW5n LT50YWlsOwoKVGhlIGNlIGFuZCBycSByaW5nIHNob3VsZCBiZSBzYW1lIHdpdGggdGhlIHJxIHNl dC4gSSBndWVzcwp5b3UgaGFkIGEgcmVhc29ucyB0byBrZWVwIGl0IGFzIGNlLCBwZXJoYXBzIGJl Y2F1c2UgaXQgaXMKdGhlIGN1bHByaXQuCgpSZXN0IGlzIG1vc3RseSBjb2RlIG1vdmVtZW50IGFu ZCBjYW4ndCBwb2tlIGhvbGVzIGluIHRoaXMuCgpSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8 bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+CgoKPiArCWludGVsX3JpbmdfdXBkYXRlX3Nw YWNlKGNlLT5yaW5nKTsKPiArCV9fZXhlY2xpc3RzX3VwZGF0ZV9yZWdfc3RhdGUoY2UsIGVuZ2lu ZSk7Cj4gKwo+ICtvdXRfY2xlYXI6Cj4gKwlleGVjbGlzdHNfY2xlYXJfYWxsX2FjdGl2ZShleGVj bGlzdHMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBleGVjbGlzdHNfcmVzZXQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQpCj4gK3sKPiArCXVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4gKwo+ICsJR0VNX1RSQUNFKCIlc1xuIiwgZW5naW5lLT5uYW1lKTsKPiArCj4g KwlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gKwo+ ICsJX19leGVjbGlzdHNfcmVzZXQoZW5naW5lLCBzdGFsbGVkKTsKPiArCj4gKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgbm9wX3N1Ym1pc3Npb25fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCj4g K3sKPiArCS8qIFRoZSBkcml2ZXIgaXMgd2VkZ2VkOyBkb24ndCBwcm9jZXNzIGFueSBtb3JlIGV2 ZW50cy4gKi8KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NhbmNlbF9yZXF1ZXN0 cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwo+ ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsKPiArCXN0cnVjdCByYl9ub2RlICpyYjsK PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAo+IC0JZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRl KHJlZ3MsIHJxLT5od19jb250ZXh0LCBlbmdpbmUsIHJxLT5yaW5nKTsKPiAtCV9fZXhlY2xpc3Rz X3VwZGF0ZV9yZWdfc3RhdGUocnEtPmh3X2NvbnRleHQsIGVuZ2luZSk7Cj4gKwlHRU1fVFJBQ0Uo IiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+ICsKPiArCS8qCj4gKwkgKiBCZWZvcmUgd2UgY2FsbCBl bmdpbmUtPmNhbmNlbF9yZXF1ZXN0cygpLCB3ZSBzaG91bGQgaGF2ZSBleGNsdXNpdmUKPiArCSAq IGFjY2VzcyB0byB0aGUgc3VibWlzc2lvbiBzdGF0ZS4gVGhpcyBpcyBhcnJhbmdlZCBmb3IgdXMg YnkgdGhlCj4gKwkgKiBjYWxsZXIgZGlzYWJsaW5nIHRoZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbiwg dGhlIHRhc2tsZXQgYW5kIG90aGVyCj4gKwkgKiB0aHJlYWRzIHRoYXQgbWF5IHRoZW4gYWNjZXNz IHRoZSBzYW1lIHN0YXRlLCBnaXZpbmcgdXMgYSBmcmVlIGhhbmQKPiArCSAqIHRvIHJlc2V0IHN0 YXRlLiBIb3dldmVyLCB3ZSBzdGlsbCBuZWVkIHRvIGxldCBsb2NrZGVwIGJlIGF3YXJlIHRoYXQK PiArCSAqIHdlIGtub3cgdGhpcyBzdGF0ZSBtYXkgYmUgYWNjZXNzZWQgaW4gaGFyZGlycSBjb250 ZXh0LCBzbyB3ZQo+ICsJICogZGlzYWJsZSB0aGUgaXJxIGFyb3VuZCB0aGlzIG1hbmlwdWxhdGlv biBhbmQgd2Ugd2FudCB0byBrZWVwCj4gKwkgKiB0aGUgc3BpbmxvY2sgZm9jdXNlZCBvbiBpdHMg ZHV0aWVzIGFuZCBub3QgYWNjaWRlbnRhbGx5IGNvbmZsYXRlCj4gKwkgKiBjb3ZlcmFnZSB0byB0 aGUgc3VibWlzc2lvbidzIGlycSBzdGF0ZS4gKFNpbWlsYXJseSwgYWx0aG91Z2ggd2UKPiArCSAq IHNob3VsZG4ndCBuZWVkIHRvIGRpc2FibGUgaXJxIGFyb3VuZCB0aGUgbWFuaXB1bGF0aW9uIG9m IHRoZQo+ICsJICogc3VibWlzc2lvbidzIGlycSBzdGF0ZSwgd2UgYWxzbyB3aXNoIHRvIHJlbWlu ZCBvdXJzZWx2ZXMgdGhhdAo+ICsJICogaXQgaXMgaXJxIHN0YXRlLikKPiArCSAqLwo+ICsJc3Bp bl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICsKPiArCV9f ZXhlY2xpc3RzX3Jlc2V0KGVuZ2luZSwgdHJ1ZSk7Cj4gKwo+ICsJLyogTWFyayBhbGwgZXhlY3V0 aW5nIHJlcXVlc3RzIGFzIHNraXBwZWQuICovCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAm ZW5naW5lLT50aW1lbGluZS5yZXF1ZXN0cywgbGluaykgewo+ICsJCWlmICghaTkxNV9yZXF1ZXN0 X3NpZ25hbGVkKHJxKSkKPiArCQkJZG1hX2ZlbmNlX3NldF9lcnJvcigmcnEtPmZlbmNlLCAtRUlP KTsKPiArCj4gKwkJaTkxNV9yZXF1ZXN0X21hcmtfY29tcGxldGUocnEpOwo+ICsJfQo+ICsKPiAr CS8qIEZsdXNoIHRoZSBxdWV1ZWQgcmVxdWVzdHMgdG8gdGhlIHRpbWVsaW5lIGxpc3QgKGZvciBy ZXRpcmluZykuICovCj4gKwl3aGlsZSAoKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZleGVjbGlzdHMt PnF1ZXVlKSkpIHsKPiArCQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJi KTsKPiArCQlpbnQgaTsKPiArCj4gKwkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1l KHJxLCBybiwgcCwgaSkgewo+ICsJCQlsaXN0X2RlbF9pbml0KCZycS0+c2NoZWQubGluayk7Cj4g KwkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7Cj4gKwkJCWRtYV9mZW5jZV9zZXRfZXJyb3Io JnJxLT5mZW5jZSwgLUVJTyk7Cj4gKwkJCWk5MTVfcmVxdWVzdF9tYXJrX2NvbXBsZXRlKHJxKTsK PiArCQl9Cj4gKwo+ICsJCXJiX2VyYXNlX2NhY2hlZCgmcC0+bm9kZSwgJmV4ZWNsaXN0cy0+cXVl dWUpOwo+ICsJCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKPiArCX0KPiArCj4gKwkvKiBSZW1haW5p bmcgX3VucmVhZHlfIHJlcXVlc3RzIHdpbGwgYmUgbm9wJ2VkIHdoZW4gc3VibWl0dGVkICovCj4g Kwo+ICsJZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0gSU5UX01JTjsKPiArCWV4ZWNs aXN0cy0+cXVldWUgPSBSQl9ST09UX0NBQ0hFRDsKPiArCUdFTV9CVUdfT04ocG9ydF9pc3NldChl eGVjbGlzdHMtPnBvcnQpKTsKPiArCj4gKwlHRU1fQlVHX09OKF9fdGFza2xldF9pc19lbmFibGVk KCZleGVjbGlzdHMtPnRhc2tsZXQpKTsKPiArCWV4ZWNsaXN0cy0+dGFza2xldC5mdW5jID0gbm9w X3N1Ym1pc3Npb25fdGFza2xldDsKPiAgCj4gLW91dF91bmxvY2s6Cj4gIAlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2ssIGZsYWdzKTsKPiAgfQo+ICAKPiAtLSAK PiAyLjIwLjEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4