From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 7/7] drm/i915: Add support for retrieving MMIO register values in Gen Perf PMU Date: Mon, 22 Jun 2015 18:06:57 +0200 Message-ID: <20150622160657.GF25769@phenom.ffwll.local> References: <1434966909-4113-1-git-send-email-sourab.gupta@intel.com> <1434966909-4113-8-git-send-email-sourab.gupta@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by gabe.freedesktop.org (Postfix) with ESMTP id 3F2BC6E1BA for ; Mon, 22 Jun 2015 09:04:11 -0700 (PDT) Received: by wiga1 with SMTP id a1so81438636wig.0 for ; Mon, 22 Jun 2015 09:04:10 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1434966909-4113-8-git-send-email-sourab.gupta@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: sourab.gupta@intel.com Cc: intel-gfx@lists.freedesktop.org, Insoo Woo , Peter Zijlstra , Jabin Wu List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdW4gMjIsIDIwMTUgYXQgMDM6MjU6MDlQTSArMDUzMCwgc291cmFiLmd1cHRhQGlu dGVsLmNvbSB3cm90ZToKPiBGcm9tOiBTb3VyYWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5j b20+Cj4gCj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJldHJpZXZpbmcgTU1JTyByZWdp c3RlciB2YWx1ZXMgdGhyb3VnaCBHZW4gUGVyZiBQTVUKPiBpbnRlcmZhY2UuIFRocm91Z2ggdGhp cyBpbnRlcmZhY2UsIG5vdyB0aGUgdXNlcnNwYWNlIGNhbiByZXF1ZXN0IHVwdG8gOCBNTUlPCj4g cmVnaXN0ZXIgdmFsdWVzIHRvIGJlIGR1bXBlZCwgYWxvbmd3aXRoIHRoZSB0aW1lc3RhbXAgdmFs dWVzIHdoaWNoIHdlcmUgZHVtcGVkCj4gZWFybGllciBhY3Jvc3MgdGhlIGJhdGNoYnVmZmVyIGJv dW5kYXJpZXMuCj4gVXNlcnNwYWNlIGNhbiBwYXNzIHRoZSBhZGRyZXNzZXMgb2YgdXB0byA4IE1N SU8gcmVnaXN0ZXJzIHRocm91Z2ggcGVyZiBhdHRyCj4gY29uZmlnLiBUaGUgY29tbWFuZHMgdG8g ZHVtcCB0aGUgdmFsdWVzIG9mIHRoZXNlIE1NSU8gcmVnaXN0ZXJzIGFyZSB0aGVuCj4gaW5zZXJ0 ZWQgaW50byB0aGUgcmluZyBhbG9uZ3dpdGggY29tbWFuZHMgdG8gZHVtcCB0aGUgdGltZXN0YW1w cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTb3VyYWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5j b20+CgpJJ20gbm90IGEgZmFuIG9mIGV4cG9zaW5nIHJhbmRvbSBtbWlvJ3MgdG8gdXNlcnNwYWNl IHRocm91Z2ggdGhpcy4gVGhlIE9BCmNvdW50ZXJzIGFyZSBraW5kYSBzcGVjaWFsIHNpbmNlIHdl IGFsc28gbmVlZCB0byBhbGxvdyBjYXB0dXJlIG1pZC1iYXRjaApmb3IgdGhlIGdsIHBlcmYgZXh0 ZW5zaW9ucyBhbmQgaGVuY2UgaW50ZXJwcmV0aW5nIHRoZSBkYXRhIG11c3QgYmUgZG9uZSBpbgpt ZXNhIChvciB3ZSdsbCBlbmQgdXAgd2l0aCBkdXBsaWNhdGVkIGNvZGUgYWNyb3NzIGtlcm5lbC91 c2Vyc3BhY2UsIHdoaWNoCnN1Y2tzKS4gQnV0IHRoZSBtbWlvIGNhcHR1cmVzIGZvciBvdGhlciBl bmdpbmVzIGRvbid0IGhhdmUgdGhpcyBpc3N1ZSwgc28KYW4gZXhwbGljaXQgbGlzdCBvZiB1c2Vm dWwgdGhpbmdzIHRvIGNhcHR1cmUgd291bGQgYmUgZ29vZC4gRXNwZWNpYWxseQpzaW5jZSB0aGlz IHdvdWxkIGFsbG93IGdlbmVyaWMgdG9vbHMgdG8gZ2V0IGludGVyZXN0aW5nIHNhbXBsZXMgZm9y IGFsbAplbmdpbmVzLgotRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYu YyB8IDExOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgfCAgIDkgKystCj4gIDMgZmlsZXMgY2hhbmdlZCwg MTE3IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IGluZGV4IGEwZTFkMTcuLjFmODYzNTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBAQCAtMTcxOCw5ICsxNzE4LDEwIEBAIHN0cnVjdCBkcm1faTkxNV90c19ub2RlX2luZm8g ewo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gIH07Cj4gIAo+IC1zdHJ1 Y3QgZHJtX2k5MTVfdHNfbm9kZSB7Cj4gK3N0cnVjdCBkcm1faTkxNV90c19tbWlvX25vZGUgewo+ ICAJLyogZW5zdXJlIHRpbWVzdGFtcCBzdGFydHMgb24gYSBxd29yZCBib3VuZGFyeSAqLwo+ICAJ c3RydWN0IGRybV9pOTE1X3RzX2RhdGEgdGltZXN0YW1wOwo+ICsJX191MzIgbW1pb1s4XTsKPiAg CXN0cnVjdCBkcm1faTkxNV90c19ub2RlX2luZm8gbm9kZV9pbmZvOwo+ICB9Owo+ICAjZW5kaWYK PiBAQCAtMjAyNCw2ICsyMDI1LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAJCXN0 cnVjdCB3b3JrX3N0cnVjdCB3b3JrX3RpbWVyOwo+ICAJCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3Jr X2V2ZW50X3N0b3A7Cj4gIAkJc3RydWN0IGNvbXBsZXRpb24gY29tcGxldGU7Cj4gKwkJdTMyIG1t aW9fbGlzdFs4XTsKPiAgCX0gZ2VuX3BtdTsKPiAgCj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIHByb2Zp bGVfY21kOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfcGVyZi5jCj4gaW5kZXggZWQwYmRjOS4u NDY1ZTgyMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfcGVyZi5jCj4gQEAgLTExMywx MCArMTEzLDEwIEBAIHZvaWQgaTkxNV9nZW5faW5zZXJ0X2NtZF90cyhzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZ2J1ZiwgdTMyIGN0eF9pZCwKPiAgCQkJZGV2X3ByaXYtPmdlbl9wbXUuYnVm ZmVyLmFkZHI7Cj4gIAl2b2lkICpkYXRhX3B0ciA9ICh1OCAqKXF1ZXVlX2hkciArIHF1ZXVlX2hk ci0+ZGF0YV9vZmZzZXQ7Cj4gIAlpbnQgZGF0YV9zaXplID0JKHF1ZXVlX2hkci0+c2l6ZV9pbl9i eXRlcyAtIHF1ZXVlX2hkci0+ZGF0YV9vZmZzZXQpOwo+IC0JdTMyIG5vZGVfb2Zmc2V0LCB0aW1l c3RhbXBfb2Zmc2V0LCBhZGRyID0gMDsKPiAtCWludCByZXQ7Cj4gKwl1MzIgbm9kZV9vZmZzZXQs IHRpbWVzdGFtcF9vZmZzZXQsIG1taW9fb2Zmc2V0LCBhZGRyID0gMDsKPiArCWludCByZXQsIGkg PSAwOwo+ICAKPiAtCXN0cnVjdCBkcm1faTkxNV90c19ub2RlICpub2RlcyA9IGRhdGFfcHRyOwo+ ICsJc3RydWN0IGRybV9pOTE1X3RzX21taW9fbm9kZSAqbm9kZXMgPSBkYXRhX3B0cjsKPiAgCWlu dCBudW1fbm9kZXMgPSAwOwo+ICAJaW50IGluZGV4ID0gMDsKPiAgCj4gQEAgLTEyNCwxMiArMTI0 LDE0IEBAIHZvaWQgaTkxNV9nZW5faW5zZXJ0X2NtZF90cyhzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZiwgdTMyIGN0eF9pZCwKPiAgCWluZGV4ID0gcXVldWVfaGRyLT5ub2RlX2NvdW50 ICUgbnVtX25vZGVzOwo+ICAKPiAgCXRpbWVzdGFtcF9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3Qg ZHJtX2k5MTVfdHNfZGF0YSwgdHNfbG93KTsKPiArCW1taW9fb2Zmc2V0ID0KPiArCQlvZmZzZXRv ZihzdHJ1Y3QgZHJtX2k5MTVfdHNfbW1pb19ub2RlLCBtbWlvKTsKPiAgCj4gIAlub2RlX29mZnNl dCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIub2Jq KSArCj4gIAkJCXF1ZXVlX2hkci0+ZGF0YV9vZmZzZXQgKwo+IC0JCQlpbmRleCAqIHNpemVvZihz dHJ1Y3QgZHJtX2k5MTVfdHNfbm9kZSk7Cj4gKwkJCWluZGV4ICogc2l6ZW9mKHN0cnVjdCBkcm1f aTkxNV90c19tbWlvX25vZGUpOwo+ICAJYWRkciA9IG5vZGVfb2Zmc2V0ICsKPiAtCQlvZmZzZXRv ZihzdHJ1Y3QgZHJtX2k5MTVfdHNfbm9kZSwgdGltZXN0YW1wKSArCj4gKwkJb2Zmc2V0b2Yoc3Ry dWN0IGRybV9pOTE1X3RzX21taW9fbm9kZSwgdGltZXN0YW1wKSArCj4gIAkJdGltZXN0YW1wX29m ZnNldDsKPiAgCj4gIAlpZiAocmluZy0+aWQgPT0gUkNTKSB7Cj4gQEAgLTE1OCw2ICsxNjAsMjcg QEAgdm9pZCBpOTE1X2dlbl9pbnNlcnRfY21kX3RzKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmLCB1MzIgY3R4X2lkLAo+ICAJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogaW1t IGhpZ2gsIG11c3QgYmUgemVybyAqLwo+ICAJCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAg CX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7Cj4gKwkJaWYgKDAgPT0gZGV2X3By aXYtPmdlbl9wbXUubW1pb19saXN0W2ldKQo+ICsJCQlicmVhazsKPiArCj4gKwkJYWRkciA9IG5v ZGVfb2Zmc2V0ICsgbW1pb19vZmZzZXQgKwo+ICsJCQlpICogc2l6ZW9mKGRldl9wcml2LT5nZW5f cG11Lm1taW9fbGlzdFtpXSk7Cj4gKwo+ICsJCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmluZywg NCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuOwo+ICsKPiArCQlpbnRlbF9yaW5nX2VtaXQo cmluZywKPiArCQkJCU1JX1NUT1JFX1JFR0lTVEVSX01FTSgxKSB8Cj4gKwkJCQlNSV9TUk1fTFJN X0dMT0JBTF9HVFQpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCBkZXZfcHJpdi0+Z2VuX3Bt dS5tbWlvX2xpc3RbaV0pOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCBhZGRyKTsKPiArCQlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Cj4gKwkJaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOwo+ICsJfQo+ICsKPiAgCW5vZGVfaW5mbyA9ICZub2Rlc1tpbmRleF0ubm9kZV9pbmZvOwo+ ICAJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm5vZGVfaW5mby0+cmVxLAo+ICAJCQkJcmluZy0+ b3V0c3RhbmRpbmdfbGF6eV9yZXF1ZXN0KTsKPiBAQCAtMzE0LDExICszMzcsMTEgQEAgc3RhdGlj IHZvaWQgaW5pdF9nZW5fcG11X2J1Zl9xdWV1ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGZvcndhcmRfb25lX2dlbl9wbXVfc2FtcGxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJCXN0cnVjdCBkcm1faTkx NV90c19ub2RlICpub2RlKQo+ICsJCQkJc3RydWN0IGRybV9pOTE1X3RzX21taW9fbm9kZSAqbm9k ZSkKPiAgewo+ICAJc3RydWN0IHBlcmZfc2FtcGxlX2RhdGEgZGF0YTsKPiAgCXN0cnVjdCBwZXJm X2V2ZW50ICpldmVudCA9IGRldl9wcml2LT5nZW5fcG11LmV4Y2x1c2l2ZV9ldmVudDsKPiAtCWlu dCBzbmFwc2hvdF9zaXplID0gc2l6ZW9mKHN0cnVjdCBkcm1faTkxNV90c191c2Vybm9kZSk7Cj4g KwlpbnQgc25hcHNob3Rfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfdHNfbW1pb191c2Vy bm9kZSk7Cj4gIAlzdHJ1Y3QgcGVyZl9yYXdfcmVjb3JkIHJhdzsKPiAgCj4gIAlwZXJmX3NhbXBs ZV9kYXRhX2luaXQoJmRhdGEsIDAsIGV2ZW50LT5ody5sYXN0X3BlcmlvZCk7Cj4gQEAgLTMzOCwx MSArMzYxLDExIEBAIHZvaWQgaTkxNV9nZW5fcG11X3dhaXRfZ3B1KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCXN0cnVjdCBkcm1faTkxNV90c19xdWV1ZV9oZWFkZXIgKmhk ciA9Cj4gIAkJKHN0cnVjdCBkcm1faTkxNV90c19xdWV1ZV9oZWFkZXIgKikKPiAgCQlkZXZfcHJp di0+Z2VuX3BtdS5idWZmZXIuYWRkcjsKPiAtCXN0cnVjdCBkcm1faTkxNV90c19ub2RlICpmaXJz dF9ub2RlLCAqbm9kZTsKPiArCXN0cnVjdCBkcm1faTkxNV90c19tbWlvX25vZGUgKmZpcnN0X25v ZGUsICpub2RlOwo+ICAJaW50IGhlYWQsIHRhaWwsIG51bV9ub2RlcywgcmV0Owo+ICAJc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gIAo+IC0JZmlyc3Rfbm9kZSA9IChzdHJ1Y3Qg ZHJtX2k5MTVfdHNfbm9kZSAqKQo+ICsJZmlyc3Rfbm9kZSA9IChzdHJ1Y3QgZHJtX2k5MTVfdHNf bW1pb19ub2RlICopCj4gIAkJCSgoY2hhciAqKWhkciArIGhkci0+ZGF0YV9vZmZzZXQpOwo+ICAJ bnVtX25vZGVzID0gKGhkci0+c2l6ZV9pbl9ieXRlcyAtIGhkci0+ZGF0YV9vZmZzZXQpIC8KPiAg CQkJc2l6ZW9mKCpub2RlKTsKPiBAQCAtMzc1LDE0ICszOTgsMTQgQEAgdm9pZCBmb3J3YXJkX2dl bl9wbXVfc25hcHNob3RzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfdHNfcXVldWVfaGVhZGVyICpoZHIgPQo+ICAJCShzdHJ1Y3QgZHJtX2k5MTVf dHNfcXVldWVfaGVhZGVyICopCj4gIAkJZGV2X3ByaXYtPmdlbl9wbXUuYnVmZmVyLmFkZHI7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfdHNfbm9kZSAqZmlyc3Rfbm9kZSwgKm5vZGU7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfdHNfbW1pb19ub2RlICpmaXJzdF9ub2RlLCAqbm9kZTsKPiAgCWludCBoZWFkLCB0 YWlsLCBudW1fbm9kZXMsIHJldDsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx Owo+ICAKPiAgCWlmIChkZXZfcHJpdi0+Z2VuX3BtdS5ldmVudF9hY3RpdmUgPT0gZmFsc2UpCj4g IAkJcmV0dXJuOwo+ICAKPiAtCWZpcnN0X25vZGUgPSAoc3RydWN0IGRybV9pOTE1X3RzX25vZGUg KikKPiArCWZpcnN0X25vZGUgPSAoc3RydWN0IGRybV9pOTE1X3RzX21taW9fbm9kZSAqKQo+ICAJ CQkoKGNoYXIgKiloZHIgKyBoZHItPmRhdGFfb2Zmc2V0KTsKPiAgCW51bV9ub2RlcyA9IChoZHIt PnNpemVfaW5fYnl0ZXMgLSBoZHItPmRhdGFfb2Zmc2V0KSAvCj4gIAkJCXNpemVvZigqbm9kZSk7 Cj4gQEAgLTQyMSwxMSArNDQ0LDExIEBAIHZvaWQgaTkxNV9nZW5fcG11X3N0b3Bfd29ya19mbihz dHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKPiAgCXN0cnVjdCBkcm1faTkxNV90c19xdWV1ZV9o ZWFkZXIgKmhkciA9Cj4gIAkJKHN0cnVjdCBkcm1faTkxNV90c19xdWV1ZV9oZWFkZXIgKikKPiAg CQlkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIuYWRkcjsKPiAtCXN0cnVjdCBkcm1faTkxNV90c19u b2RlICpmaXJzdF9ub2RlLCAqbm9kZTsKPiArCXN0cnVjdCBkcm1faTkxNV90c19tbWlvX25vZGUg KmZpcnN0X25vZGUsICpub2RlOwo+ICAJaW50IGhlYWQsIHRhaWwsIG51bV9ub2RlcywgcmV0Owo+ ICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gIAo+IC0JZmlyc3Rfbm9kZSA9 IChzdHJ1Y3QgZHJtX2k5MTVfdHNfbm9kZSAqKQo+ICsJZmlyc3Rfbm9kZSA9IChzdHJ1Y3QgZHJt X2k5MTVfdHNfbW1pb19ub2RlICopCj4gIAkJCSgoY2hhciAqKWhkciArIGhkci0+ZGF0YV9vZmZz ZXQpOwo+ICAJbnVtX25vZGVzID0gKGhkci0+c2l6ZV9pbl9ieXRlcyAtIGhkci0+ZGF0YV9vZmZz ZXQpIC8KPiAgCQkJc2l6ZW9mKCpub2RlKTsKPiBAQCAtMTQ2NywxNSArMTQ5MCw4NSBAQCBzdGF0 aWMgaW50IGk5MTVfb2FfZXZlbnRfZXZlbnRfaWR4KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkK PiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGk5MTVfZ2VuX3BtdV9jb3B5X2F0 dHIoc3RydWN0IGRybV9pOTE1X2dlbl9wbXVfYXR0ciBfX3VzZXIgKnVhdHRyLAo+ICsJCQkgICAg IHN0cnVjdCBkcm1faTkxNV9nZW5fcG11X2F0dHIgKmF0dHIpCj4gK3sKPiArCXUzMiBzaXplOwo+ ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsIHVhdHRyLCBJ OTE1X0dFTl9QTVVfQVRUUl9TSVpFX1ZFUjApKQo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsKPiAr CS8qCj4gKwkgKiB6ZXJvIHRoZSBmdWxsIHN0cnVjdHVyZSwgc28gdGhhdCBhIHNob3J0IGNvcHkg d2lsbCBiZSBuaWNlLgo+ICsJICovCj4gKwltZW1zZXQoYXR0ciwgMCwgc2l6ZW9mKCphdHRyKSk7 Cj4gKwo+ICsJcmV0ID0gZ2V0X3VzZXIoc2l6ZSwgJnVhdHRyLT5zaXplKTsKPiArCWlmIChyZXQp Cj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlpZiAoc2l6ZSA+IFBBR0VfU0laRSkJLyogc2lsbHkg bGFyZ2UgKi8KPiArCQlnb3RvIGVycl9zaXplOwo+ICsKPiArCWlmIChzaXplIDwgSTkxNV9HRU5f UE1VX0FUVFJfU0laRV9WRVIwKQo+ICsJCWdvdG8gZXJyX3NpemU7Cj4gKwo+ICsJLyoKPiArCSAq IElmIHdlJ3JlIGhhbmRlZCBhIGJpZ2dlciBzdHJ1Y3QgdGhhbiB3ZSBrbm93IG9mLAo+ICsJICog ZW5zdXJlIGFsbCB0aGUgdW5rbm93biBiaXRzIGFyZSAwIC0gaS5lLiBuZXcKPiArCSAqIHVzZXIt c3BhY2UgZG9lcyBub3QgcmVseSBvbiBhbnkga2VybmVsIGZlYXR1cmUKPiArCSAqIGV4dGVuc2lv bnMgd2UgZG9udCBrbm93IGFib3V0IHlldC4KPiArCSAqLwo+ICsJaWYgKHNpemUgPiBzaXplb2Yo KmF0dHIpKSB7Cj4gKwkJdW5zaWduZWQgY2hhciBfX3VzZXIgKmFkZHI7Cj4gKwkJdW5zaWduZWQg Y2hhciBfX3VzZXIgKmVuZDsKPiArCQl1bnNpZ25lZCBjaGFyIHZhbDsKPiArCj4gKwkJYWRkciA9 ICh2b2lkIF9fdXNlciAqKXVhdHRyICsgc2l6ZW9mKCphdHRyKTsKPiArCQllbmQgID0gKHZvaWQg X191c2VyICopdWF0dHIgKyBzaXplOwo+ICsKPiArCQlmb3IgKDsgYWRkciA8IGVuZDsgYWRkcisr KSB7Cj4gKwkJCXJldCA9IGdldF91c2VyKHZhbCwgYWRkcik7Cj4gKwkJCWlmIChyZXQpCj4gKwkJ CQlyZXR1cm4gcmV0Owo+ICsJCQlpZiAodmFsKQo+ICsJCQkJZ290byBlcnJfc2l6ZTsKPiArCQl9 Cj4gKwkJc2l6ZSA9IHNpemVvZigqYXR0cik7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29weV9mcm9t X3VzZXIoYXR0ciwgdWF0dHIsIHNpemUpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gLUVGQVVM VDsKPiArCj4gK291dDoKPiArCXJldHVybiByZXQ7Cj4gKwo+ICtlcnJfc2l6ZToKPiArCXB1dF91 c2VyKHNpemVvZigqYXR0ciksICZ1YXR0ci0+c2l6ZSk7Cj4gKwlyZXQgPSAtRTJCSUc7Cj4gKwln b3RvIG91dDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBpOTE1X2dlbl9ldmVudF9pbml0KHN0cnVj dCBwZXJmX2V2ZW50ICpldmVudCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0KPiAgCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCpkZXZfcHJpdiks IGdlbl9wbXUucG11KTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW5fcG11X2F0dHIgZ2VuX2F0dHI7 Cj4gIAlpbnQgcmV0ID0gMDsKPiAgCj4gIAlpZiAoZXZlbnQtPmF0dHIudHlwZSAhPSBldmVudC0+ cG11LT50eXBlKQo+ICAJCXJldHVybiAtRU5PRU5UOwo+ICAKPiArCXJldCA9IGk5MTVfZ2VuX3Bt dV9jb3B5X2F0dHIodG9fdXNlcl9wdHIoZXZlbnQtPmF0dHIuY29uZmlnKSwKPiArCQkJCSZnZW5f YXR0cik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJbWVtY3B5KGRldl9w cml2LT5nZW5fcG11Lm1taW9fbGlzdCwgZ2VuX2F0dHIubW1pb19saXN0LAo+ICsJCQlzaXplb2Yo ZGV2X3ByaXYtPmdlbl9wbXUubW1pb19saXN0KSk7Cj4gKwo+ICAJLyogVG8gYXZvaWQgdGhlIGNv bXBsZXhpdHkgb2YgaGF2aW5nIHRvIGFjY3VyYXRlbHkgZmlsdGVyCj4gIAkgKiBkYXRhIGFuZCBt YXJzaGFsIHRvIHRoZSBhcHByb3ByaWF0ZSBjbGllbnQKPiAgCSAqIHdlIGN1cnJlbnRseSBvbmx5 IGFsbG93IGV4Y2x1c2l2ZSBhY2Nlc3MgKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gaW5kZXggYTdkYTQy MS4uOGQ0ZGVlYyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiAr KysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiBAQCAtODAsNiArODAsNyBAQAo+ICAj ZGVmaW5lIEk5MTVfT0FfTUVUUklDU19TRVRfTUFYCQkJSTkxNV9PQV9NRVRSSUNTX1NFVF9TQU1Q TEVSX0JBTEFOQ0UKPiAgCj4gICNkZWZpbmUgSTkxNV9PQV9BVFRSX1NJWkVfVkVSMAkJMzIgIC8q IHNpemVvZiBmaXJzdCBwdWJsaXNoZWQgc3RydWN0ICovCj4gKyNkZWZpbmUgSTkxNV9HRU5fUE1V X0FUVFJfU0laRV9WRVIwCTM2ICAvKiBzaXplb2YgZmlyc3QgcHVibGlzaGVkIHN0cnVjdCAqLwo+ ICAKPiAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X29hX2F0dHIgewo+ICAJX191MzIgc2l6ZTsK PiBAQCAtOTcsNiArOTgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X29hX2F0dHIgewo+ ICAJX19yZXNlcnZlZF8yOjMxOwo+ICB9IGRybV9pOTE1X29hX2F0dHJfdDsKPiAgCj4gK3N0cnVj dCBkcm1faTkxNV9nZW5fcG11X2F0dHIgewo+ICsJX191MzIgc2l6ZTsKPiArCV9fdTMyIG1taW9f bGlzdFs4XTsKPiArfTsKPiArCj4gIC8qIEhlYWRlciBmb3IgUEVSRl9SRUNPUkRfREVWSUNFIHR5 cGUgZXZlbnRzICovCj4gIHR5cGVkZWYgc3RydWN0IF9kcm1faTkxNV9vYV9ldmVudF9oZWFkZXIg ewo+ICAJX191MzIgdHlwZTsKPiBAQCAtMTQzLDkgKzE0OSwxMCBAQCBzdHJ1Y3QgZHJtX2k5MTVf dHNfZGF0YSB7Cj4gIAlfX3UzMiB0c19oaWdoOwo+ICB9Owo+ICAKPiAtc3RydWN0IGRybV9pOTE1 X3RzX3VzZXJub2RlIHsKPiArc3RydWN0IGRybV9pOTE1X3RzX21taW9fdXNlcm5vZGUgewo+ICAJ LyogZW5zdXJlIHRpbWVzdGFtcCBzdGFydHMgb24gYSBxd29yZCBib3VuZGFyeSAqLwo+ICAJc3Ry dWN0IGRybV9pOTE1X3RzX2RhdGEgdGltZXN0YW1wOwo+ICsJX191MzIgbW1pb1s4XTsKPiAgCXN0 cnVjdCBkcm1faTkxNV90c19ub2RlX2Zvb3RlciBub2RlX2luZm87Cj4gIH07Cj4gIAo+IC0tIAo+ IDEuOC41LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBv cmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==