From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH 28/71] drm/i915/chv: Added CHV specific register read and write Date: Thu, 17 Apr 2014 17:28:33 -0700 Message-ID: <20140418002833.GA918@bwidawsk.net> References: <1397039349-10639-1-git-send-email-ville.syrjala@linux.intel.com> <1397039349-10639-29-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.bwidawsk.net (bwidawsk.net [166.78.191.112]) by gabe.freedesktop.org (Postfix) with ESMTP id 07D9D6E5D8 for ; Thu, 17 Apr 2014 17:28:45 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1397039349-10639-29-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBcHIgMDksIDIwMTQgYXQgMDE6Mjg6MjZQTSArMDMwMCwgdmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogRGVlcGFrIFMgPGRlZXBhay5zQGludGVsLmNv bT4KPiAKPiBTdXBwb3J0IHRvIGluZGl2aWR1YWxseSBjb250cm9sIE1lZGlhL1JlbmRlciB3ZWxs IGJhc2VkIG9uIHRoZSByZWdpc3RlciBhY2Nlc3MuCj4gQWRkIENIViBzcGVjaWZpYyB3cml0ZSBm dW5jdGlvbiB0byBoYWJkbGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHJlZ2lzdGVycwo+IHRoYXQgYXJl IHNhZG93ZWQgdnMgdGhvc2UgdGhhdCBuZWVkIGZvcmNld2FrZSBldmVuIGZvciB3cml0ZXMuCj4g Cj4gdjI6IERyb3Agd3JpdGUgRklGTyBmb3IgQ0hWIGFuZCBhZGQgY29tbWFuIHdlbGwgZm9yY2V3 YWtlIChWaWxsZSkKPiAKPiBTaWduZWQtb2ZmLWJ5OiBEZWVwYWsgUyA8ZGVlcGFrLnNAaW50ZWwu Y29tPgo+IFt2c3lyamFsYTogTW92ZSB0aGUgcmVnaXN0ZXIgcmFuZ2UgbWFjcm9zIGludG8gaW50 ZWxfdW5jb3JlLmNdCj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dW5jb3JlLmMgfCAxMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gIDEg ZmlsZSBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IGluZGV4IDgyM2Q2OTkuLjhlM2M2ODYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IEBAIC00OTUsNiArNDk1LDMxIEBAIHZv aWQgYXNzZXJ0X2ZvcmNlX3dha2VfaW5hY3RpdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAJKChyZWcpID49IDB4MjIwMDAgJiYgKHJlZykgPCAweDI0MDAwKSB8fFwKPiAg CSgocmVnKSA+PSAweDMwMDAwICYmIChyZWcpIDwgMHg0MDAwMCkpCj4gIAo+ICsjZGVmaW5lIEZP UkNFV0FLRV9DSFZfUkVOREVSX1JBTkdFX09GRlNFVChyZWcpIFwKPiArCSgoKHJlZykgPj0gMHgy MDAwICYmIChyZWcpIDwgMHg0MDAwKSB8fFwKPiArCSgocmVnKSA+PSAweDUwMDAgJiYgKHJlZykg PCAweDgwMDApIHx8XAo+ICsJKChyZWcpID49IDB4ODMwMCAmJiAocmVnKSA8IDB4ODUwMCkgfHxc Cj4gKwkoKHJlZykgPj0gMHhCMDAwICYmIChyZWcpIDwgMHhDMDAwKSB8fFwKPiArCSgocmVnKSA+ PSAweEUwMDAgJiYgKHJlZykgPCAweEU4MDApKQo+ICsKPiArI2RlZmluZSBGT1JDRVdBS0VfQ0hW X01FRElBX1JBTkdFX09GRlNFVChyZWcpXAo+ICsJKCgocmVnKSA+PSAweDg4MDAgJiYgKHJlZykg PCAweDg5MDApIHx8XAo+ICsJKChyZWcpID49IDB4RDAwMCAmJiAocmVnKSA8IDB4RDgwMCkgfHxc Cj4gKwkoKHJlZykgPj0gMHgxMjAwMCAmJiAocmVnKSA8IDB4MTQwMDApIHx8XAo+ICsJKChyZWcp ID49IDB4MUEwMDAgJiYgKHJlZykgPCAweDFDMDAwKSB8fFwKPiArCSgocmVnKSA+PSAweDFFODAw ICYmIChyZWcpIDwgMHgxRUEwMCkgfHxcCj4gKwkoKHJlZykgPj0gMHgzMDAwMCAmJiAocmVnKSA8 IDB4NDAwMDApKQo+ICsKPiArI2RlZmluZSBGT1JDRVdBS0VfQ0hWX0NPTU1PTl9SQU5HRV9PRkZT RVQocmVnKVwKPiArCSgoKHJlZykgPj0gMHg0MDAwICYmIChyZWcpIDwgMHg1MDAwKSB8fFwKPiAr CSgocmVnKSA+PSAweDgwMDAgJiYgKHJlZykgPCAweDgzMDApIHx8XAo+ICsJKChyZWcpID49IDB4 ODUwMCAmJiAocmVnKSA8IDB4ODYwMCkgfHxcCj4gKwkoKHJlZykgPj0gMHg5MDAwICYmIChyZWcp IDwgMHhCMDAwKSB8fFwKPiArCSgocmVnKSA+PSAweEMwMDAgJiYgKHJlZykgPCAweGM4MDApIHx8 XAo+ICsJKChyZWcpID49IDB4RjAwMCAmJiAocmVnKSA8IDB4MTAwMDApIHx8XAo+ICsJKChyZWcp ID49IDB4MTQwMDAgJiYgKHJlZykgPCAweDE0NDAwKSB8fFwKPiArCSgocmVnKSA+PSAweDIyMDAw ICYmIChyZWcpIDwgMHgyNDAwMCkpCj4gKwoKVG8gc2F0aXNmeSBib3RoIENocmlzLCBhbmQgVmls bGUsIGhvdyBhYm91dDoKI2RlZmluZSBSRUdfUkFOR0UocmVnLCBzdGFydCwgZW5kKSAoKHJlZykg Pj0gKHN0YXJ0KSAmJiAocmVnKSA8IDB4NTAwMCkKCVJFR19SQU5HRShyZWcsIDB4NDAwMCwgMHg1 MDAwKSB8fCBcCglSRUdfUkFOR0UocmVnLCAweDgwMDAsIDB4ODMwMCkgfHwgXAoJLi4uCgpCeSB0 aGUgd2F5LCBJIHNwZW50IG15IGR1ZSBkaWxpZ2VuY2UgdHJ5aW5nIHRvIGZpbmQgd2hlcmUgdGhl c2UgcmFuZ2VzCmNvbWUgZnJvbSwgYW5kIGhhdmUgYmVlbiB1bmFibGUuIERvYyBuYW1lPyBJIHNo b3VsZCBoYXZlIGFsbCB0aGUgZG9jcwpmcm9tIFZpbGxlLgoKSSBjYW4ndCBzcGVhayBmb3IgdGhl IGNvZGUgZ2VuZXJhdGVkLCBlaXRoZXIuCgo+ICBzdGF0aWMgdm9pZAo+ICBpbGtfZHVtbXlfd3Jp dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gQEAgLTU4Nyw3ICs2 MTIsNDggQEAgdmx2X3JlYWQjI3goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBv ZmZfdCByZWcsIGJvb2wgdHJhY2UpIHsgXAo+ICAJUkVHX1JFQURfRk9PVEVSOyBcCj4gIH0KPiAg Cj4gKyNkZWZpbmUgX19jaHZfcmVhZCh4KSBcCj4gK3N0YXRpYyB1IyN4IFwKPiArY2h2X3JlYWQj I3goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBvZmZfdCByZWcsIGJvb2wgdHJh Y2UpIHsgXAo+ICsJdW5zaWduZWQgZndlbmdpbmUgPSAwOyBcCj4gKwlSRUdfUkVBRF9IRUFERVIo eCk7IFwKPiArCWlmIChGT1JDRVdBS0VfQ0hWX1JFTkRFUl9SQU5HRV9PRkZTRVQocmVnKSkgeyBc Cj4gKwkJZndlbmdpbmUgPSBGT1JDRVdBS0VfUkVOREVSOyBcCj4gKwl9IFwKPiArCWVsc2UgaWYg KEZPUkNFV0FLRV9DSFZfTUVESUFfUkFOR0VfT0ZGU0VUKHJlZykpIHsgXAo+ICsJCWZ3ZW5naW5l ID0gRk9SQ0VXQUtFX01FRElBOyBcCj4gKwl9IFwKPiArCWVsc2UgaWYgKEZPUkNFV0FLRV9DSFZf Q09NTU9OX1JBTkdFX09GRlNFVChyZWcpKSB7IFwKPiArCQlmd2VuZ2luZSA9IEZPUkNFV0FLRV9B TEw7IFwKPiArCX0gXAo+ICsJaWYgKEZPUkNFV0FLRV9SRU5ERVIgJiBmd2VuZ2luZSkgeyBcCj4g KwkJaWYgKGRldl9wcml2LT51bmNvcmUuZndfcmVuZGVyY291bnQrKyA9PSAwKSBcCj4gKwkJCShk ZXZfcHJpdiktPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldChkZXZfcHJpdiwgXAo+ICsJCQkJ CQkJCWZ3ZW5naW5lKTsgXAo+ICsJfSBcCj4gKwlpZiAoRk9SQ0VXQUtFX01FRElBICYgZndlbmdp bmUpIHsgXAo+ICsJCWlmIChkZXZfcHJpdi0+dW5jb3JlLmZ3X21lZGlhY291bnQrKyA9PSAwKSBc Cj4gKwkJCShkZXZfcHJpdiktPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldChkZXZfcHJpdiwg XAo+ICsJCQkJCQkJCWZ3ZW5naW5lKTsgXAo+ICsJfSBcCj4gKwl2YWwgPSBfX3Jhd19pOTE1X3Jl YWQjI3goZGV2X3ByaXYsIHJlZyk7IFwKPiArCWlmIChGT1JDRVdBS0VfUkVOREVSICYgZndlbmdp bmUpIHsgXAo+ICsJCWlmIChkZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50KysgPT0gMCkg XAo+ICsJCQkoZGV2X3ByaXYpLT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQoZGV2X3ByaXYs IFwKPiArCQkJCQkJCQlmd2VuZ2luZSk7IFwKPiArCX0gXAo+ICsJaWYgKEZPUkNFV0FLRV9NRURJ QSAmIGZ3ZW5naW5lKSB7IFwKPiArCQlpZiAoZGV2X3ByaXYtPnVuY29yZS5md19tZWRpYWNvdW50 KysgPT0gMCkgXAo+ICsJCQkoZGV2X3ByaXYpLT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQo ZGV2X3ByaXYsIFwKPiArCQkJCQkJCQlmd2VuZ2luZSk7IFwKPiArCX0gXAo+ICsJUkVHX1JFQURf Rk9PVEVSOyBcCj4gK30KPiAgCj4gK19fY2h2X3JlYWQoOCkKPiArX19jaHZfcmVhZCgxNikKPiAr X19jaHZfcmVhZCgzMikKPiArX19jaHZfcmVhZCg2NCkKPiAgX192bHZfcmVhZCg4KQo+ICBfX3Zs dl9yZWFkKDE2KQo+ICBfX3Zsdl9yZWFkKDMyKQo+IEBAIC02MDUsNiArNjcxLDcgQEAgX19nZW40 X3JlYWQoMTYpCj4gIF9fZ2VuNF9yZWFkKDMyKQo+ICBfX2dlbjRfcmVhZCg2NCkKPiAgCj4gKyN1 bmRlZiBfX2Nodl9yZWFkCj4gICN1bmRlZiBfX3Zsdl9yZWFkCj4gICN1bmRlZiBfX2dlbjZfcmVh ZAo+ICAjdW5kZWYgX19nZW41X3JlYWQKPiBAQCAtNzA5LDYgKzc3Niw0OSBAQCBnZW44X3dyaXRl IyN4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgb2ZmX3QgcmVnLCB1IyN4IHZh bCwgYm9vbCB0cmFjZQo+ICAJUkVHX1dSSVRFX0ZPT1RFUjsgXAo+ICB9Cj4gIAo+ICsjZGVmaW5l IF9fY2h2X3dyaXRlKHgpIFwKPiArc3RhdGljIHZvaWQgXAo+ICtjaHZfd3JpdGUjI3goc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBvZmZfdCByZWcsIHUjI3ggdmFsLCBib29sIHRy YWNlKSB7IFwKPiArCXVuc2lnbmVkIGZ3ZW5naW5lID0gMDsgXAo+ICsJYm9vbCBfX25lZWRzX3B1 dCA9ICFpc19nZW44X3NoYWRvd2VkKGRldl9wcml2LCByZWcpOyBcCj4gKwlSRUdfV1JJVEVfSEVB REVSOyBcCj4gKwlpZiAoRk9SQ0VXQUtFX0NIVl9SRU5ERVJfUkFOR0VfT0ZGU0VUKHJlZykpIHsg XAo+ICsJCWZ3ZW5naW5lID0gRk9SQ0VXQUtFX1JFTkRFUjsgXAo+ICsJfSBcCj4gKwllbHNlIGlm IChGT1JDRVdBS0VfQ0hWX01FRElBX1JBTkdFX09GRlNFVChyZWcpKSB7IFwKPiArCQlmd2VuZ2lu ZSA9IEZPUkNFV0FLRV9NRURJQTsgXAo+ICsJfSBcCj4gKwllbHNlIGlmIChGT1JDRVdBS0VfQ0hW X0NPTU1PTl9SQU5HRV9PRkZTRVQocmVnKSkgeyBcCj4gKwkJZndlbmdpbmUgPSBGT1JDRVdBS0Vf QUxMOyBcCj4gKwl9IFwKPiArCWlmIChfX25lZWRzX3B1dCAmJiAoRk9SQ0VXQUtFX1JFTkRFUiAm IGZ3ZW5naW5lKSkgeyBcCj4gKwkJCWlmIChkZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50 KysgPT0gMCkgXAo+ICsJCQkJKGRldl9wcml2KS0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0 KGRldl9wcml2LCBcCj4gKwkJCQkJCQkJCWZ3ZW5naW5lKTsgXAo+ICsJfSBcCj4gKwlpZiAoX19u ZWVkc19wdXQgJiYgKEZPUkNFV0FLRV9NRURJQSAmIGZ3ZW5naW5lKSkgeyBcCj4gKwkJaWYgKGRl dl9wcml2LT51bmNvcmUuZndfbWVkaWFjb3VudCsrID09IDApIFwKPiArCQkJKGRldl9wcml2KS0+ dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0KGRldl9wcml2LCBcCj4gKwkJCQkJCQkJZndlbmdp bmUpOyBcCj4gKwl9IFwKPiArCV9fcmF3X2k5MTVfd3JpdGUjI3goZGV2X3ByaXYsIHJlZywgdmFs KTsgXAo+ICsJaWYgKF9fbmVlZHNfcHV0ICYmIChGT1JDRVdBS0VfUkVOREVSICYgZndlbmdpbmUp KSB7IFwKPiArCQkJaWYgKGRldl9wcml2LT51bmNvcmUuZndfcmVuZGVyY291bnQrKyA9PSAwKSBc Cj4gKwkJCQkoZGV2X3ByaXYpLT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQoZGV2X3ByaXYs IFwKPiArCQkJCQkJCQkJZndlbmdpbmUpOyBcCj4gKwl9IFwKPiArCWlmIChfX25lZWRzX3B1dCAm JiAoRk9SQ0VXQUtFX01FRElBICYgZndlbmdpbmUpKSB7IFwKPiArCQlpZiAoZGV2X3ByaXYtPnVu Y29yZS5md19tZWRpYWNvdW50KysgPT0gMCkgXAo+ICsJCQkoZGV2X3ByaXYpLT51bmNvcmUuZnVu Y3MuZm9yY2Vfd2FrZV9wdXQoZGV2X3ByaXYsIFwKPiArCQkJCQkJCQlmd2VuZ2luZSk7IFwKPiAr CX0gXAo+ICsJUkVHX1dSSVRFX0ZPT1RFUjsgXAo+ICt9CgpGZWVscyBsaWtlIHRoaXMgd291bGQg YmUgYSBsb3QgbmVhdGVyIGlmIHlvdSBsZXQgZm9yY2Vfd2FrZV9wdXQoKSBoYW5kbGUKdGhpcyBj b21wbGV4aXR5LiBJIGd1ZXNzIG91ciBmb3JjZV93YWtlX2Z1bmNzIGNhbid0IGhhbmRsZSBjb3Vu dC4gSW4KdGhhdCBjYXNlIHdlIGNvdWxkIGV2ZW4gc2hhcmUgdGhlIGdlbjhfd3JpdGUgZmFtaWx5 IG9mIGZ1bmN0aW9ucy4gV2FzCnRoZXJlIHNvbWUgcmVhc29uIHRoaXMgY2FuJ3Qgd29yaz8gKEFn YWluLCBmb3JnaXZlIGxhemluZXNzKQoKPiArCj4gK19fY2h2X3dyaXRlKDgpCj4gK19fY2h2X3dy aXRlKDE2KQo+ICtfX2Nodl93cml0ZSgzMikKPiArX19jaHZfd3JpdGUoNjQpCgpTaW1pbGFyIHRv IGJyb2Fkd2VsbCAobXkgYmFkLCBJIGtub3cpLCB3ZSBwcm9iYWJseSBvbmx5IGFjdHVhbGx5IHdh bnQgdG8KZG8gdGhpcyBmb3IgcmVhZC93cml0ZTMyLiBTbyB3ZSBwb3RlbnRpYWxseSBjb3VsZCBy ZWR1Y2UgdGhlIG9iaiBzaXplIGJ5Cm9ubHkgZG9pbmcgaXQgZm9yIHRoYXQuCgo+ICBfX2dlbjhf d3JpdGUoOCkKPiAgX19nZW44X3dyaXRlKDE2KQo+ICBfX2dlbjhfd3JpdGUoMzIpCj4gQEAgLTcz MCw2ICs4NDAsNyBAQCBfX2dlbjRfd3JpdGUoMTYpCj4gIF9fZ2VuNF93cml0ZSgzMikKPiAgX19n ZW40X3dyaXRlKDY0KQo+ICAKPiArI3VuZGVmIF9fY2h2X3dyaXRlCj4gICN1bmRlZiBfX2dlbjhf d3JpdGUKPiAgI3VuZGVmIF9faHN3X3dyaXRlCj4gICN1bmRlZiBfX2dlbjZfd3JpdGUKPiBAQCAt NzkzLDE0ICs5MDQsMjYgQEAgdm9pZCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAKPiAgCXN3aXRjaCAoSU5URUxfSU5GTyhkZXYpLT5nZW4pIHsKPiAgCWRlZmF1 bHQ6Cj4gLQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5tbWlvX3dyaXRlYiAgPSBnZW44X3dyaXRl ODsKPiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLm1taW9fd3JpdGV3ICA9IGdlbjhfd3JpdGUx NjsKPiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLm1taW9fd3JpdGVsICA9IGdlbjhfd3JpdGUz MjsKPiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLm1taW9fd3JpdGVxICA9IGdlbjhfd3JpdGU2 NDsKPiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLm1taW9fcmVhZGIgID0gZ2VuNl9yZWFkODsK PiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLm1taW9fcmVhZHcgID0gZ2VuNl9yZWFkMTY7Cj4g LQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5tbWlvX3JlYWRsICA9IGdlbjZfcmVhZDMyOwo+IC0J CWRldl9wcml2LT51bmNvcmUuZnVuY3MubW1pb19yZWFkcSAgPSBnZW42X3JlYWQ2NDsKPiArCQlp ZiAoSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gKwkJCWRldl9wcml2LT51bmNvcmUuZnVuY3MubW1p b193cml0ZWIgID0gY2h2X3dyaXRlODsKPiArCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5tbWlv X3dyaXRldyAgPSBjaHZfd3JpdGUxNjsKPiArCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5tbWlv X3dyaXRlbCAgPSBjaHZfd3JpdGUzMjsKPiArCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5tbWlv X3dyaXRlcSAgPSBjaHZfd3JpdGU2NDsKPiArCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5tbWlv X3JlYWRiICA9IGNodl9yZWFkODsKPiArCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5tbWlvX3Jl YWR3ICA9IGNodl9yZWFkMTY7Cj4gKwkJCWRldl9wcml2LT51bmNvcmUuZnVuY3MubW1pb19yZWFk bCAgPSBjaHZfcmVhZDMyOwo+ICsJCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLm1taW9fcmVhZHEg ID0gY2h2X3JlYWQ2NDsKPiArCj4gKwkJfSBlbHNlIHsKPiArCQkJZGV2X3ByaXYtPnVuY29yZS5m dW5jcy5tbWlvX3dyaXRlYiAgPSBnZW44X3dyaXRlODsKPiArCQkJZGV2X3ByaXYtPnVuY29yZS5m dW5jcy5tbWlvX3dyaXRldyAgPSBnZW44X3dyaXRlMTY7Cj4gKwkJCWRldl9wcml2LT51bmNvcmUu ZnVuY3MubW1pb193cml0ZWwgID0gZ2VuOF93cml0ZTMyOwo+ICsJCQlkZXZfcHJpdi0+dW5jb3Jl LmZ1bmNzLm1taW9fd3JpdGVxICA9IGdlbjhfd3JpdGU2NDsKPiArCQkJZGV2X3ByaXYtPnVuY29y ZS5mdW5jcy5tbWlvX3JlYWRiICA9IGdlbjZfcmVhZDg7Cj4gKwkJCWRldl9wcml2LT51bmNvcmUu ZnVuY3MubW1pb19yZWFkdyAgPSBnZW42X3JlYWQxNjsKPiArCQkJZGV2X3ByaXYtPnVuY29yZS5m dW5jcy5tbWlvX3JlYWRsICA9IGdlbjZfcmVhZDMyOwo+ICsJCQlkZXZfcHJpdi0+dW5jb3JlLmZ1 bmNzLm1taW9fcmVhZHEgID0gZ2VuNl9yZWFkNjQ7Cj4gKwkJfQo+ICAJCWJyZWFrOwo+ICAJY2Fz ZSA3Ogo+ICAJY2FzZSA2Ogo+IC0tIAo+IDEuOC4zLjIKPiAKPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkJlbiBXaWRhd3NreSwgSW50ZWwg T3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK