From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC PATCH] drm/i915: Consider SPLL as another shared pll. Date: Wed, 23 Sep 2015 14:42:09 +0200 Message-ID: <20150923124209.GP3383@phenom.ffwll.local> References: <55F9190F.7020101@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by gabe.freedesktop.org (Postfix) with ESMTPS id 962FA6E178 for ; Wed, 23 Sep 2015 05:39:18 -0700 (PDT) Received: by wicge5 with SMTP id ge5so205573911wic.0 for ; Wed, 23 Sep 2015 05:39:17 -0700 (PDT) Content-Disposition: inline In-Reply-To: <55F9190F.7020101@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: Maarten Lankhorst Cc: Intel Graphics Development , Emil Renner Berthing List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMTYsIDIwMTUgYXQgMDk6MjM6NTlBTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gV2hlbiBkaWFnbm9zaW5nIGEgdW5yZWxhdGVkIGJ1ZyBmb3Igc29tZW9uZSBv biBpcmMsIGl0IHdvdWxkIHNlZW0gdGhlIGhhcmR3YXJlIGNhbgo+IGJlIGJyb3VnaHQgdXAgYnkg dGhlIEJJT1Mgd2l0aCB0aGUgZW1iZWRkZWQgZGlzcGxheXBvcnQgdXNpbmcgdGhlIFNQTEwgZm9y IHNwcmVhZCBzcGVjdHJ1bS4KPiAKPiBSaWdodCBub3cgdGhpcyBpcyBub3QgaGFuZGxlZCB3ZWxs IGluIGk5MTUsIGFuZCBpdCBjYWxjdWxhdGVzIHRoZSBjcnRjIG5lZWRzIHRvCj4gYmUgcmVwcm9n cmFtbWVkIG9uIHRoZSBmaXJzdCBtb2Rlc2V0IHdpdGhvdXQgU1NDLCBidXQgIHRoZSBTUExMIGl0 c2VsZiB3YXMga2VwdAo+IGFjdGl2ZS4gRml4IHRoaXMgYnkgZXhwb3NpbmcgU1BMTCBhcyBhIHNo YXJlZCBwbGwgdGhhdCB3aWxsIG5vdCBiZSByZXR1cm5lZAo+IGJ5IGludGVsX2dldF9zaGFyZWRf ZHBsbDsgeW91IGhhdmUgdG8ga25vdyBpdCBleGlzdHMgdG8gdXNlIGl0LiA7LSkKPiAKPiBDYzog RW1pbCBSZW5uZXIgQmVydGhpbmcgPGtlcm5lbEBlc21pbC5kaz4KPiBTaWduZWQtb2ZmLWJ5OiBN YWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0t LQo+IFJGQyBiZWNhdXNlIEkgaGF2ZW4ndCB0ZXN0ZWQgaXQgd2l0aCBWR0EsIGJ1dCBpdCBzZWVt cyB0byB3b3JrIGFjY29yZGluZyB0byBmaXgKPiB0aGUgcHJvYmxlbSBtZW50aW9uZWQgYWJvdmUu CgpsZ3RtIGFuZCBnZXRzIHJpZCBvZiBzb21lIG9mIHRoZSBmZGkgdnMuIG5vcm1hbCBkZGkgc3Bl Y2lhbC1jYXNpbmcsIHdoaWNoCmlzIG5pY2UgKHNpbmNlIHRoYXQncyBhIHByb2JsZW0gZm9yIGJ4 dCBkc2kgdG9vKS4gSSdsbCBwaWNrIHRoaXMgdXAgYXMKc29vbiBhcyB5b3UgbWFuYWdlZCB0byBy dW4gdGhpcyBvbiBzb21lIGhzdyAoc2luY2Ugd2UgaW5qZWN0IGEgZmFrZSB2Z2EKc2NyZWVuIGZv ciBpZ3QgdGVzdHMgeW91IGRvbid0IGV2ZW4gbmVlZCBhIHJlYWwgc2NyZWVuKS4KLURhbmllbAoK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA4MWFkZjg5YjkyZjEuLmNhY2RhYzY3 ZDliYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0zNDUsNiArMzQ1LDggQEAg ZW51bSBpbnRlbF9kcGxsX2lkIHsKPiAgCS8qIGhzdy9iZHcgKi8KPiAgCURQTExfSURfV1JQTEwx ID0gMCwKPiAgCURQTExfSURfV1JQTEwyID0gMSwKPiArCURQTExfSURfU1BMTCA9IDIsCj4gKwo+ ICAJLyogc2tsICovCj4gIAlEUExMX0lEX1NLTF9EUExMMSA9IDAsCj4gIAlEUExMX0lEX1NLTF9E UExMMiA9IDEsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBpbmRleCBhZjVlNDNiZWY0YTQu LjU5MmQ4ZmU5Zjk5MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j cnQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gQEAgLTEzOCwx OCArMTM4LDYgQEAgc3RhdGljIHZvaWQgaHN3X2NydF9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICAJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFn cyB8PSBpbnRlbF9jcnRfZ2V0X2ZsYWdzKGVuY29kZXIpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCBoc3dfY3J0X3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gLXsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQo+IC0J V0FSTihJOTE1X1JFQUQoU1BMTF9DVEwpICYgU1BMTF9QTExfRU5BQkxFLCAiU1BMTCBhbHJlYWR5 IGVuYWJsZWRcbiIpOwo+IC0JSTkxNV9XUklURShTUExMX0NUTCwKPiAtCQkgICBTUExMX1BMTF9F TkFCTEUgfCBTUExMX1BMTF9GUkVRXzEzNTBNSHogfCBTUExMX1BMTF9TU0MpOwo+IC0JUE9TVElO R19SRUFEKFNQTExfQ1RMKTsKPiAtCXVkZWxheSgyMCk7Cj4gLX0KPiAtCj4gIC8qIE5vdGU6IFRo ZSBjYWxsZXIgaXMgcmVxdWlyZWQgdG8gZmlsdGVyIG91dCBkcG1zIG1vZGVzIG5vdCBzdXBwb3J0 ZWQgYnkgdGhlCj4gICAqIHBsYXRmb3JtLiAqLwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9jcnRfc2V0 X2RwbXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCBtb2RlKQo+IEBAIC0yMTYs MTkgKzIwNCw2IEBAIHN0YXRpYyB2b2lkIHBjaF9wb3N0X2Rpc2FibGVfY3J0KHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyKQo+ICAJaW50ZWxfZGlzYWJsZV9jcnQoZW5jb2Rlcik7Cj4gIH0K PiAgCj4gLXN0YXRpYyB2b2lkIGhzd19jcnRfcG9zdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+IC0JdWludDMyX3QgdmFsOwo+IC0KPiAtCURSTV9ERUJVR19LTVMoIkRpc2Fi bGluZyBTUExMXG4iKTsKPiAtCXZhbCA9IEk5MTVfUkVBRChTUExMX0NUTCk7Cj4gLQlXQVJOX09O KCEodmFsICYgU1BMTF9QTExfRU5BQkxFKSk7Cj4gLQlJOTE1X1dSSVRFKFNQTExfQ1RMLCB2YWwg JiB+U1BMTF9QTExfRU5BQkxFKTsKPiAtCVBPU1RJTkdfUkVBRChTUExMX0NUTCk7Cj4gLX0KPiAt Cj4gIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9jcnQoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2VuY29kZXJfdG9f Y3J0KGVuY29kZXIpOwo+IEBAIC0yODAsNiArMjU1LDggQEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0 X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJaWYgKEhB U19EREkoZGV2KSkgewo+ICAJCXBpcGVfY29uZmlnLT5kZGlfcGxsX3NlbCA9IFBPUlRfQ0xLX1NF TF9TUExMOwo+ICAJCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gMTM1MDAwICogMjsKPiArCQlw aXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZS53cnBsbCA9Cj4gKwkJCVNQTExfUExMX0VOQUJMRSB8 IFNQTExfUExMX0ZSRVFfMTM1ME1IeiB8IFNQTExfUExMX1NTQzsKPiAgCX0KPiAgCj4gIAlyZXR1 cm4gdHJ1ZTsKPiBAQCAtODYxLDggKzgzOCw2IEBAIHZvaWQgaW50ZWxfY3J0X2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgCWlmIChIQVNfRERJKGRldikpIHsKPiAgCQljcnQtPmJhc2Uu Z2V0X2NvbmZpZyA9IGhzd19jcnRfZ2V0X2NvbmZpZzsKPiAgCQljcnQtPmJhc2UuZ2V0X2h3X3N0 YXRlID0gaW50ZWxfZGRpX2dldF9od19zdGF0ZTsKPiAtCQljcnQtPmJhc2UucHJlX2VuYWJsZSA9 IGhzd19jcnRfcHJlX2VuYWJsZTsKPiAtCQljcnQtPmJhc2UucG9zdF9kaXNhYmxlID0gaHN3X2Ny dF9wb3N0X2Rpc2FibGU7Cj4gIAl9IGVsc2Ugewo+ICAJCWNydC0+YmFzZS5nZXRfY29uZmlnID0g aW50ZWxfY3J0X2dldF9jb25maWc7Cj4gIAkJY3J0LT5iYXNlLmdldF9od19zdGF0ZSA9IGludGVs X2NydF9nZXRfaHdfc3RhdGU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBpbmRleCA2MTU3 NWY2N2E2MjYuLmRhYmQ5MDMxNDdmYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4g QEAgLTEyNjksNiArMTI2OSwxOCBAQCBoc3dfZGRpX3BsbF9zZWxlY3Qoc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMsCj4gIAkJfQo+ICAKPiAgCQljcnRjX3N0YXRlLT5kZGlfcGxsX3NlbCA9 IFBPUlRfQ0xLX1NFTF9XUlBMTChwbGwtPmlkKTsKPiArCX0gZWxzZSBpZiAoY3J0Y19zdGF0ZS0+ ZGRpX3BsbF9zZWwgPT0gUE9SVF9DTEtfU0VMX1NQTEwpIHsKPiArCQlzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUgPSBjcnRjX3N0YXRlLT5iYXNlLnN0YXRlOwo+ICsJCXN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbF9jb25maWcgKnNwbGwgPQo+ICsJCQkmaW50ZWxfYXRvbWljX2dldF9zaGFy ZWRfZHBsbF9zdGF0ZShzdGF0ZSlbRFBMTF9JRF9TUExMXTsKPiArCj4gKwkJaWYgKHNwbGwtPmNy dGNfbWFzayAmJgo+ICsJCSAgICBXQVJOX09OKHNwbGwtPmh3X3N0YXRlLndycGxsICE9IGNydGNf c3RhdGUtPmRwbGxfaHdfc3RhdGUud3JwbGwpKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJ CWNydGNfc3RhdGUtPnNoYXJlZF9kcGxsID0gRFBMTF9JRF9TUExMOwo+ICsJCXNwbGwtPmh3X3N0 YXRlLndycGxsID0gY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZS53cnBsbDsKPiArCQlzcGxsLT5j cnRjX21hc2sgfD0gMSA8PCBpbnRlbF9jcnRjLT5waXBlOwo+ICAJfQo+ICAKPiAgCXJldHVybiB0 cnVlOwo+IEBAIC0yNDE0LDE5ICsyNDI2LDMxIEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVf ZGRpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICBzdGF0aWMgdm9pZCBo c3dfZGRpX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CQkgICAgICAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4gIHsKPiAtCUk5MTVfV1JJ VEUoV1JQTExfQ1RMKHBsbC0+aWQpLCBwbGwtPmNvbmZpZy5od19zdGF0ZS53cnBsbCk7Cj4gLQlQ T1NUSU5HX1JFQUQoV1JQTExfQ1RMKHBsbC0+aWQpKTsKPiArCXVpbnQzMl90IHJlZzsKPiArCj4g KwlpZiAocGxsLT5pZCA9PSBEUExMX0lEX1NQTEwpCj4gKwkJcmVnID0gU1BMTF9DVEw7Cj4gKwll bHNlCj4gKwkJcmVnID0gV1JQTExfQ1RMKHBsbC0+aWQpOwo+ICsKPiArCUk5MTVfV1JJVEUocmVn LCBwbGwtPmNvbmZpZy5od19zdGF0ZS53cnBsbCk7Cj4gKwlQT1NUSU5HX1JFQUQocmVnKTsKPiAg CXVkZWxheSgyMCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGhzd19kZGlfcGxsX2Rpc2FibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJc3RydWN0IGludGVsX3No YXJlZF9kcGxsICpwbGwpCj4gIHsKPiAtCXVpbnQzMl90IHZhbDsKPiArCXVpbnQzMl90IHJlZywg dmFsOwo+ICAKPiAtCXZhbCA9IEk5MTVfUkVBRChXUlBMTF9DVEwocGxsLT5pZCkpOwo+IC0JSTkx NV9XUklURShXUlBMTF9DVEwocGxsLT5pZCksIHZhbCAmIH5XUlBMTF9QTExfRU5BQkxFKTsKPiAt CVBPU1RJTkdfUkVBRChXUlBMTF9DVEwocGxsLT5pZCkpOwo+ICsJaWYgKHBsbC0+aWQgPT0gRFBM TF9JRF9TUExMKQo+ICsJCXJlZyA9IFNQTExfQ1RMOwo+ICsJZWxzZQo+ICsJCXJlZyA9IFdSUExM X0NUTChwbGwtPmlkKTsKPiArCj4gKwl2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiArCUk5MTVfV1JJ VEUocmVnLCB2YWwgJiB+V1JQTExfUExMX0VOQUJMRSk7Cj4gKwlQT1NUSU5HX1JFQUQocmVnKTsK PiAgfQo+ICAKPiAgc3RhdGljIGJvb2wgaHN3X2RkaV9wbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtMjQzOCwyMyArMjQ2MiwyOCBAQCBzdGF0 aWMgYm9vbCBoc3dfZGRpX3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAJaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2lzX2VuYWJsZWQoZGV2X3By aXYsIFBPV0VSX0RPTUFJTl9QTExTKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0JdmFsID0g STkxNV9SRUFEKFdSUExMX0NUTChwbGwtPmlkKSk7Cj4gLQlod19zdGF0ZS0+d3JwbGwgPSB2YWw7 Cj4gKwlpZiAocGxsLT5pZCA9PSBEUExMX0lEX1NQTEwpCj4gKwkJdmFsID0gSTkxNV9SRUFEKFNQ TExfQ1RMKTsKPiArCWVsc2UKPiArCQl2YWwgPSBJOTE1X1JFQUQoV1JQTExfQ1RMKHBsbC0+aWQp KTsKPiAgCj4gKwlod19zdGF0ZS0+d3JwbGwgPSB2YWw7Cj4gIAlyZXR1cm4gdmFsICYgV1JQTExf UExMX0VOQUJMRTsKPiAgfQo+ICAKPiAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoc3dfZGRp X3BsbF9uYW1lc1tdID0gewo+ICAJIldSUExMIDEiLAo+ICAJIldSUExMIDIiLAo+ICsJIlNQTEwi Cj4gIH07Cj4gIAo+ICBzdGF0aWMgdm9pZCBoc3dfc2hhcmVkX2RwbGxzX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlpbnQgaTsKPiAgCj4gLQlkZXZfcHJp di0+bnVtX3NoYXJlZF9kcGxsID0gMjsKPiArCWRldl9wcml2LT5udW1fc2hhcmVkX2RwbGwgPSAz Owo+ICAKPiArCS8qIFNQTEwgaXMgc3BlY2lhbCwgYnV0IG5lZWRzIHRvIGJlIGluaXRpYWxpemVk IGFueXdheS4uICovCj4gIAlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPm51bV9zaGFyZWRfZHBs bDsgaSsrKSB7Cj4gIAkJZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5pZCA9IGk7Cj4gIAkJZGV2 X3ByaXYtPnNoYXJlZF9kcGxsc1tpXS5uYW1lID0gaHN3X2RkaV9wbGxfbmFtZXNbaV07Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGNhOTI3OGJlNDlmNy4uNTgyMzYw ZDJmYTA4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC00MjA4 LDYgKzQyMDgsNyBAQCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dldF9zaGFyZWRf ZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBs bCAqcGxsOwo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyAqc2hhcmVkX2RwbGw7 Cj4gIAllbnVtIGludGVsX2RwbGxfaWQgaTsKPiArCWludCBtYXggPSBkZXZfcHJpdi0+bnVtX3No YXJlZF9kcGxsOwo+ICAKPiAgCXNoYXJlZF9kcGxsID0gaW50ZWxfYXRvbWljX2dldF9zaGFyZWRf ZHBsbF9zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiAgCj4gQEAgLTQyNDIsOSArNDI0 MywxMSBAQCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dldF9zaGFyZWRfZHBsbChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQlXQVJOX09OKHNoYXJlZF9kcGxsW2ldLmNydGNf bWFzayk7Cj4gIAo+ICAJCWdvdG8gZm91bmQ7Cj4gLQl9Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPCA5ICYmIEhBU19EREkoZGV2X3ByaXYpKQo+ICsJCS8qIERvIG5v dCBjb25zaWRlciBTUExMICovCj4gKwkJbWF4ID0gMjsKPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwg ZGV2X3ByaXYtPm51bV9zaGFyZWRfZHBsbDsgaSsrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgbWF4 OyBpKyspIHsKPiAgCQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKPiAgCj4gIAkJ LyogT25seSB3YW50IHRvIGNoZWNrIGVuYWJsZWQgdGltaW5ncyBmaXJzdCAqLwo+IEBAIC05Njk2 LDYgKzk2OTksOCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2dldF9kZGlfcGxsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWNhc2UgUE9SVF9DTEtfU0VMX1dSUExMMjoKPiAg CQlwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwgPSBEUExMX0lEX1dSUExMMjsKPiAgCQlicmVhazsK PiArCWNhc2UgUE9SVF9DTEtfU0VMX1NQTEw6Cj4gKwkJcGlwZV9jb25maWctPnNoYXJlZF9kcGxs ID0gRFBMTF9JRF9TUExMOwo+ICAJfQo+ICB9Cj4gIAo+IAo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK