From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH] drm/i915/vlv: modeset_global_* for VLV v4 Date: Mon, 4 Nov 2013 09:41:05 -0800 Message-ID: <20131104094105.1345a07a@jbarnes-desktop> References: <1383333216-1428-1-git-send-email-jbarnes@virtuousgeek.org> <1383334096-890-1-git-send-email-jbarnes@virtuousgeek.org> <20131101195244.GG13047@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from qproxy1-pub.mail.unifiedlayer.com (qproxy1-pub.mail.unifiedlayer.com [173.254.64.10]) by gabe.freedesktop.org (Postfix) with SMTP id 3D82CEE912 for ; Mon, 4 Nov 2013 09:40:24 -0800 (PST) In-Reply-To: <20131101195244.GG13047@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: Ville =?UTF-8?B?U3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAxIE5vdiAyMDEzIDIxOjUyOjQ0ICswMjAwClZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgoKPiBPbiBGcmksIE5vdiAwMSwgMjAxMyBh dCAxMjoyODoxNlBNIC0wNzAwLCBKZXNzZSBCYXJuZXMgd3JvdGU6Cj4gPiBPbiBWTFYvQllULCB3 ZSBjYW4gYWRqdXN0IHRoZSBDRGNsayBmcmVxdWVuY3kgdXAgb3IgZG93biBiYXNlZCBvbiB0aGUK PiA+IG1heCBwaXhlbCBjbG9jayB3ZSBuZWVkIHRvIGRyaXZlLiAgTG93ZXJpbmcgaXQgY2FuIHNh dmUgcG93ZXIsIHdoaWxlCj4gPiByYWlzaW5nIGl0IGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IGhp Z2ggcmVzb2x1dGlvbi4KPiA+IAo+ID4gQWRkIHByb3BlciBtb2Rlc2V0X2dsb2JhbF9waXBlcyBh bmQgbW9kZXNldF9nbG9iYWxfcmVzb3VyY2VzIHN1cHBvcnQgdG8KPiA+IHBlcmZvcm0gdGhpcyBh ZGp1c3RtZW50IGFzIG5lY2Vzc2FyeS4KPiA+IAo+ID4gdjI6IHVzZSBwdW5pdCBpbnRlcmZhY2Ug Zm9yIDMyMCBhbmQgMjY2IE1IeiBDRGNsayBhZGp1c3RtZW50cyAoVmlsbGUpCj4gPiB2MzogcmVz ZXQgR01CVVMgZGl2aWRlcnMgdG9vLCBzaW5jZSB3ZSBjaGFuZ2VkIENEY2xrIChWaWxsZSkKPiA+ IHY0OiBqdW1wIHRvIGhpZ2hlc3Qgdm9sdGFnZSB3aGVuIGdvaW5nIHRvIDQwME1IeiBDRGNsayAo SmVzc2UpCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEplc3NlIEJhcm5lcyA8amJhcm5lc0B2aXJ0 dW91c2dlZWsub3JnPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCAgICAgIHwgICA3ICsrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMgICAgIHwgICA0IC0KPiA+ICAzIGZpbGVzIGNoYW5nZWQs IDE4MyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPiA+IGluZGV4IDczN2Q4YTMuLjhhMzRkY2MgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCj4gPiBAQCAtMzYzLDYgKzM2MywxMSBAQAo+ID4gICNkZWZpbmUgUFVOSVRf T1BDT0RFX1JFR19SRUFECQkJNgo+ID4gICNkZWZpbmUgUFVOSVRfT1BDT0RFX1JFR19XUklURQkJ CTcKPiA+ICAKPiA+ICsjZGVmaW5lIFBVTklUX1JFR19EU1BGUkVRCQkJMHgzNgo+ID4gKyNkZWZp bmUgICBEU1BGUkVRU1RBVF9TSElGVAkJCTMwCj4gPiArI2RlZmluZSAgIERTUEZSRVFTVEFUX01B U0sJCQkoMHgzIDw8IERTUEZSRVFTVEFUX1NISUZUKQo+ID4gKyNkZWZpbmUgICBEU1BGUkVRR1VB Ul9TSElGVAkJCTE0Cj4gPiArI2RlZmluZSAgIERTUEZSRVFHVUFSX01BU0sJCQkoMHgzIDw8IERT UEZSRVFHVUFSX1NISUZUKQo+ID4gICNkZWZpbmUgUFVOSVRfUkVHX1BXUkdUX0NUUkwJCQkweDYw Cj4gPiAgI2RlZmluZSBQVU5JVF9SRUdfUFdSR1RfU1RBVFVTCQkJMHg2MQo+ID4gICNkZWZpbmUJ ICBQVU5JVF9DTEtfR0FURQkJCTEKPiA+IEBAIC0xNDUzLDYgKzE0NTgsOCBAQAo+ID4gICNkZWZp bmUgICBDWkNMS19GUkVRX01BU0sJMHhmCj4gPiAgI2RlZmluZSBHTUJVU0ZSRVFfVkxWCQkoVkxW X0RJU1BMQVlfQkFTRSArIDB4NjUxMCkKPiA+ICAKPiA+ICsjZGVmaW5lIENaQ0xLX0NEQ0xLX0ZS RVFfUkFUSU8JKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY1MDgpCj4gPiArCj4gCj4gSXQncyBhbHJl YWR5IHRoZXJlIGEgZmV3IGxpbmVzIGFib3ZlLCB3LyBmYW5jeSBuYW1lcyBmb3IgdGhlIGJpdHMg YW5kIAo+IGV2ZXJ5dGhpbmcuCgpPaCBtaXNzZWQgdGhhdCBvYnZpb3VzbHksIHdpbGwgZHJvcCBh bmQgdXNlIHRoZSBleGlzdGluZyBiaXRzLiAgU2hvdWxkCmhhdmUga25vd24gc2luY2UgZ21idXMg dXNlcyB0aGlzLi4uCgo+IAo+ID4gIC8qCj4gPiAgICogUGFsZXR0ZSByZWdzCj4gPiAgICovCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBpbmRleCBmYWE3NTQ4Li4yZmYy YTI5IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC0z ODk0LDYgKzM4OTQsMTc3IEBAIHN0YXRpYyB2b2lkIGk5eHhfcGZpdF9lbmFibGUoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpCj4gPiAgCUk5MTVfV1JJVEUoQkNMUlBBVChjcnRjLT5waXBlKSwgMCk7 Cj4gPiAgfQo+ID4gIAo+ID4gK3N0YXRpYyBpbnQgdmFsbGV5dmlld19nZXRfdmNvKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICt7Cj4gPiArCWludCB2Y287Cj4gPiArCj4g PiArCXN3aXRjaCAoZGV2X3ByaXYtPm1lbV9mcmVxKSB7Cj4gPiArCWRlZmF1bHQ6Cj4gPiArCWNh c2UgODAwOgo+ID4gKwkJdmNvID0gODAwOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWNhc2UgMTA2NjoK PiA+ICsJCXZjbyA9IDE2MDA7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSAxMzMzOgo+ID4gKwkJ dmNvID0gMjAwMDsKPiA+ICsJCWJyZWFrOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiB2Y287 Cj4gPiArfQo+IAo+IFdlIGhhdmUgdHdvIHdheXMgdG8gZ2V0IHRoaXMgaW5mb3JtYXRpb24gbm93 LiBUaGUgb3RoZXIgaXMgaW4gaW50ZWxfaTJjLmMuCj4gTWF5YmUgd2Ugc2hvdWxkIHVuaWZ5IGEg Yml0LgoKSSdsbCB0YWtlIGEgbG9vayB3aGVuIEkgZml4IHVwIHRoZSByZWdpc3RlciBkZWZpbmUg ZHVwbGljYXRpb24uCgo+IAo+ID4gKwo+ID4gKy8qIEFkanVzdCBDRGNsayBkaXZpZGVycyB0byBh bGxvdyBoaWdoIHJlcyBvciBzYXZlIHBvd2VyIGlmIHBvc3NpYmxlICovCj4gPiArc3RhdGljIHZv aWQgdmFsbGV5dmlld19zZXRfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNkY2xr KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKPiA+ICsJdTMyIHZhbCwgY21kOwo+ID4gKwo+ID4gKwlpZiAoY2RjbGsgPj0g MzIwKSAvKiBqdW1wIHRvIGhpZ2hlc3Qgdm9sdGFnZSBmb3IgNDAwTUh6IHRvbyAqLwo+ID4gKwkJ Y21kID0gMjsKPiA+ICsJZWxzZSBpZiAoY2RjbGsgPT0gMjY2KQo+ID4gKwkJY21kID0gMTsKPiA+ ICsJZWxzZQo+ID4gKwkJY21kID0gMDsKPiA+ICsKPiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnJwcy5od19sb2NrKTsKPiA+ICsJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklU X1JFR19EU1BGUkVRKTsKPiA+ICsJdmFsICY9IH5EU1BGUkVRR1VBUl9NQVNLOwo+ID4gKwl2YWwg fD0gKGNtZCA8PCBEU1BGUkVRR1VBUl9TSElGVCk7Cj4gPiArCXZsdl9wdW5pdF93cml0ZShkZXZf cHJpdiwgUFVOSVRfUkVHX0RTUEZSRVEsIHZhbCk7Cj4gPiArCWlmICh3YWl0X2Zvcigodmx2X3B1 bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BGUkVRKSAmCj4gPiArCQkgICAgICBEU1BG UkVRU1RBVF9NQVNLKSA9PSAoY21kIDw8IERTUEZSRVFTVEFUX1NISUZUKSwKPiA+ICsJCSAgICAg NTApKSB7Cj4gPiArCQlEUk1fRVJST1IoInRpbWVkIG91dCB3YWl0aW5nIGZvciBDRGNsayBjaGFu Z2VcbiIpOwo+ID4gKwl9Cj4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2Nr KTsKPiA+ICsKPiA+ICsJaWYgKGNkY2xrID09IDQwMCkgewo+ID4gKwkJdTMyIGRpdmlkZXIsIHZj bzsKPiA+ICsKPiA+ICsJCXZjbyA9IHZhbGxleXZpZXdfZ2V0X3ZjbyhkZXZfcHJpdik7Cj4gPiAr CQlkaXZpZGVyID0gKHZjbyAqIDEwKSAvIGNkY2xrOwo+ID4gKwkJZGl2aWRlciA9ICgoZGl2aWRl ciAqIDIpIC8gMTApIC0gMTsKPiAKPiBXaHkgdGhlICoxMC8xMD8KPiAKPiBKdXN0IHRoaXMgc2hv dWxkIGRvOgo+IGRpdmlkZXIgPSAodmNvIDw8IDEpIC8gY2RjbGsgLSAxCgpZZWFoICoyIHdvdWxk IGJlIHN1ZmZpY2llbnQgaGVyZS4gIEkganVzdCBsaWtlZCB0aGUgMTAgc2luY2UgSSB1c2VkIGl0 CmVsc2V3aGVyZSBmb3IgZml4ZWQgcG9pbnQgYml0cy4KCj4gCj4gPiArCj4gPiArCQltdXRleF9s b2NrKCZkZXZfcHJpdi0+ZHBpb19sb2NrKTsKPiA+ICsJCS8qIGFkanVzdCBjZGNsayBkaXZpZGVy ICovCj4gPiArCQl2YWwgPSB2bHZfY2NrX3JlYWQoZGV2X3ByaXYsIDB4NmIpOwo+ID4gKwkJdmFs ICY9IH4weGY7Cj4gPiArCQl2YWwgfD0gZGl2aWRlcjsKPiA+ICsJCXZsdl9jY2tfd3JpdGUoZGV2 X3ByaXYsIDB4NmIsIHZhbCk7Cj4gPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcGlvX2xv Y2spOwo+ID4gKwl9Cj4gPiArCj4gPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5kcGlvX2xvY2sp Owo+ID4gKwkvKiBhZGp1c3Qgc2VsZi1yZWZyZXNoIGV4aXQgbGF0ZW5jeSB2YWx1ZSAqLwo+ID4g Kwl2YWwgPSB2bHZfYnVuaXRfcmVhZChkZXZfcHJpdiwgMHgxMSk7Cj4gPiArCXZhbCAmPSB+MHg3 ZjsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogRm9yIGhpZ2ggYmFuZHdpZHRoIGNvbmZpZ3MsIHdl IHNldCBhIGhpZ2hlciBsYXRlbmN5IGluIHRoZSBidW5pdAo+ID4gKwkgKiBzbyB0aGF0IHRoZSBj b3JlIGRpc3BsYXkgZmV0Y2ggaGFwcGVucyBpbiB0aW1lIHRvIGF2b2lkIHVuZGVycnVucy4KPiA+ ICsJICovCj4gPiArCWlmIChjZGNsayA9PSA0MDApCj4gPiArCQl2YWwgfD0gMHgxMjsKPiA+ICsJ ZWxzZQo+ID4gKwkJdmFsIHw9IDB4YzsKPiA+ICsJdmx2X2J1bml0X3dyaXRlKGRldl9wcml2LCAw eDExLCB2YWwpOwo+ID4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5kcGlvX2xvY2spOwo+ID4g Kwo+ID4gKwkvKiBTaW5jZSB3ZSBjaGFuZ2VkIHRoZSBDRGNsaywgd2UgbmVlZCB0byB1cGRhdGUg dGhlIEdNQlVTRlJFUSB0b28gKi8KPiA+ICsJaW50ZWxfaTJjX3Jlc2V0KGRldik7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyBpbnQgdmFsbGV5dmlld19jdXJfY2RjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gK3sKPiA+ICsJaW50IGN1cl9jZGNsaywgdmNvOwo+ID4g KwlpbnQgZGl2aWRlcjsKPiA+ICsKPiA+ICsJdmNvID0gdmFsbGV5dmlld19nZXRfdmNvKGRldl9w cml2KTsKPiA+ICsKPiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRwaW9fbG9jayk7Cj4gPiAr CWRpdmlkZXIgPSB2bHZfY2NrX3JlYWQoZGV2X3ByaXYsIDB4NmIpOwo+ID4gKwltdXRleF91bmxv Y2soJmRldl9wcml2LT5kcGlvX2xvY2spOwo+ID4gKwo+ID4gKwlkaXZpZGVyICY9IDB4ZjsKPiA+ ICsJZGl2aWRlciA9ICgoZGl2aWRlciArIDEpICogMTApIC8gMjsKPiA+ICsKPiA+ICsJY3VyX2Nk Y2xrID0gKHZjbyAqIDEwKSAvIGRpdmlkZXI7Cj4gCj4gQWdhaW4gKjEwLzEwIHNlZW1zIHVzZWxl c3MuCj4gSnVzdCAnY3VyX2NkY2xrID0gKHZjbyA8PCAxKSAvIChkaXZpZGVyICsgMSknCj4gCj4g QnV0IGFnYWluIHdlIGhhdmUgYSBiaXQgb2YgY29kZSBkdXBsaWNhdGlvbiB3LyBpbnRlbF9pMmMu Yy4KClllYWggYW5kIHRoZSByZWcgY29udGVudHMgc2hvdWxkIG1hdGNoIHRoZSBDQ0sgcmVhZCwg c28gdGhlc2UgY291bGQgYmUKdW5pZmllZC4KCj4gCj4gPiArCj4gPiArCXJldHVybiBjdXJfY2Rj bGs7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgdmFsbGV5dmlld19jYWxjX2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICsJCQkJIGludCBtYXhfcGl4Y2xr KQo+ID4gK3sKPiA+ICsJaW50IGN1cl9jZGNsazsKPiA+ICsKPiA+ICsJY3VyX2NkY2xrID0gdmFs bGV5dmlld19jdXJfY2RjbGsoZGV2X3ByaXYpOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBSZWFs bHkgb25seSBhIGZldyBjYXNlcyB0byBkZWFsIHdpdGgsIGFzIG9ubHkgNCBDRGNsa3MgYXJlIHN1 cHBvcnRlZDoKPiA+ICsJICogICAyMDBNSHoKPiA+ICsJICogICAyNjdNSHoKPiA+ICsJICogICAz MjBNSHoKPiA+ICsJICogICA0MDBNSHoKPiA+ICsJICogU28gd2UgY2hlY2sgdG8gc2VlIHdoZXRo ZXIgd2UncmUgYWJvdmUgOTAlIG9mIHRoZSBsb3dlciBiaW4gYW5kCj4gPiArCSAqIGFkanVzdCBp ZiBuZWVkZWQuCj4gPiArCSAqLwo+ID4gKwlpZiAobWF4X3BpeGNsayA+IDI4ODAwMCkgewo+ID4g KwkJcmV0dXJuIDQwMDsKPiA+ICsJfSBlbHNlIGlmIChtYXhfcGl4Y2xrIDw9IDI4ODAwMCAmJiBt YXhfcGl4Y2xrID4gMjQwMzAwKSB7Cj4gCj4gQXNzdW1pbmcgdGhlIDI2NyBtaHogaXMgaW4gZmFj dCAyNjYuNjY2Li4uIHRoYXQgd291bGQgYmUganVzdCAyNDAwMDAuCj4gCj4gQWxzbyB0aGUgPD0g Y2hlY2sgaXMgdXNlbGVzcy4gSnVzdCA+IGlzIGVub3VnaC4KCkkganVzdCBsaWtlZCBkb2N1bWVu dGluZyB0aGUgcmFuZ2UuICBCdXQgSSBjYW4gZHJvcCB0aGF0LgoKPiAKPiA+ICsJCXJldHVybiAz MjA7Cj4gPiArCX0gZWxzZQo+ID4gKwkJcmV0dXJuIDI2NjsKPiA+ICsJLyogTG9va3MgbGlrZSB0 aGUgMjAwTUh6IENEY2xrIGZyZXEgZG9lc24ndCB3b3JrIG9uIHNvbWUgY29uZmlncyAqLwo+IAo+ IFRvbyBiYWQuIEJ1dCBJIGd1ZXNzIHdlIGp1c3QgbmVlZCB0byBhdm9pZCBpdCBmb3Igbm93LiBN YXliZSB3ZSBjYW4gZ2V0Cj4gaXQgd29ya2luZyBsYXRlci4KClllYWggaWYgd2UgY2FuIGRvIHNv bWUgbW9yZSB0ZXN0aW5nIGFuZCBmaWd1cmUgb3V0IHRoZSBsaW1pdGF0aW9ucyB3ZQptaWdodCBi ZSBhYmxlIHRvIGVuYWJsZSBpdC4gIFNob3VsZCBzYXZlIGEgYml0IG1vcmUgcG93ZXIsIGVzcGVj aWFsbHkKaWYgd2UgY2FuIGRyb3AgdGhlIHZvbHRhZ2UgZXZlbiBmdXJ0aGVyIGZvciB0aGUgMjAw TUh6IGNsb2NrLgoKPiAKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBpbnRlbF9tb2RlX21h eF9waXhjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gK3sKPiA+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gPiArCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjOwo+ID4gKwlpbnQgbWF4X3BpeGNsayA9IDA7Cj4gPiArCj4gPiAr CWxpc3RfZm9yX2VhY2hfZW50cnkoaW50ZWxfY3J0YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19s aXN0LAo+ID4gKwkJCSAgICBiYXNlLmhlYWQpIHsKPiA+ICsJCWlmICghaW50ZWxfY3J0Yy0+YmFz ZS5lbmFibGVkKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJaWYgKG1heF9waXhjbGsg PCBpbnRlbF9jcnRjLT5jb25maWcuYWRqdXN0ZWRfbW9kZS5jbG9jaykKPiA+ICsJCQltYXhfcGl4 Y2xrID0gaW50ZWxfY3J0Yy0+Y29uZmlnLmFkanVzdGVkX21vZGUuY2xvY2s7Cj4gCj4gU2hvdWxk IGJlIC5jcnRjX2Nsb2NrIGFjdHVhbGx5LgoKd2lsbCBmaXguCgo+IAo+ID4gKwl9Cj4gPiArCj4g PiArCXJldHVybiBtYXhfcGl4Y2xrOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCB2YWxs ZXl2aWV3X21vZGVzZXRfZ2xvYmFsX3BpcGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAr CQkJCQkgICAgdW5zaWduZWQgKnByZXBhcmVfcGlwZXMpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiA+ICsJaW50IG1heF9waXhjbGsgPSBpbnRlbF9tb2Rl X21heF9waXhjbGsoZGV2X3ByaXYpOwo+ID4gKwlpbnQgY3VyX2NkY2xrID0gdmFsbGV5dmlld19j dXJfY2RjbGsoZGV2X3ByaXYpOwo+ID4gKwo+ID4gKwlpZiAodmFsbGV5dmlld19jYWxjX2NkY2xr KGRldl9wcml2LCBtYXhfcGl4Y2xrKSA9PSBjdXJfY2RjbGspCj4gPiArCQlyZXR1cm47Cj4gPiAr Cj4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoaW50ZWxfY3J0YywgJmRldi0+bW9kZV9jb25maWcu Y3J0Y19saXN0LAo+ID4gKwkJCSAgICBiYXNlLmhlYWQpCj4gPiArCQlpZiAoaW50ZWxfY3J0Yy0+ YmFzZS5lbmFibGVkKQo+IAo+IGludGVsX2NydGMtPmFjdGl2ZSBtYXliZT8gQWx0aG91Z2ggSSBn dWVzcyB0aGV5IHNob3VsZCBiZSB0aGUgc2FtZSB3aGVuCj4gdGhpcyBnZXRzIGNhbGxlZC4KCkVp dGhlciB3b3JrcywgSSB3YXMgbG9va2luZyBhdCB0aGUgb3RoZXIgZ2xvYmFsX3Jlc291cmNlcyBh bmQgbW9kZQpzZXR0aW5nIGNvZGUgZm9yIHRoaXMuCgpUaGFua3MgZm9yIHRoZSByZXZpZXcsIHdp bGwgcmUtcG9zdC4KCi0tIApKZXNzZSBCYXJuZXMsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xv Z3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==