From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH v2 1/5] drm/i915: group sideband register accessors to a new file Date: Thu, 23 May 2013 11:07:24 -0700 Message-ID: <20130523110724.50c600d5@jbarnes-desktop> References: <991d2a4ceb65b91523c277e718616b78f8c96793.1369225741.git.jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from oproxy7-pub.bluehost.com (oproxy7-pub.bluehost.com [67.222.55.9]) by gabe.freedesktop.org (Postfix) with SMTP id AFCBAE5C30 for ; Thu, 23 May 2013 11:06:12 -0700 (PDT) In-Reply-To: <991d2a4ceb65b91523c277e718616b78f8c96793.1369225741.git.jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMiBNYXkgMjAxMyAxNTozNjoxNiArMDMwMApKYW5pIE5pa3VsYSA8amFuaS5uaWt1 bGFAaW50ZWwuY29tPiB3cm90ZToKCj4gR3JvdXAgYm90aCB0aGUgSFNXL0xQVCBTQkkgaW50ZXJm YWNlIGFuZCBWTFYgSU9TRiBzaWRlYmFuZCByZWdpc3Rlcgo+IGFjY2Vzc29yIGZ1bmN0aW9ucyBp bnRvIGEgbmV3IGZpbGUuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KPiAKPiB2MjogYWxzbyBtb3Zl IGludGVsX3NiaV97cmVhZCx3cml0ZX0gKERhbmllbCkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBKYW5p IE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZSAgICAgICAgIHwgICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggICAgICAgfCAgICA4ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyAgfCAgIDk4IC0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgIHwgICAgNCAtCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMgICAgICAgfCAgIDYwIC0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3NpZGViYW5kLmMgfCAgMTgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ ICA2IGZpbGVzIGNoYW5nZWQsIDE5MiBpbnNlcnRpb25zKCspLCAxNjIgZGVsZXRpb25zKC0pCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5j Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCA5MWYzYWM2Li40MDAzNGVjIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMzYsNiArMzYsNyBAQCBpOTE1LXkgOj0gaTkxNV9kcnYu byBpOTE1X2RtYS5vIGk5MTVfaXJxLm8gXAo+ICAJICBpbnRlbF9vdmVybGF5Lm8gXAo+ICAJICBp bnRlbF9zcHJpdGUubyBcCj4gIAkgIGludGVsX29wcmVnaW9uLm8gXAo+ICsJICBpbnRlbF9zaWRl YmFuZC5vIFwKPiAgCSAgZHZvX2NoN3h4eC5vIFwKPiAgCSAgZHZvX2NoNzAxNy5vIFwKPiAgCSAg ZHZvX2l2Y2gubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNjM5ZWMwYi4uZThl ZTA1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xOTE3LDkgKzE5MTcsMTcg QEAgaW50IF9fZ2VuNl9ndF93YWl0X2Zvcl9maWZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gIAo+ICBpbnQgc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IG1ib3gsIHUzMiAqdmFsKTsKPiAgaW50IHNhbmR5YnJp ZGdlX3Bjb2RlX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggbWJv eCwgdTMyIHZhbCk7Cj4gKwo+ICsvKiBpbnRlbF9zaWRlYmFuZC5jICovCj4gIGludCB2YWxsZXl2 aWV3X3B1bml0X3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBhZGRy LCB1MzIgKnZhbCk7Cj4gIGludCB2YWxsZXl2aWV3X3B1bml0X3dyaXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTggYWRkciwgdTMyIHZhbCk7Cj4gIGludCB2YWxsZXl2aWV3 X25jX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBhZGRyLCB1MzIg KnZhbCk7Cj4gK3UzMiBpbnRlbF9kcGlvX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBpbnQgcmVnKTsKPiArdm9pZCBpbnRlbF9kcGlvX3dyaXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHJlZywgdTMyIHZhbCk7Cj4gK3UzMiBpbnRlbF9zYmlf cmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUxNiByZWcsCj4gKwkJICAg ZW51bSBpbnRlbF9zYmlfZGVzdGluYXRpb24gZGVzdGluYXRpb24pOwo+ICt2b2lkIGludGVsX3Ni aV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUxNiByZWcsIHUzMiB2 YWx1ZSwKPiArCQkgICAgIGVudW0gaW50ZWxfc2JpX2Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKTsK PiAgCj4gIGludCB2bHZfZ3B1X2ZyZXEoaW50IGRkcl9mcmVxLCBpbnQgdmFsKTsKPiAgaW50IHZs dl9mcmVxX29wY29kZShpbnQgZGRyX2ZyZXEsIGludCB2YWwpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiBpbmRleCA2ODRhYjY0Li44Nzc2N2RkIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0zODEsNDMgKzM4MSw2IEBAIHN0YXRpYyBjb25z dCBpbnRlbF9saW1pdF90IGludGVsX2xpbWl0c192bHZfZHAgPSB7Cj4gIAkuZmluZF9wbGwgPSBp bnRlbF92bHZfZmluZF9iZXN0X3BsbCwKPiAgfTsKPiAgCj4gLXUzMiBpbnRlbF9kcGlvX3JlYWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgcmVnKQo+IC17Cj4gLQlXQVJO X09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5kcGlvX2xvY2spKTsKPiAtCj4gLQlpZiAo d2FpdF9mb3JfYXRvbWljX3VzKChJOTE1X1JFQUQoRFBJT19QS1QpICYgRFBJT19CVVNZKSA9PSAw LCAxMDApKSB7Cj4gLQkJRFJNX0VSUk9SKCJEUElPIGlkbGUgd2FpdCB0aW1lZCBvdXRcbiIpOwo+ IC0JCXJldHVybiAwOwo+IC0JfQo+IC0KPiAtCUk5MTVfV1JJVEUoRFBJT19SRUcsIHJlZyk7Cj4g LQlJOTE1X1dSSVRFKERQSU9fUEtULCBEUElPX1JJRCB8IERQSU9fT1BfUkVBRCB8IERQSU9fUE9S VElEIHwKPiAtCQkgICBEUElPX0JZVEUpOwo+IC0JaWYgKHdhaXRfZm9yX2F0b21pY191cygoSTkx NV9SRUFEKERQSU9fUEtUKSAmIERQSU9fQlVTWSkgPT0gMCwgMTAwKSkgewo+IC0JCURSTV9FUlJP UigiRFBJTyByZWFkIHdhaXQgdGltZWQgb3V0XG4iKTsKPiAtCQlyZXR1cm4gMDsKPiAtCX0KPiAt Cj4gLQlyZXR1cm4gSTkxNV9SRUFEKERQSU9fREFUQSk7Cj4gLX0KPiAtCj4gLXZvaWQgaW50ZWxf ZHBpb193cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCByZWcsIHUz MiB2YWwpCj4gLXsKPiAtCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPmRwaW9f bG9jaykpOwo+IC0KPiAtCWlmICh3YWl0X2Zvcl9hdG9taWNfdXMoKEk5MTVfUkVBRChEUElPX1BL VCkgJiBEUElPX0JVU1kpID09IDAsIDEwMCkpIHsKPiAtCQlEUk1fRVJST1IoIkRQSU8gaWRsZSB3 YWl0IHRpbWVkIG91dFxuIik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAtCUk5MTVfV1JJVEUo RFBJT19EQVRBLCB2YWwpOwo+IC0JSTkxNV9XUklURShEUElPX1JFRywgcmVnKTsKPiAtCUk5MTVf V1JJVEUoRFBJT19QS1QsIERQSU9fUklEIHwgRFBJT19PUF9XUklURSB8IERQSU9fUE9SVElEIHwK PiAtCQkgICBEUElPX0JZVEUpOwo+IC0JaWYgKHdhaXRfZm9yX2F0b21pY191cygoSTkxNV9SRUFE KERQSU9fUEtUKSAmIERQSU9fQlVTWSkgPT0gMCwgMTAwKSkKPiAtCQlEUk1fRVJST1IoIkRQSU8g d3JpdGUgd2FpdCB0aW1lZCBvdXRcbiIpOwo+IC19Cj4gLQo+ICBzdGF0aWMgY29uc3QgaW50ZWxf bGltaXRfdCAqaW50ZWxfaXJvbmxha2VfbGltaXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJ CQkJCQlpbnQgcmVmY2xrKQo+ICB7Cj4gQEAgLTE0MDQsNjcgKzEzNjcsNiBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kaXNhYmxlX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVu dW0gcGlwZSBwaXBlKQo+ICAJUE9TVElOR19SRUFEKHJlZyk7Cj4gIH0KPiAgCj4gLS8qIFNCSSBh Y2Nlc3MgKi8KPiAtc3RhdGljIHZvaWQKPiAtaW50ZWxfc2JpX3dyaXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywgdTMyIHZhbHVlLAo+IC0JCWVudW0gaW50ZWxf c2JpX2Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQo+IC17Cj4gLQl1MzIgdG1wOwo+IC0KPiAtCVdB Uk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPmRwaW9fbG9jaykpOwo+IC0KPiAtCWlm ICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNCSV9DVExfU1RBVCkgJiBTQklfQlVTWSkgPT0gMCwKPiAt CQkJCTEwMCkpIHsKPiAtCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgU0JJIHRvIGJl Y29tZSByZWFkeVxuIik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAtCUk5MTVfV1JJVEUoU0JJ X0FERFIsIChyZWcgPDwgMTYpKTsKPiAtCUk5MTVfV1JJVEUoU0JJX0RBVEEsIHZhbHVlKTsKPiAt Cj4gLQlpZiAoZGVzdGluYXRpb24gPT0gU0JJX0lDTEspCj4gLQkJdG1wID0gU0JJX0NUTF9ERVNU X0lDTEsgfCBTQklfQ1RMX09QX0NSV1I7Cj4gLQllbHNlCj4gLQkJdG1wID0gU0JJX0NUTF9ERVNU X01QSFkgfCBTQklfQ1RMX09QX0lPV1I7Cj4gLQlJOTE1X1dSSVRFKFNCSV9DVExfU1RBVCwgU0JJ X0JVU1kgfCB0bXApOwo+IC0KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNCSV9DVExfU1RB VCkgJiAoU0JJX0JVU1kgfCBTQklfUkVTUE9OU0VfRkFJTCkpID09IDAsCj4gLQkJCQkxMDApKSB7 Cj4gLQkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIFNCSSB0byBjb21wbGV0ZSB3cml0 ZSB0cmFuc2FjdGlvblxuIik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMg dTMyCj4gLWludGVsX3NiaV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTE2IHJlZywKPiAtCSAgICAgICBlbnVtIGludGVsX3NiaV9kZXN0aW5hdGlvbiBkZXN0aW5hdGlv bikKPiAtewo+IC0JdTMyIHZhbHVlID0gMDsKPiAtCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgm ZGV2X3ByaXYtPmRwaW9fbG9jaykpOwo+IC0KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNC SV9DVExfU1RBVCkgJiBTQklfQlVTWSkgPT0gMCwKPiAtCQkJCTEwMCkpIHsKPiAtCQlEUk1fRVJS T1IoInRpbWVvdXQgd2FpdGluZyBmb3IgU0JJIHRvIGJlY29tZSByZWFkeVxuIik7Cj4gLQkJcmV0 dXJuIDA7Cj4gLQl9Cj4gLQo+IC0JSTkxNV9XUklURShTQklfQUREUiwgKHJlZyA8PCAxNikpOwo+ IC0KPiAtCWlmIChkZXN0aW5hdGlvbiA9PSBTQklfSUNMSykKPiAtCQl2YWx1ZSA9IFNCSV9DVExf REVTVF9JQ0xLIHwgU0JJX0NUTF9PUF9DUlJEOwo+IC0JZWxzZQo+IC0JCXZhbHVlID0gU0JJX0NU TF9ERVNUX01QSFkgfCBTQklfQ1RMX09QX0lPUkQ7Cj4gLQlJOTE1X1dSSVRFKFNCSV9DVExfU1RB VCwgdmFsdWUgfCBTQklfQlVTWSk7Cj4gLQo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoU0JJ X0NUTF9TVEFUKSAmIChTQklfQlVTWSB8IFNCSV9SRVNQT05TRV9GQUlMKSkgPT0gMCwKPiAtCQkJ CTEwMCkpIHsKPiAtCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgU0JJIHRvIGNvbXBs ZXRlIHJlYWQgdHJhbnNhY3Rpb25cbiIpOwo+IC0JCXJldHVybiAwOwo+IC0JfQo+IC0KPiAtCXJl dHVybiBJOTE1X1JFQUQoU0JJX0RBVEEpOwo+IC19Cj4gLQo+ICB2b2lkIHZsdl93YWl0X3BvcnRf cmVhZHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgcG9ydCkKPiAgewo+ ICAJdTMyIHBvcnRfbWFzazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDc1YTdm MjIuLjgzYjRmZTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC03NDMsMTAg Kzc0Myw2IEBAIGV4dGVybiBpbnQgaW50ZWxfc3ByaXRlX3NldF9jb2xvcmtleShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICBleHRlcm4gaW50IGludGVsX3Nwcml0ZV9nZXRf Y29sb3JrZXkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQkJCSAgICAg c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwo+ICAKPiAtZXh0ZXJuIHUzMiBpbnRlbF9kcGlv X3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgcmVnKTsKPiAtZXh0 ZXJuIHZvaWQgaW50ZWxfZHBpb193cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGludCByZWcsCj4gLQkJCSAgICAgdTMyIHZhbCk7Cj4gLQo+ICAvKiBQb3dlci1yZWxhdGVk IGZ1bmN0aW9ucywgbG9jYXRlZCBpbiBpbnRlbF9wbS5jICovCj4gIGV4dGVybiB2b2lkIGludGVs X2luaXRfcG0oc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIC8qIEZCQyAqLwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwo+IGluZGV4IDhhOTBjZjMuLjE5ZTdiM2UgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKPiBAQCAtNDk1NSw2NiArNDk1NSw2IEBAIGludCBzYW5keWJyaWRnZV9wY29k ZV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IG1ib3gsIHUzMiB2 YWwpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCB2bHZfcHVuaXRfcncoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcG9ydCwgdTggb3Bjb2RlLAo+IC0J CQl1OCBhZGRyLCB1MzIgKnZhbCkKPiAtewo+IC0JdTMyIGNtZCwgZGV2Zm4sIGJlLCBiYXI7Cj4g LQo+IC0JYmFyID0gMDsKPiAtCWJlID0gMHhmOwo+IC0JZGV2Zm4gPSBQQ0lfREVWRk4oMiwgMCk7 Cj4gLQo+IC0JY21kID0gKGRldmZuIDw8IElPU0ZfREVWRk5fU0hJRlQpIHwgKG9wY29kZSA8PCBJ T1NGX09QQ09ERV9TSElGVCkgfAo+IC0JCShwb3J0IDw8IElPU0ZfUE9SVF9TSElGVCkgfCAoYmUg PDwgSU9TRl9CWVRFX0VOQUJMRVNfU0hJRlQpIHwKPiAtCQkoYmFyIDw8IElPU0ZfQkFSX1NISUZU KTsKPiAtCj4gLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5ycHMuaHdfbG9j aykpOwo+IC0KPiAtCWlmIChJOTE1X1JFQUQoVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmIElPU0Zf U0JfQlVTWSkgewo+IC0JCURSTV9ERUJVR19EUklWRVIoIndhcm5pbmc6IHBjb2RlICglcykgbWFp bGJveCBhY2Nlc3MgZmFpbGVkXG4iLAo+IC0JCQkJIG9wY29kZSA9PSBQVU5JVF9PUENPREVfUkVH X1JFQUQgPwo+IC0JCQkJICJyZWFkIiA6ICJ3cml0ZSIpOwo+IC0JCXJldHVybiAtRUFHQUlOOwo+ IC0JfQo+IC0KPiAtCUk5MTVfV1JJVEUoVkxWX0lPU0ZfQUREUiwgYWRkcik7Cj4gLQlpZiAob3Bj b2RlID09IFBVTklUX09QQ09ERV9SRUdfV1JJVEUpCj4gLQkJSTkxNV9XUklURShWTFZfSU9TRl9E QVRBLCAqdmFsKTsKPiAtCUk5MTVfV1JJVEUoVkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOwo+ IC0KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJiBJ T1NGX1NCX0JVU1kpID09IDAsCj4gLQkJICAgICA1KSkgewo+IC0JCURSTV9FUlJPUigidGltZW91 dCB3YWl0aW5nIGZvciBwY29kZSAlcyAoJWQpIHRvIGZpbmlzaFxuIiwKPiAtCQkJICBvcGNvZGUg PT0gUFVOSVRfT1BDT0RFX1JFR19SRUFEID8gInJlYWQiIDogIndyaXRlIiwKPiAtCQkJICBhZGRy KTsKPiAtCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiAtCX0KPiAtCj4gLQlpZiAob3Bjb2RlID09IFBV TklUX09QQ09ERV9SRUdfUkVBRCkKPiAtCQkqdmFsID0gSTkxNV9SRUFEKFZMVl9JT1NGX0RBVEEp Owo+IC0JSTkxNV9XUklURShWTFZfSU9TRl9EQVRBLCAwKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAt fQo+IC0KPiAtaW50IHZhbGxleXZpZXdfcHVuaXRfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHU4IGFkZHIsIHUzMiAqdmFsKQo+IC17Cj4gLQlyZXR1cm4gdmx2X3B1bml0 X3J3KGRldl9wcml2LCBJT1NGX1BPUlRfUFVOSVQsIFBVTklUX09QQ09ERV9SRUdfUkVBRCwKPiAt CQkJICAgIGFkZHIsIHZhbCk7Cj4gLX0KPiAtCj4gLWludCB2YWxsZXl2aWV3X3B1bml0X3dyaXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggYWRkciwgdTMyIHZhbCkKPiAt ewo+IC0JcmV0dXJuIHZsdl9wdW5pdF9ydyhkZXZfcHJpdiwgSU9TRl9QT1JUX1BVTklULCBQVU5J VF9PUENPREVfUkVHX1dSSVRFLAo+IC0JCQkgICAgYWRkciwgJnZhbCk7Cj4gLX0KPiAtCj4gLWlu dCB2YWxsZXl2aWV3X25jX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 OCBhZGRyLCB1MzIgKnZhbCkKPiAtewo+IC0JcmV0dXJuIHZsdl9wdW5pdF9ydyhkZXZfcHJpdiwg SU9TRl9QT1JUX05DLCBQVU5JVF9PUENPREVfUkVHX1JFQUQsCj4gLQkJCSAgICBhZGRyLCB2YWwp Owo+IC19Cj4gLQo+ICBpbnQgdmx2X2dwdV9mcmVxKGludCBkZHJfZnJlcSwgaW50IHZhbCkKPiAg ewo+ICAJaW50IG11bHQsIGJhc2U7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3NpZGViYW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi44MWFmODg1Cj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMKPiBA QCAtMCwwICsxLDE4MyBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxMyBJbnRlbCBDb3Jw b3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4g KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNp bmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gKwo+ICsvKiBJ T1NGIHNpZGViYW5kICovCj4gK3N0YXRpYyBpbnQgdmx2X3B1bml0X3J3KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBvcnQsIHU4IG9wY29kZSwKPiArCQkJdTggYWRkciwg dTMyICp2YWwpCj4gK3sKPiArCXUzMiBjbWQsIGRldmZuLCBiZSwgYmFyOwo+ICsKPiArCWJhciA9 IDA7Cj4gKwliZSA9IDB4ZjsKPiArCWRldmZuID0gUENJX0RFVkZOKDIsIDApOwo+ICsKPiArCWNt ZCA9IChkZXZmbiA8PCBJT1NGX0RFVkZOX1NISUZUKSB8IChvcGNvZGUgPDwgSU9TRl9PUENPREVf U0hJRlQpIHwKPiArCQkocG9ydCA8PCBJT1NGX1BPUlRfU0hJRlQpIHwgKGJlIDw8IElPU0ZfQllU RV9FTkFCTEVTX1NISUZUKSB8Cj4gKwkJKGJhciA8PCBJT1NGX0JBUl9TSElGVCk7Cj4gKwo+ICsJ V0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spKTsKPiArCj4g KwlpZiAoSTkxNV9SRUFEKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJiBJT1NGX1NCX0JVU1kpIHsK PiArCQlEUk1fREVCVUdfRFJJVkVSKCJ3YXJuaW5nOiBwY29kZSAoJXMpIG1haWxib3ggYWNjZXNz IGZhaWxlZFxuIiwKPiArCQkJCSBvcGNvZGUgPT0gUFVOSVRfT1BDT0RFX1JFR19SRUFEID8KPiAr CQkJCSAicmVhZCIgOiAid3JpdGUiKTsKPiArCQlyZXR1cm4gLUVBR0FJTjsKPiArCX0KPiArCj4g KwlJOTE1X1dSSVRFKFZMVl9JT1NGX0FERFIsIGFkZHIpOwo+ICsJaWYgKG9wY29kZSA9PSBQVU5J VF9PUENPREVfUkVHX1dSSVRFKQo+ICsJCUk5MTVfV1JJVEUoVkxWX0lPU0ZfREFUQSwgKnZhbCk7 Cj4gKwlJOTE1X1dSSVRFKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgY21kKTsKPiArCj4gKwlpZiAo d2FpdF9mb3IoKEk5MTVfUkVBRChWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYgSU9TRl9TQl9CVVNZ KSA9PSAwLAo+ICsJCSAgICAgNSkpIHsKPiArCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBm b3IgcGNvZGUgJXMgKCVkKSB0byBmaW5pc2hcbiIsCj4gKwkJCSAgb3Bjb2RlID09IFBVTklUX09Q Q09ERV9SRUdfUkVBRCA/ICJyZWFkIiA6ICJ3cml0ZSIsCj4gKwkJCSAgYWRkcik7Cj4gKwkJcmV0 dXJuIC1FVElNRURPVVQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKG9wY29kZSA9PSBQVU5JVF9PUENPREVf UkVHX1JFQUQpCj4gKwkJKnZhbCA9IEk5MTVfUkVBRChWTFZfSU9TRl9EQVRBKTsKPiArCUk5MTVf V1JJVEUoVkxWX0lPU0ZfREFUQSwgMCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2lu dCB2YWxsZXl2aWV3X3B1bml0X3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1OCBhZGRyLCB1MzIgKnZhbCkKPiArewo+ICsJcmV0dXJuIHZsdl9wdW5pdF9ydyhkZXZfcHJp diwgSU9TRl9QT1JUX1BVTklULCBQVU5JVF9PUENPREVfUkVHX1JFQUQsCj4gKwkJCSAgICBhZGRy LCB2YWwpOwo+ICt9Cj4gKwo+ICtpbnQgdmFsbGV5dmlld19wdW5pdF93cml0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGFkZHIsIHUzMiB2YWwpCj4gK3sKPiArCXJldHVy biB2bHZfcHVuaXRfcncoZGV2X3ByaXYsIElPU0ZfUE9SVF9QVU5JVCwgUFVOSVRfT1BDT0RFX1JF R19XUklURSwKPiArCQkJICAgIGFkZHIsICZ2YWwpOwo+ICt9Cj4gKwo+ICtpbnQgdmFsbGV5dmll d19uY19yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggYWRkciwgdTMy ICp2YWwpCj4gK3sKPiArCXJldHVybiB2bHZfcHVuaXRfcncoZGV2X3ByaXYsIElPU0ZfUE9SVF9O QywgUFVOSVRfT1BDT0RFX1JFR19SRUFELAo+ICsJCQkgICAgYWRkciwgdmFsKTsKPiArfQo+ICsK PiArdTMyIGludGVsX2RwaW9fcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGludCByZWcpCj4gK3sKPiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPmRw aW9fbG9jaykpOwo+ICsKPiArCWlmICh3YWl0X2Zvcl9hdG9taWNfdXMoKEk5MTVfUkVBRChEUElP X1BLVCkgJiBEUElPX0JVU1kpID09IDAsIDEwMCkpIHsKPiArCQlEUk1fRVJST1IoIkRQSU8gaWRs ZSB3YWl0IHRpbWVkIG91dFxuIik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJSTkxNV9X UklURShEUElPX1JFRywgcmVnKTsKPiArCUk5MTVfV1JJVEUoRFBJT19QS1QsIERQSU9fUklEIHwg RFBJT19PUF9SRUFEIHwgRFBJT19QT1JUSUQgfAo+ICsJCSAgIERQSU9fQllURSk7Cj4gKwlpZiAo d2FpdF9mb3JfYXRvbWljX3VzKChJOTE1X1JFQUQoRFBJT19QS1QpICYgRFBJT19CVVNZKSA9PSAw LCAxMDApKSB7Cj4gKwkJRFJNX0VSUk9SKCJEUElPIHJlYWQgd2FpdCB0aW1lZCBvdXRcbiIpOwo+ ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCXJldHVybiBJOTE1X1JFQUQoRFBJT19EQVRBKTsK PiArfQo+ICsKPiArdm9pZCBpbnRlbF9kcGlvX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgaW50IHJlZywgdTMyIHZhbCkKPiArewo+ICsJV0FSTl9PTighbXV0ZXhfaXNf bG9ja2VkKCZkZXZfcHJpdi0+ZHBpb19sb2NrKSk7Cj4gKwo+ICsJaWYgKHdhaXRfZm9yX2F0b21p Y191cygoSTkxNV9SRUFEKERQSU9fUEtUKSAmIERQSU9fQlVTWSkgPT0gMCwgMTAwKSkgewo+ICsJ CURSTV9FUlJPUigiRFBJTyBpZGxlIHdhaXQgdGltZWQgb3V0XG4iKTsKPiArCQlyZXR1cm47Cj4g Kwl9Cj4gKwo+ICsJSTkxNV9XUklURShEUElPX0RBVEEsIHZhbCk7Cj4gKwlJOTE1X1dSSVRFKERQ SU9fUkVHLCByZWcpOwo+ICsJSTkxNV9XUklURShEUElPX1BLVCwgRFBJT19SSUQgfCBEUElPX09Q X1dSSVRFIHwgRFBJT19QT1JUSUQgfAo+ICsJCSAgIERQSU9fQllURSk7Cj4gKwlpZiAod2FpdF9m b3JfYXRvbWljX3VzKChJOTE1X1JFQUQoRFBJT19QS1QpICYgRFBJT19CVVNZKSA9PSAwLCAxMDAp KQo+ICsJCURSTV9FUlJPUigiRFBJTyB3cml0ZSB3YWl0IHRpbWVkIG91dFxuIik7Cj4gK30KPiAr Cj4gKy8qIFNCSSBhY2Nlc3MgKi8KPiArdTMyIGludGVsX3NiaV9yZWFkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywKPiArCQkgICBlbnVtIGludGVsX3NiaV9kZXN0 aW5hdGlvbiBkZXN0aW5hdGlvbikKPiArewo+ICsJdTMyIHZhbHVlID0gMDsKPiArCVdBUk5fT04o IW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPmRwaW9fbG9jaykpOwo+ICsKPiArCWlmICh3YWl0 X2ZvcigoSTkxNV9SRUFEKFNCSV9DVExfU1RBVCkgJiBTQklfQlVTWSkgPT0gMCwKPiArCQkJCTEw MCkpIHsKPiArCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgU0JJIHRvIGJlY29tZSBy ZWFkeVxuIik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJSTkxNV9XUklURShTQklfQURE UiwgKHJlZyA8PCAxNikpOwo+ICsKPiArCWlmIChkZXN0aW5hdGlvbiA9PSBTQklfSUNMSykKPiAr CQl2YWx1ZSA9IFNCSV9DVExfREVTVF9JQ0xLIHwgU0JJX0NUTF9PUF9DUlJEOwo+ICsJZWxzZQo+ ICsJCXZhbHVlID0gU0JJX0NUTF9ERVNUX01QSFkgfCBTQklfQ1RMX09QX0lPUkQ7Cj4gKwlJOTE1 X1dSSVRFKFNCSV9DVExfU1RBVCwgdmFsdWUgfCBTQklfQlVTWSk7Cj4gKwo+ICsJaWYgKHdhaXRf Zm9yKChJOTE1X1JFQUQoU0JJX0NUTF9TVEFUKSAmIChTQklfQlVTWSB8IFNCSV9SRVNQT05TRV9G QUlMKSkgPT0gMCwKPiArCQkJCTEwMCkpIHsKPiArCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGlu ZyBmb3IgU0JJIHRvIGNvbXBsZXRlIHJlYWQgdHJhbnNhY3Rpb25cbiIpOwo+ICsJCXJldHVybiAw Owo+ICsJfQo+ICsKPiArCXJldHVybiBJOTE1X1JFQUQoU0JJX0RBVEEpOwo+ICt9Cj4gKwo+ICt2 b2lkIGludGVsX3NiaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUx NiByZWcsIHUzMiB2YWx1ZSwKPiArCQkgICAgIGVudW0gaW50ZWxfc2JpX2Rlc3RpbmF0aW9uIGRl c3RpbmF0aW9uKQo+ICt7Cj4gKwl1MzIgdG1wOwo+ICsKPiArCVdBUk5fT04oIW11dGV4X2lzX2xv Y2tlZCgmZGV2X3ByaXYtPmRwaW9fbG9jaykpOwo+ICsKPiArCWlmICh3YWl0X2ZvcigoSTkxNV9S RUFEKFNCSV9DVExfU1RBVCkgJiBTQklfQlVTWSkgPT0gMCwKPiArCQkJCTEwMCkpIHsKPiArCQlE Uk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgU0JJIHRvIGJlY29tZSByZWFkeVxuIik7Cj4g KwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCUk5MTVfV1JJVEUoU0JJX0FERFIsIChyZWcgPDwgMTYp KTsKPiArCUk5MTVfV1JJVEUoU0JJX0RBVEEsIHZhbHVlKTsKPiArCj4gKwlpZiAoZGVzdGluYXRp b24gPT0gU0JJX0lDTEspCj4gKwkJdG1wID0gU0JJX0NUTF9ERVNUX0lDTEsgfCBTQklfQ1RMX09Q X0NSV1I7Cj4gKwllbHNlCj4gKwkJdG1wID0gU0JJX0NUTF9ERVNUX01QSFkgfCBTQklfQ1RMX09Q X0lPV1I7Cj4gKwlJOTE1X1dSSVRFKFNCSV9DVExfU1RBVCwgU0JJX0JVU1kgfCB0bXApOwo+ICsK PiArCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNCSV9DVExfU1RBVCkgJiAoU0JJX0JVU1kgfCBT QklfUkVTUE9OU0VfRkFJTCkpID09IDAsCj4gKwkJCQkxMDApKSB7Cj4gKwkJRFJNX0VSUk9SKCJ0 aW1lb3V0IHdhaXRpbmcgZm9yIFNCSSB0byBjb21wbGV0ZSB3cml0ZSB0cmFuc2FjdGlvblxuIik7 Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICt9CgpZYXkgZm9yIHNocmlua2luZyBpbnRlbF9kaXNwbGF5 LmMuCgpSZXZpZXdlZC1ieTogSmVzc2UgQmFybmVzIDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5vcmc+ CgotLSAKSmVzc2UgQmFybmVzLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=