From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH 08/12] drm/i915: Fix the IBX transcoder B workarounds Date: Thu, 21 May 2015 12:23:21 -0700 Message-ID: <555E30A9.2040206@virtuousgeek.org> References: <1430835458-11187-1-git-send-email-ville.syrjala@linux.intel.com> <1430835458-11187-9-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 gproxy10-pub.mail.unifiedlayer.com (gproxy10-pub.mail.unifiedlayer.com [69.89.20.226]) by gabe.freedesktop.org (Postfix) with SMTP id 432507A104 for ; Thu, 21 May 2015 12:30:23 -0700 (PDT) In-Reply-To: <1430835458-11187-9-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, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDUvMDUvMjAxNSAwNzoxNyBBTSwgdmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3Jv dGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPiAKPiBDdXJyZW50bHkgdGhlIElCWCB0cmFuc2NvZGVyIEIgd29ya2Fyb3VuZHMgYXJlIG5v dCB3b3JraW5nIGNvcnJlY3RseS4KPiBXZWxsLCB0aGUgSERNSSBvbmUgc2VlbXMgdG8gYmUgd29y a2luZyBzb21ld2hhdCwgYnV0IHRoZSBEUCBvbmUgaXMKPiBkZWZpbml0ZWx5IGJ1c3RlZC4KPiAK PiBBZnRlciBhIGJpdCBvZiBleHBlcmltZW50YXRpb24gaXQgbG9va3MgbGlrZSB0aGUgYmVzdCB3 YXkgdG8gbWFrZSB0aGlzCj4gd29yayBpcyBmaXJzdCBkaXNhYmxlIHRoZSBwb3J0IG9uIHRyYW5z Y29kZXIgQiwgYW5kIHRoZW4gcmUtZW5hYmxlIGl0Cj4gdHJhbnNjb2RlciBBLCBhbmQgaW1tZWRp YXRlbHkgZGlzYWJsZSBpdCBhZ2Fpbi4KPiAKPiBXZSBjYW4gYWxzbyBjbGVhbiB1cCB0aGUgY29k ZSBieSBub3RpbmcgdGhhdCB3ZSBjYW4ndCBiZSBjYWxsZWQgd2l0aG91dAo+IGEgdmFsaWQgY3J0 Yy4gQW5kIGFsc28gbm90ZSB0aGF0IHBvcnQgQSBvbiBJTEsgZG9lcyBub3QgbmVlZCB0aGUKPiB3 b3JrYXJvdW5kLCBzbyBsZXQncyBjaGVjayBmb3IgdGhhdCBvbmUgdG9vLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8IDM3ICsrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyB8 IDUwICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMgfCA0MSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IDE3YjAwNmMuLjM0MDFjZGUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMzgyMSw2ICszODIxLDcgQEAgc3RhdGlj IHZvaWQKPiAgaW50ZWxfZHBfbGlua19kb3duKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g IHsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9f ZGlnX3BvcnQoaW50ZWxfZHApOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuY3J0Yyk7Cj4gIAllbnVtIHBvcnQgcG9y dCA9IGludGVsX2RpZ19wb3J0LT5wb3J0Owo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGlu dGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMzgzNywzNCArMzgzOCwzOCBAQCBp bnRlbF9kcF9saW5rX2Rvd24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCWlmICgoSVNf R0VONyhkZXYpICYmIHBvcnQgPT0gUE9SVF9BKSB8fAo+ICAJICAgIChIQVNfUENIX0NQVChkZXYp ICYmIHBvcnQgIT0gUE9SVF9BKSkgewo+ICAJCURQICY9IH5EUF9MSU5LX1RSQUlOX01BU0tfQ1BU Owo+IC0JCUk5MTVfV1JJVEUoaW50ZWxfZHAtPm91dHB1dF9yZWcsIERQIHwgRFBfTElOS19UUkFJ Tl9QQVRfSURMRV9DUFQpOwo+ICsJCURQIHw9IERQX0xJTktfVFJBSU5fUEFUX0lETEVfQ1BUOwo+ ICAJfSBlbHNlIHsKPiAgCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJCQlEUCAmPSB+RFBf TElOS19UUkFJTl9NQVNLX0NIVjsKPiAgCQllbHNlCj4gIAkJCURQICY9IH5EUF9MSU5LX1RSQUlO X01BU0s7Cj4gLQkJSTkxNV9XUklURShpbnRlbF9kcC0+b3V0cHV0X3JlZywgRFAgfCBEUF9MSU5L X1RSQUlOX1BBVF9JRExFKTsKPiArCQlEUCB8PSBEUF9MSU5LX1RSQUlOX1BBVF9JRExFOwo+ICAJ fQo+ICsJSTkxNV9XUklURShpbnRlbF9kcC0+b3V0cHV0X3JlZywgRFApOwo+ICAJUE9TVElOR19S RUFEKGludGVsX2RwLT5vdXRwdXRfcmVnKTsKPiAgCj4gLQlpZiAoSEFTX1BDSF9JQlgoZGV2KSAm Jgo+IC0JICAgIEk5MTVfUkVBRChpbnRlbF9kcC0+b3V0cHV0X3JlZykgJiBEUF9QSVBFQl9TRUxF Q1QpIHsKPiAtCQkvKiBIYXJkd2FyZSB3b3JrYXJvdW5kOiBsZWF2aW5nIG91ciB0cmFuc2NvZGVy IHNlbGVjdAo+IC0JCSAqIHNldCB0byB0cmFuc2NvZGVyIEIgd2hpbGUgaXQncyBvZmYgd2lsbCBw cmV2ZW50IHRoZQo+IC0JCSAqIGNvcnJlc3BvbmRpbmcgSERNSSBvdXRwdXQgb24gdHJhbnNjb2Rl ciBBLgo+IC0JCSAqCj4gLQkJICogQ29tYmluZSB0aGlzIHdpdGggYW5vdGhlciBoYXJkd2FyZSB3 b3JrYXJvdW5kOgo+IC0JCSAqIHRyYW5zY29kZXIgc2VsZWN0IGJpdCBjYW4gb25seSBiZSBjbGVh cmVkIHdoaWxlIHRoZQo+IC0JCSAqIHBvcnQgaXMgZW5hYmxlZC4KPiAtCQkgKi8KPiAtCQlEUCAm PSB+RFBfUElQRUJfU0VMRUNUOwo+ICsJRFAgJj0gfihEUF9QT1JUX0VOIHwgRFBfQVVESU9fT1VU UFVUX0VOQUJMRSk7Cj4gKwlJOTE1X1dSSVRFKGludGVsX2RwLT5vdXRwdXRfcmVnLCBEUCk7Cj4g KwlQT1NUSU5HX1JFQUQoaW50ZWxfZHAtPm91dHB1dF9yZWcpOwo+ICsKPiArCS8qCj4gKwkgKiBI VyB3b3JrYXJvdW5kIGZvciBJQlgsIHdlIG5lZWQgdG8gbW92ZSB0aGUgcG9ydAo+ICsJICogdG8g dHJhbnNjb2RlciBBIGFmdGVyIGRpc2FibGluZyBpdCB0byBhbGxvdyB0aGUKPiArCSAqIG1hdGNo aW5nIEhETUkgcG9ydCB0byBiZSBlbmFibGVkIG9uIHRyYW5zY29kZXIgQS4KPiArCSAqLwo+ICsJ aWYgKEhBU19QQ0hfSUJYKGRldikgJiYgY3J0Yy0+cGlwZSA9PSBQSVBFX0IgJiYgcG9ydCAhPSBQ T1JUX0EpIHsKPiArCQkvKiBhbHdheXMgZW5hYmxlIHdpdGggcGF0dGVybiAxIChhcyBwZXIgc3Bl YykgKi8KPiArCQlEUCAmPSB+KERQX1BJUEVCX1NFTEVDVCB8IERQX0xJTktfVFJBSU5fTUFTSyk7 Cj4gKwkJRFAgfD0gRFBfUE9SVF9FTiB8IERQX0xJTktfVFJBSU5fUEFUXzE7Cj4gKwkJSTkxNV9X UklURShpbnRlbF9kcC0+b3V0cHV0X3JlZywgRFApOwo+ICsJCVBPU1RJTkdfUkVBRChpbnRlbF9k cC0+b3V0cHV0X3JlZyk7Cj4gKwo+ICsJCURQICY9IH5EUF9QT1JUX0VOOwo+ICAJCUk5MTVfV1JJ VEUoaW50ZWxfZHAtPm91dHB1dF9yZWcsIERQKTsKPiAgCQlQT1NUSU5HX1JFQUQoaW50ZWxfZHAt Pm91dHB1dF9yZWcpOwo+ICAJfQo+ICAKPiAtCURQICY9IH5EUF9BVURJT19PVVRQVVRfRU5BQkxF Owo+IC0JSTkxNV9XUklURShpbnRlbF9kcC0+b3V0cHV0X3JlZywgRFAgJiB+RFBfUE9SVF9FTik7 Cj4gLQlQT1NUSU5HX1JFQUQoaW50ZWxfZHAtPm91dHB1dF9yZWcpOwo+ICAJbXNsZWVwKGludGVs X2RwLT5wYW5lbF9wb3dlcl9kb3duX2RlbGF5KTsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jCj4gaW5kZXggMzA4MDE1ZS4uOWI5YTY5ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oZG1pLmMKPiBAQCAtMTA5NiwzOSArMTA5NiwxMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9k aXNhYmxlX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAlzdHJ1Y3QgaW50 ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsK PiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNl LmNydGMpOwo+ICAJdTMyIHRlbXA7Cj4gLQl1MzIgZW5hYmxlX2JpdHMgPSBTRFZPX0VOQUJMRSB8 IFNEVk9fQVVESU9fRU5BQkxFOwo+ICAKPiAgCWlmIChjcnRjLT5jb25maWctPmhhc19hdWRpbykK PiAgCQlpbnRlbF9hdWRpb19jb2RlY19kaXNhYmxlKGVuY29kZXIpOwo+ICAKPiAgCXRlbXAgPSBJ OTE1X1JFQUQoaW50ZWxfaGRtaS0+aGRtaV9yZWcpOwo+ICAKPiAtCS8qIEhXIHdvcmthcm91bmQg Zm9yIElCWCwgd2UgbmVlZCB0byBtb3ZlIHRoZSBwb3J0IHRvIHRyYW5zY29kZXIgQQo+IC0JICog YmVmb3JlIGRpc2FibGluZyBpdC4gKi8KPiAtCWlmIChIQVNfUENIX0lCWChkZXYpKSB7Cj4gLQkJ c3RydWN0IGRybV9jcnRjICpjcnRjID0gZW5jb2Rlci0+YmFzZS5jcnRjOwo+IC0JCWludCBwaXBl ID0gY3J0YyA/IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGUgOiAtMTsKPiAtCj4gLQkJaWYgKHRl bXAgJiBTRFZPX1BJUEVfQl9TRUxFQ1QpIHsKPiAtCQkJdGVtcCAmPSB+U0RWT19QSVBFX0JfU0VM RUNUOwo+IC0JCQlJOTE1X1dSSVRFKGludGVsX2hkbWktPmhkbWlfcmVnLCB0ZW1wKTsKPiAtCQkJ UE9TVElOR19SRUFEKGludGVsX2hkbWktPmhkbWlfcmVnKTsKPiAtCj4gLQkJCS8qIEFnYWluIHdl IG5lZWQgdG8gd3JpdGUgdGhpcyB0d2ljZS4gKi8KPiAtCQkJSTkxNV9XUklURShpbnRlbF9oZG1p LT5oZG1pX3JlZywgdGVtcCk7Cj4gLQkJCVBPU1RJTkdfUkVBRChpbnRlbF9oZG1pLT5oZG1pX3Jl Zyk7Cj4gLQo+IC0JCQkvKiBUcmFuc2NvZGVyIHNlbGVjdGlvbiBiaXRzIG9ubHkgdXBkYXRlCj4g LQkJCSAqIGVmZmVjdGl2ZWx5IG9uIHZibGFuay4gKi8KPiAtCQkJaWYgKGNydGMpCj4gLQkJCQlp bnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBwaXBlKTsKPiAtCQkJZWxzZQo+IC0JCQkJbXNsZWVw KDUwKTsKPiAtCQl9Cj4gLQl9Cj4gLQo+IC0JdGVtcCAmPSB+ZW5hYmxlX2JpdHM7Cj4gLQo+ICsJ dGVtcCAmPSB+KFNEVk9fRU5BQkxFIHwgU0RWT19BVURJT19FTkFCTEUpOwo+ICAJSTkxNV9XUklU RShpbnRlbF9oZG1pLT5oZG1pX3JlZywgdGVtcCk7Cj4gIAlQT1NUSU5HX1JFQUQoaW50ZWxfaGRt aS0+aGRtaV9yZWcpOwo+ICAKPiBAQCAtMTEzNiw2ICsxMTEwLDI4IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2Rpc2FibGVfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCQljaHZf cG93ZXJnYXRlX3BoeV9sYW5lcyhlbmNvZGVyLCAweGYpOwo+ICAKPiAgCWludGVsX2hkbWktPnNl dF9pbmZvZnJhbWVzKCZlbmNvZGVyLT5iYXNlLCBmYWxzZSwgTlVMTCk7Cj4gKwo+ICsJLyoKPiAr CSAqIEhXIHdvcmthcm91bmQgZm9yIElCWCwgd2UgbmVlZCB0byBtb3ZlIHRoZSBwb3J0Cj4gKwkg KiB0byB0cmFuc2NvZGVyIEEgYWZ0ZXIgZGlzYWJsaW5nIGl0IHRvIGFsbG93IHRoZQo+ICsJICog bWF0Y2hpbmcgRFAgcG9ydCB0byBiZSBlbmFibGVkIG9uIHRyYW5zY29kZXIgQS4KPiArCSAqLwo+ ICsJaWYgKEhBU19QQ0hfSUJYKGRldikgJiYgY3J0Yy0+cGlwZSA9PSBQSVBFX0IpIHsKPiArCQl0 ZW1wICY9IH5TRFZPX1BJUEVfQl9TRUxFQ1Q7Cj4gKwkJdGVtcCB8PSBTRFZPX0VOQUJMRTsKPiAr CQkvKgo+ICsJCSAqIEhXIHdvcmthcm91bmQsIG5lZWQgdG8gd3JpdGUgdGhpcyB0d2ljZSBmb3Ig aXNzdWUKPiArCQkgKiB0aGF0IG1heSByZXN1bHQgaW4gZmlyc3Qgd3JpdGUgZ2V0dGluZyBtYXNr ZWQuCj4gKwkJICovCj4gKwkJSTkxNV9XUklURShpbnRlbF9oZG1pLT5oZG1pX3JlZywgdGVtcCk7 Cj4gKwkJUE9TVElOR19SRUFEKGludGVsX2hkbWktPmhkbWlfcmVnKTsKPiArCQlJOTE1X1dSSVRF KGludGVsX2hkbWktPmhkbWlfcmVnLCB0ZW1wKTsKPiArCQlQT1NUSU5HX1JFQUQoaW50ZWxfaGRt aS0+aGRtaV9yZWcpOwo+ICsKPiArCQl0ZW1wICY9IH5TRFZPX0VOQUJMRTsKPiArCQlJOTE1X1dS SVRFKGludGVsX2hkbWktPmhkbWlfcmVnLCB0ZW1wKTsKPiArCQlQT1NUSU5HX1JFQUQoaW50ZWxf aGRtaS0+aGRtaV9yZWcpOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGhkbWlfcG9ydGNs b2NrX2xpbWl0KHN0cnVjdCBpbnRlbF9oZG1pICpoZG1pLCBib29sIHJlc3BlY3RfZHZpX2xpbWl0 KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMKPiBpbmRleCBlM2U5Yzk4Li40YTg3NjkxIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+IEBAIC0xNDM3LDYgKzE0MzcsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX3Nkdm8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuY29kZXIt PmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9zZHZvICppbnRlbF9zZHZv ID0gdG9fc2R2byhlbmNvZGVyKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+ICAJdTMyIHRlbXA7Cj4gIAo+ICAJaW50ZWxf c2R2b19zZXRfYWN0aXZlX291dHB1dHMoaW50ZWxfc2R2bywgMCk7Cj4gQEAgLTE0NDUsMzIgKzE0 NDYsMjIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9zZHZvKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQo+ICAJCQkJCQkgICBEUk1fTU9ERV9EUE1TX09GRik7Cj4gIAo+ICAJdGVt cCA9IEk5MTVfUkVBRChpbnRlbF9zZHZvLT5zZHZvX3JlZyk7Cj4gLQlpZiAoKHRlbXAgJiBTRFZP X0VOQUJMRSkgIT0gMCkgewo+IC0JCS8qIEhXIHdvcmthcm91bmQgZm9yIElCWCwgd2UgbmVlZCB0 byBtb3ZlIHRoZSBwb3J0IHRvCj4gLQkJICogdHJhbnNjb2RlciBBIGJlZm9yZSBkaXNhYmxpbmcg aXQuICovCj4gLQkJaWYgKEhBU19QQ0hfSUJYKGVuY29kZXItPmJhc2UuZGV2KSkgewo+IC0JCQlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNvZGVyLT5iYXNlLmNydGM7Cj4gLQkJCWludCBwaXBl ID0gY3J0YyA/IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGUgOiAtMTsKPiAtCj4gLQkJCWlmICh0 ZW1wICYgU0RWT19QSVBFX0JfU0VMRUNUKSB7Cj4gLQkJCQl0ZW1wICY9IH5TRFZPX1BJUEVfQl9T RUxFQ1Q7Cj4gLQkJCQlJOTE1X1dSSVRFKGludGVsX3Nkdm8tPnNkdm9fcmVnLCB0ZW1wKTsKPiAt CQkJCVBPU1RJTkdfUkVBRChpbnRlbF9zZHZvLT5zZHZvX3JlZyk7Cj4gLQo+IC0JCQkJLyogQWdh aW4gd2UgbmVlZCB0byB3cml0ZSB0aGlzIHR3aWNlLiAqLwo+IC0JCQkJSTkxNV9XUklURShpbnRl bF9zZHZvLT5zZHZvX3JlZywgdGVtcCk7Cj4gLQkJCQlQT1NUSU5HX1JFQUQoaW50ZWxfc2R2by0+ c2R2b19yZWcpOwo+IC0KPiAtCQkJCS8qIFRyYW5zY29kZXIgc2VsZWN0aW9uIGJpdHMgb25seSB1 cGRhdGUKPiAtCQkJCSAqIGVmZmVjdGl2ZWx5IG9uIHZibGFuay4gKi8KPiAtCQkJCWlmIChjcnRj KQo+IC0JCQkJCWludGVsX3dhaXRfZm9yX3ZibGFuayhlbmNvZGVyLT5iYXNlLmRldiwgcGlwZSk7 Cj4gLQkJCQllbHNlCj4gLQkJCQkJbXNsZWVwKDUwKTsKPiAtCQkJfQo+IC0JCX0KPiAgCj4gLQkJ aW50ZWxfc2R2b193cml0ZV9zZHZveChpbnRlbF9zZHZvLCB0ZW1wICYgflNEVk9fRU5BQkxFKTsK PiArCXRlbXAgJj0gflNEVk9fRU5BQkxFOwo+ICsJaW50ZWxfc2R2b193cml0ZV9zZHZveChpbnRl bF9zZHZvLCB0ZW1wKTsKPiArCj4gKwkvKgo+ICsJICogSFcgd29ya2Fyb3VuZCBmb3IgSUJYLCB3 ZSBuZWVkIHRvIG1vdmUgdGhlIHBvcnQKPiArCSAqIHRvIHRyYW5zY29kZXIgQSBhZnRlciBkaXNh YmxpbmcgaXQgdG8gYWxsb3cgdGhlCj4gKwkgKiBtYXRjaGluZyBEUCBwb3J0IHRvIGJlIGVuYWJs ZWQgb24gdHJhbnNjb2RlciBBLgo+ICsJICovCj4gKwlpZiAoSEFTX1BDSF9JQlgoZGV2X3ByaXYp ICYmIGNydGMtPnBpcGUgPT0gUElQRV9CKSB7Cj4gKwkJdGVtcCAmPSB+U0RWT19QSVBFX0JfU0VM RUNUOwo+ICsJCXRlbXAgfD0gU0RWT19FTkFCTEU7Cj4gKwkJaW50ZWxfc2R2b193cml0ZV9zZHZv eChpbnRlbF9zZHZvLCB0ZW1wKTsKPiArCj4gKwkJdGVtcCAmPSB+U0RWT19FTkFCTEU7Cj4gKwkJ aW50ZWxfc2R2b193cml0ZV9zZHZveChpbnRlbF9zZHZvLCB0ZW1wKTsKPiAgCX0KPiAgfQo+ICAK PiAKCkNvb2wsIGFnYWluLCB0ZXN0aW5nIHdpbnMuCgpSZXZpZXdlZC1ieTogSmVzc2UgQmFybmVz IDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5vcmc+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==