From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] RFC drm/i915: Emulate 64bit registers for residency counters Date: Thu, 7 Apr 2016 15:13:51 +0300 Message-ID: <20160407121351.GC4329@intel.com> References: <1460028253-9861-1-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id DBA016E98E for ; Thu, 7 Apr 2016 12:13:54 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1460028253-9861-1-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 Cc: intel-gfx@lists.freedesktop.org, Len Brown List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBcHIgMDcsIDIwMTYgYXQgMTI6MjQ6MTNQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFJDNiByZXNpZGVuY3kgY291bnRlcnMgYXJlIGtlcHQgYnkgdGhlIGhhcmR3YXJlIGlu IDMyYml0IHJlZ2lzdGVycywKPiB3aGljaCB0aGVuIG92ZXJmbG93IGluIGEgY291cGxlIG9mIGhv dXJzLiBJZGVhbGx5LCB3ZSB3YW50IGEgY29udGludW91cwo+IGNvdW50IG9mIHRoZSByZXNpZGVu Y3kgc2luY2UgYm9vdCBhbmQgc28gd2UgbXVzdCBtYWludGFpbiBhbiBvdmVyZmxvdwo+IGNvdW50 ZXIgb3Vyc2VsdmVzLiBVdGlsaXRpZXMgc3VjaCBhcyBwb3dlcnRvcCByZWFkIHRoZXNlIHJlZ2lz dGVycwo+IHRocm91Z2ggc3lzZnMgYW5kIHRoZSB1bmV4cGVjdGVkIHdyYXBwaW5nIHByb2R1Y2Vz IGluY29uc2lzdGVudCByZXN1bHRzCj4gYW5kIGdhcmJhZ2UgZm9yIHRoZSB1c2VyLgo+IAo+IElu IG9yZGVyIHRvIGRldGVjdCB0aGUgb3ZlcmZsb3csIHdpdGhvdXQgaW50ZXJ2ZW50aW9uLCB3ZSBr ZWVwIGEgbGlzdCBvZgo+IHRoZSBpbnRlcmVzdGluZyByZWdpc3RlcnMgYW5kIHJlYWQgdGhlbSBl dmVyeSBmZXcgc2Vjb25kcy4KPiAKPiBSRkM6IEV2ZXJ5IDE0IHNlY29uZHMhISEgSXMgaXQgd29y dGggaW1wb3NpbmcgdGhhdCB0aW1lciBvbiBldmVyeWJvZHkKPiBmb3IgdGhlIGZldyB1c2VycyBv ZiBzeXNmcz8gRG9lcyB1c2Vyc3BhY2Ugb25seSB0cnVseSBjYXJlIGFib3V0IHRoZQo+IHJlbGF0 aXZlIHZhbHVlIGFuZCBub3QgdGhlIGFic29sdXRlIHZhbHVlIHNpbmNlIGJvb3Q/IElmIHNvLCBz aG91bGQgd2UKPiBqdXN0IGxpbWl0IHRoZSB0aW1lciB0byB3aGVuIHRoZSBzeXNmcyBmaWxlIGlz IG9wZW4/IFRoYXQgd291bGQgbmVlZAo+IHVzZXJzcGFjZSB0byBrZWVwIHNhaWQgZmlsZSBvcGVu IGZvciBhcyBsb25nIGFzIGl0IHdhbnRzIGFjY3VyYXRlCj4gcmVzdWx0cy4KCkF0IGxlYXN0IEkg ZG9uJ3Qgd2FudCB0byBoYXZlIG15IFZMViB3YWtlIHVwIGV2ZXJ5IDE2IHNlY29uZHMuCgpNeSBp ZGVhIHRvIGhhbmRsZSB0aGlzIHdhcyB0byBleHBvc2UgdGhlIG1heCBjb3VudGVyIHZhbHVlIGlu IHN5c2ZzCmFuZCBsZXQgcG93ZXJ0b3AgZGVhbCB3aXRoIGl0LiBVbmZvcnR1bmF0ZWx5IHdoZW4g SSBsb29rZWQgYXQgcG93ZXJ0b3AKdGhlcmUgZGlkbid0IHNlZW0gdG8gYSBjbGVhciB3YXkgdG8g aW5mbHVlbmNlIHRoZSBwb2xsaW5nIGludGVydmFsIGZyb20KdGhlIGdmeCByZWxhdGVkIGNvZGUu Cgo+IAo+IFJlcG9ydGVkLWJ5OiBMZW4gQnJvd24gPGxlbmJAa2VybmVsLm9yZz4KPiBSZWZlcm5j ZXM6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTk0ODUyCj4g U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4g Q2M6IExlbiBCcm93biA8bGVuYkBrZXJuZWwub3JnPgo+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICB8IDEyICsrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N5c2ZzLmMgICB8IDU2ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIHwgODAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCAxNyBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBhMWY3OGYyNzVjNTUu LjMxM2QyMWVjMzliNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC02NTksNiAr NjU5LDE2IEBAIHN0cnVjdCBpbnRlbF91bmNvcmUgewo+ICAKPiAgCXN0cnVjdCBpbnRlbF91bmNv cmVfZnVuY3MgZnVuY3M7Cj4gIAo+ICsJLyogQSBmZXcgaW50ZXJlc3RpbmcgcmVnaXN0ZXJzIHRy YWNrIHZhcmlhYmxlcyBvdmVyIHRpbWUsCj4gKwkgKiBzdWNoIGFzIFJDNiByZXNpZGVuY2llcywg aW4gMzJiaXQgcmVnaXN0ZXJzIHdoaWNoIG92ZXJmbG93IHdpdGhpbgo+ICsJICogYSBtYXR0ZXIg b2Ygc2Vjb25kcyAofjE0cykuIEhvd2V2ZXIsIHdlIHdhbnQgdG8gcHJlc2VudCB0aGVtIGFzIGEK PiArCSAqIGNvbnRpbnVvdXMgcXVhbnRpdHkgdG8gdGhlIHVzZXIgYW5kIHNvIHdlIG5lZWQgdG8g a2VlcCBhbiBvdmVyZmxvdwo+ICsJICogY291bnRlci4KPiArCSAqLwo+ICsJc3RydWN0IGxpc3Rf aGVhZCByZWc2NF9lbXVfbGlzdDsKPiArCXN0cnVjdCB0aW1lcl9saXN0IHJlZzY0X2VtdV90aW1l cjsKPiArCXVuc2lnbmVkIGxvbmcgcmVnNjRfZW11X3RpbWVvdXQ7Cj4gKwo+ICAJdW5zaWduZWQg Zmlmb19jb3VudDsKPiAgCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWluczsKPiAgCj4g QEAgLTM1ODAsNiArMzU5MCw4IEBAIF9fcmF3X3dyaXRlKDY0LCBxKQo+ICAjZGVmaW5lIEk5MTVf V1JJVEVfRlcocmVnX18sIHZhbF9fKSBfX3Jhd19pOTE1X3dyaXRlMzIoZGV2X3ByaXYsIChyZWdf XyksICh2YWxfXykpCj4gICNkZWZpbmUgUE9TVElOR19SRUFEX0ZXKHJlZ19fKSAodm9pZClJOTE1 X1JFQURfRlcocmVnX18pCj4gIAo+ICt1NjQgaTkxNV9yZWFkNjRlbXUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBpOTE1X3JlZ190IHJlZyk7Cj4gKwo+ICAvKiAiQnJvYWRjYXN0 IFJHQiIgcHJvcGVydHkgKi8KPiAgI2RlZmluZSBJTlRFTF9CUk9BRENBU1RfUkdCX0FVVE8gMAo+ ICAjZGVmaW5lIElOVEVMX0JST0FEQ0FTVF9SR0JfRlVMTCAxCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c3lzZnMuYwo+IGluZGV4IDJkNTc2YjdmZjI5OS4uNjA3M2FhNGRlYWJhIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc3lzZnMuYwo+IEBAIC0zNSwxMyArMzUsMjcgQEAKPiAgI2RlZmluZSBkZXZf dG9fZHJtX21pbm9yKGQpIGRldl9nZXRfZHJ2ZGF0YSgoZCkpCj4gIAo+ICAjaWZkZWYgQ09ORklH X1BNCj4gLXN0YXRpYyB1MzIgY2FsY19yZXNpZGVuY3koc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAtCQkJICBpOTE1X3JlZ190IHJlZykKPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgY2FsY19vdmVy Zmxvd19qaWZmaWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwl1MzIgb3ZlcmZsb3df bXM7Cj4gKwo+ICsJLyogSG93IG1hbnkgdGlja3MgcGVyIG1pbGxpc2Vjb25kPyAqLwo+ICsJaWYg KElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICsJ CW92ZXJmbG93X21zID0gfjB1IC8gZGV2X3ByaXYtPmN6Y2xrX2ZyZXE7CgpOZWVkcyB0byBhY2Nv dW50IGZvciB0aGUgaGlnaCByYW5nZSBiaXQuCgo+ICsJZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZf cHJpdikpCj4gKwkJb3ZlcmZsb3dfbXMgPSB+MHUgLyAxMjAwOyAvKiB0aWNrIGV2ZXJ5IDgzM25z ICovCj4gKwllbHNlCj4gKwkJb3ZlcmZsb3dfbXMgPSB+MHUgLyA3ODA7IC8qIHRpY2sgZXZlcnkg MS4yOHVzICovCj4gKwo+ICsJcmV0dXJuIG1zZWNzX3RvX2ppZmZpZXMob3ZlcmZsb3dfbXMpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIGNhbGNfcmVzaWRlbmN5KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGk5MTVfcmVnX3QgcmVnKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAl1NjQgcmF3X3RpbWU7IC8q IDMyYiB2YWx1ZSBtYXkgb3ZlcmZsb3cgZHVyaW5nIGZpeGVkIHBvaW50IG1hdGggKi8KPiAgCXU2 NCB1bml0cyA9IDEyOFVMTCwgZGl2ID0gMTAwMDAwVUxMOwo+IC0JdTMyIHJldDsKPiAgCj4gIAlp ZiAoIWludGVsX2VuYWJsZV9yYzYoZGV2KSkKPiAgCQlyZXR1cm4gMDsKPiBAQCAtNDksMjIgKzYz LDIyIEBAIHN0YXRpYyB1MzIgY2FsY19yZXNpZGVuY3koc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAkvKiBPbiBWTFYgYW5k IENIViwgcmVzaWRlbmN5IHRpbWUgaXMgaW4gQ1ogdW5pdHMgcmF0aGVyIHRoYW4gMS4yOHVzICov Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICsJ aWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7 Cj4gIAkJdW5pdHMgPSAxOwo+ICAJCWRpdiA9IGRldl9wcml2LT5jemNsa19mcmVxOwo+ICAKPiAg CQlpZiAoSTkxNV9SRUFEKFZMVl9DT1VOVEVSX0NPTlRST0wpICYgVkxWX0NPVU5UX1JBTkdFX0hJ R0gpCj4gIAkJCXVuaXRzIDw8PSA4Owo+IC0JfSBlbHNlIGlmIChJU19CUk9YVE9OKGRldikpIHsK PiArCX0gZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKPiAgCQl1bml0cyA9IDE7Cj4g IAkJZGl2ID0gMTIwMDsJCS8qIDgzMy4zM25zICovCj4gIAl9Cj4gIAo+IC0JcmF3X3RpbWUgPSBJ OTE1X1JFQUQocmVnKSAqIHVuaXRzOwo+IC0JcmV0ID0gRElWX1JPVU5EX1VQX1VMTChyYXdfdGlt ZSwgZGl2KTsKPiArCXJhd190aW1lID0gaTkxNV9yZWFkNjRlbXUoZGV2X3ByaXYsIHJlZykgKiB1 bml0czsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gLQlyZXR1cm4g cmV0Owo+ICsKPiArCXJldHVybiBESVZfUk9VTkRfVVBfVUxMKHJhd190aW1lLCBkaXYpOwo+ICB9 Cj4gIAo+ICBzdGF0aWMgc3NpemVfdAo+IEBAIC03OCwzMiArOTIsMzIgQEAgc3RhdGljIHNzaXpl X3QKPiAgc2hvd19yYzZfbXMoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiAgewo+ICAJc3RydWN0IGRybV9taW5vciAqZG1pbm9y ID0gZGV2X2dldF9kcnZkYXRhKGtkZXYpOwo+IC0JdTMyIHJjNl9yZXNpZGVuY3kgPSBjYWxjX3Jl c2lkZW5jeShkbWlub3ItPmRldiwgR0VONl9HVF9HRlhfUkM2KTsKPiAtCXJldHVybiBzbnByaW50 ZihidWYsIFBBR0VfU0laRSwgIiV1XG4iLCByYzZfcmVzaWRlbmN5KTsKPiArCXJldHVybiBzbnBy aW50ZihidWYsIFBBR0VfU0laRSwgIiVsbHVcbiIsCj4gKwkJCWNhbGNfcmVzaWRlbmN5KGRtaW5v ci0+ZGV2LCBHRU42X0dUX0dGWF9SQzYpKTsKPiAgfQo+ICAKPiAgc3RhdGljIHNzaXplX3QKPiAg c2hvd19yYzZwX21zKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLCBjaGFyICpidWYpCj4gIHsKPiAgCXN0cnVjdCBkcm1fbWlub3IgKmRtaW5vciA9IGRl dl90b19kcm1fbWlub3Ioa2Rldik7Cj4gLQl1MzIgcmM2cF9yZXNpZGVuY3kgPSBjYWxjX3Jlc2lk ZW5jeShkbWlub3ItPmRldiwgR0VONl9HVF9HRlhfUkM2cCk7Cj4gLQlyZXR1cm4gc25wcmludGYo YnVmLCBQQUdFX1NJWkUsICIldVxuIiwgcmM2cF9yZXNpZGVuY3kpOwo+ICsJcmV0dXJuIHNucHJp bnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWxsdVxuIiwKPiArCQkJY2FsY19yZXNpZGVuY3koZG1pbm9y LT5kZXYsIEdFTjZfR1RfR0ZYX1JDNnApKTsKPiAgfQo+ICAKPiAgc3RhdGljIHNzaXplX3QKPiAg c2hvd19yYzZwcF9tcyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX21pbm9yICpkbWlub3IgPSBk ZXZfdG9fZHJtX21pbm9yKGtkZXYpOwo+IC0JdTMyIHJjNnBwX3Jlc2lkZW5jeSA9IGNhbGNfcmVz aWRlbmN5KGRtaW5vci0+ZGV2LCBHRU42X0dUX0dGWF9SQzZwcCk7Cj4gLQlyZXR1cm4gc25wcmlu dGYoYnVmLCBQQUdFX1NJWkUsICIldVxuIiwgcmM2cHBfcmVzaWRlbmN5KTsKPiArCXJldHVybiBz bnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVsbHVcbiIsCj4gKwkJCWNhbGNfcmVzaWRlbmN5KGRt aW5vci0+ZGV2LCBHRU42X0dUX0dGWF9SQzZwcCkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgc3NpemVf dAo+ICBzaG93X21lZGlhX3JjNl9tcyhzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX21pbm9yICpk bWlub3IgPSBkZXZfZ2V0X2RydmRhdGEoa2Rldik7Cj4gLQl1MzIgcmM2X3Jlc2lkZW5jeSA9IGNh bGNfcmVzaWRlbmN5KGRtaW5vci0+ZGV2LCBWTFZfR1RfTUVESUFfUkM2KTsKPiAtCXJldHVybiBz bnByaW50ZihidWYsIFBBR0VfU0laRSwgIiV1XG4iLCByYzZfcmVzaWRlbmN5KTsKPiArCXJldHVy biBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVsbHVcbiIsCj4gKwkJCWNhbGNfcmVzaWRlbmN5 KGRtaW5vci0+ZGV2LCBWTFZfR1RfTUVESUFfUkM2KSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBERVZJ Q0VfQVRUUihyYzZfZW5hYmxlLCBTX0lSVUdPLCBzaG93X3JjNl9tYXNrLCBOVUxMKTsKPiBAQCAt NTkzLDIyICs2MDcsMzAgQEAgc3RhdGljIHN0cnVjdCBiaW5fYXR0cmlidXRlIGVycm9yX3N0YXRl X2F0dHIgPSB7Cj4gIAo+ICB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwo+ICAJaW50IHJldDsKPiAgCj4gICNpZmRlZiBDT05GSUdfUE0KPiAgCWlmIChIQVNf UkM2KGRldikpIHsKPiArCQlkZXZfcHJpdi0+dW5jb3JlLnJlZzY0X2VtdV90aW1lb3V0ID0KPiAr CQkJbWluKGRldl9wcml2LT51bmNvcmUucmVnNjRfZW11X3RpbWVvdXQsCj4gKwkJCSAgICBjYWxj X292ZXJmbG93X2ppZmZpZXMoZGV2KSAvIDIpOwo+ICsJCWNhbGNfcmVzaWRlbmN5KGRldiwgR0VO Nl9HVF9HRlhfUkM2KTsKPiAgCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgmZGV2LT5wcmltYXJ5 LT5rZGV2LT5rb2JqLAo+ICAJCQkJCSZyYzZfYXR0cl9ncm91cCk7Cj4gIAkJaWYgKHJldCkKPiAg CQkJRFJNX0VSUk9SKCJSQzYgcmVzaWRlbmN5IHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7Cj4gIAl9 Cj4gIAlpZiAoSEFTX1JDNnAoZGV2KSkgewo+ICsJCWNhbGNfcmVzaWRlbmN5KGRldiwgR0VONl9H VF9HRlhfUkM2cCk7Cj4gKwkJY2FsY19yZXNpZGVuY3koZGV2LCBHRU42X0dUX0dGWF9SQzZwcCk7 Cj4gIAkJcmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwK PiAgCQkJCQkmcmM2cF9hdHRyX2dyb3VwKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlEUk1fRVJST1Io IlJDNnAgcmVzaWRlbmN5IHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7Cj4gIAl9Cj4gIAlpZiAoSVNf VkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICsJCWNhbGNfcmVzaWRl bmN5KGRldiwgVkxWX0dUX01FRElBX1JDNik7Cj4gIAkJcmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAo JmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwKPiAgCQkJCQkmbWVkaWFfcmM2X2F0dHJfZ3JvdXAp Owo+ICAJCWlmIChyZXQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VuY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBpbmRleCBm YmMxZDIxNWNhNjcuLjc0YjM0NjhjM2IxYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vu Y29yZS5jCj4gQEAgLTEyNDcsNiArMTI0Nyw3MCBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVf ZndfZG9tYWluc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlXQVJOX09OKGRldl9w cml2LT51bmNvcmUuZndfZG9tYWlucyA9PSAwKTsKPiAgfQo+ICAKPiArc3RydWN0IHJlZzY0ZW11 IHsKPiArCWk5MTVfcmVnX3QgcmVnOwo+ICsJdTY0IGxhc3Q7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFk IGxpbms7Cj4gK307Cj4gKwo+ICtzdGF0aWMgdTY0IF9fcmVhZDY0ZW11KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IHJlZzY0ZW11ICplbXUpCj4gK3sKPiArCXU2NCBy ZXN1bHQ7Cj4gKwo+ICsJcmVzdWx0ID0gSTkxNV9SRUFEKGVtdS0+cmVnKSB8IChlbXUtPmxhc3Qg JiAweGZmZmZmZmZmMDAwMDAwMDApOwo+ICsJaWYgKGxvd2VyXzMyX2JpdHMocmVzdWx0KSA8IGxv d2VyXzMyX2JpdHMoZW11LT5sYXN0KSkKPiArCQlyZXN1bHQgKz0gMXVsbCA8PCAzMjsKPiArCWVt dS0+bGFzdCA9IHJlc3VsdDsKPiArCj4gKwlyZXR1cm4gcmVzdWx0Owo+ICt9Cj4gKwo+ICt1NjQg aTkxNV9yZWFkNjRlbXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpOTE1X3Jl Z190IHJlZykKPiArewo+ICsJc3RydWN0IHJlZzY0ZW11ICplbXU7Cj4gKwo+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeShlbXUsICZkZXZfcHJpdi0+dW5jb3JlLnJlZzY0X2VtdV9saXN0LCBsaW5rKQo+ ICsJCWlmIChpOTE1X21taW9fcmVnX29mZnNldChlbXUtPnJlZykgPT0gaTkxNV9tbWlvX3JlZ19v ZmZzZXQocmVnKSkKPiArCQkJZ290byByZWFkOwo+ICsKPiArCWVtdSA9IGttYWxsb2Moc2l6ZW9m KCplbXUpLCBHRlBfS0VSTkVMKTsKPiArCWlmIChlbXUgPT0gTlVMTCkKPiArCQlyZXR1cm4gSTkx NV9SRUFEKHJlZyk7Cj4gKwo+ICsJZW11LT5yZWcgPSByZWc7Cj4gKwllbXUtPmxhc3QgPSAwOwo+ ICsJbGlzdF9hZGQoJmVtdS0+bGluaywgJmRldl9wcml2LT51bmNvcmUucmVnNjRfZW11X2xpc3Qp Owo+ICsKPiArCWlmICghdGltZXJfcGVuZGluZygmZGV2X3ByaXYtPnVuY29yZS5yZWc2NF9lbXVf dGltZXIpKQo+ICsJCW1vZF90aW1lcigmZGV2X3ByaXYtPnVuY29yZS5yZWc2NF9lbXVfdGltZXIs Cj4gKwkJCSAgamlmZmllcyArIGRldl9wcml2LT51bmNvcmUucmVnNjRfZW11X3RpbWVvdXQpOwo+ ICsKPiArcmVhZDoKPiArCXJldHVybiBfX3JlYWQ2NGVtdShkZXZfcHJpdiwgZW11KTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX3JlZzY0X2VtdV90aW1lcih1bnNpZ25lZCBs b25nIGFyZykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICopYXJnOwo+ICsJc3RydWN0IHJlZzY0ZW11ICplbXU7Cj4g Kwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShlbXUsICZkZXZfcHJpdi0+dW5jb3JlLnJlZzY0X2Vt dV9saXN0LCBsaW5rKQo+ICsJCV9fcmVhZDY0ZW11KGRldl9wcml2LCBlbXUpOwo+ICsKPiArCW1v ZF90aW1lcigmZGV2X3ByaXYtPnVuY29yZS5yZWc2NF9lbXVfdGltZXIsCj4gKwkJICBqaWZmaWVz ICsgZGV2X3ByaXYtPnVuY29yZS5yZWc2NF9lbXVfdGltZW91dCk7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIGludGVsX3VuY29yZV9pbml0X3JlZ2VtdTY0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiArewo+ICsJZGV2X3ByaXYtPnVuY29yZS5yZWc2NF9lbXVfdGltZW91dCA9 IE1BWF9KSUZGWV9PRkZTRVQ7Cj4gKwo+ICsJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT51bmNv cmUucmVnNjRfZW11X2xpc3QpOwo+ICsJc2V0dXBfdGltZXIoJmRldl9wcml2LT51bmNvcmUucmVn NjRfZW11X3RpbWVyLAo+ICsJCSAgICBpbnRlbF91bmNvcmVfcmVnNjRfZW11X3RpbWVyLAo+ICsJ CSAgICAodW5zaWduZWQgbG9uZylkZXZfcHJpdik7Cj4gK30KPiArCj4gIHZvaWQgaW50ZWxfdW5j b3JlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMTMwNiwxNiArMTM3 MCwzMiBAQCB2b2lkIGludGVsX3VuY29yZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModmdwdSk7Cj4gIAl9Cj4gIAo+ICsJaW50ZWxfdW5j b3JlX2luaXRfcmVnZW11NjQoZGV2X3ByaXYpOwo+ICsKPiAgCWk5MTVfY2hlY2tfYW5kX2NsZWFy X2ZhdWx0cyhkZXYpOwo+ICB9Cj4gICN1bmRlZiBBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1MKPiAg I3VuZGVmIEFTU0lHTl9SRUFEX01NSU9fVkZVTkNTCj4gIAo+ICtzdGF0aWMgdm9pZCBpbnRlbF91 bmNvcmVfZmluaV9yZWc2NGVtdShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCByZWc2 NGVtdSAqZW11LCAqZW47Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVtdSwgZW4s ICZpOTE1LT51bmNvcmUucmVnNjRfZW11X2xpc3QsIGxpbmspCj4gKwkJa2ZyZWUoZW11KTsKPiAr Cj4gKwlJTklUX0xJU1RfSEVBRCgmaTkxNS0+dW5jb3JlLnJlZzY0X2VtdV9saXN0KTsKPiArCWRl bF90aW1lcl9zeW5jKCZpOTE1LT51bmNvcmUucmVnNjRfZW11X3RpbWVyKTsKPiArfQo+ICsKPiAg dm9pZCBpbnRlbF91bmNvcmVfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAkv KiBQYXJhbm9pYTogbWFrZSBzdXJlIHdlIGhhdmUgZGlzYWJsZWQgZXZlcnl0aGluZyBiZWZvcmUg d2UgZXhpdC4gKi8KPiAgCWludGVsX3VuY29yZV9zYW5pdGl6ZShkZXYpOwo+ICAJaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9yZXNldChkZXYsIGZhbHNlKTsKPiArCj4gKwlpbnRlbF91bmNvcmVfZmlu aV9yZWc2NGVtdShkZXYpOwo+ICB9Cj4gIAo+ICAjZGVmaW5lIEdFTl9SQU5HRShsLCBoKSBHRU5N QVNLKGgsIGwpCj4gLS0gCj4gMi44LjAucmMzCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9U QwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK