From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH v7 08/19] drm/i915/gen8: Add 4 level switching infrastructure and lrc support Date: Thu, 30 Jul 2015 11:06:23 +0100 Message-ID: <1438250783-23118-1-git-send-email-michel.thierry@intel.com> References: <1438187043-34267-9-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id D17BE6E07A for ; Thu, 30 Jul 2015 03:06:25 -0700 (PDT) In-Reply-To: <1438187043-34267-9-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Akash Goel List-Id: intel-gfx@lists.freedesktop.org SW4gNjRiICg0OGJpdCBjYW5vbmljYWwpIFBQR1RUIGFkZHJlc3NpbmcsIHRoZSBQRFAwIHJlZ2lz dGVyIGNvbnRhaW5zCnRoZSBiYXNlIGFkZHJlc3MgdG8gUE1MNCwgd2hpbGUgdGhlIG90aGVyIFBE UCByZWdpc3RlcnMgYXJlIGlnbm9yZWQuCgpJbiBMUkMsIHRoZSBhZGRyZXNzaW5nIG1vZGUgbXVz dCBiZSBzcGVjaWZpZWQgaW4gZXZlcnkgY29udGV4dApkZXNjcmlwdG9yLCBhbmQgdGhlIGJhc2Ug YWRkcmVzcyB0byBQTUw0IGlzIHN0b3JlZCBpbiB0aGUgcmVnIHN0YXRlLgoKdjI6IFBNTDQgdXBk YXRlIGluIGxlZ2FjeSBjb250ZXh0IHN3aXRjaCBpcyBsZWZ0IGZvciBoaXN0b3JpYyByZWFzb25z LAp0aGUgcHJlZmVycmVkIG1vZGUgb2Ygb3BlcmF0aW9uIGlzIHdpdGggbHJjIGNvbnRleHQgYmFz ZWQgc3VibWlzc2lvbi4KdjM6IHMvZ2VuOF9tYXBfcGFnZV9kaXJlY3RvcnkvZ2VuOF9zZXR1cF9w YWdlX2RpcmVjdG9yeSBhbmQKcy9nZW44X21hcF9wYWdlX2RpcmVjdG9yeV9wb2ludGVyL2dlbjhf c2V0dXBfcGFnZV9kaXJlY3RvcnlfcG9pbnRlci4KQWxzbywgY2xmbHVzaCB3aWxsIGJlIG5lZWRl ZCBmb3IgYnh0LiAoQWthc2gpCnY0OiBTcXVhc2hlZCBscmMtc3BlY2lmaWMgY29kZSBhbmQgdXNl IGEgbWFjcm8gdG8gc2V0IFBNTDQgcmVnaXN0ZXIuCnY1OiBSZWJhc2UgYWZ0ZXIgTWlrYSdzIHBw Z3R0IGNsZWFudXAgLyBzY3JhdGNoIG1lcmdlIHBhdGNoIHNlcmllcy4KUERQIHVwZGF0ZSBpbiBi Yl9zdGFydCBpcyBvbmx5IGZvciBsZWdhY3kgMzJiIG1vZGUuCnY2OiBSZWJhc2UgYWZ0ZXIgZmlu YWwgbWVyZ2VkIHZlcnNpb24gb2YgTWlrYSdzIHBwZ3R0L3NjcmF0Y2gKcGF0Y2hlcy4Kdjc6IFRo ZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIHRoZSBwbWw0IHJlZ2lzdGVyIHZhbHVlIGluCmV4ZWNs aXN0c191cGRhdGVfY29udGV4dC4gKEFrYXNoKQp2ODogTW92ZSBwZCBhbmQgcGRwIHNldHVwIGZ1 bmN0aW9ucyB0byBhIHByZXZpb3VzIHBhdGNoLCB0aGV5IGRvIG5vdApiZWxvbmcgaGVyZS4gKEFr YXNoKQp2OTogQ2hlY2sgVVNFU19GVUxMXzQ4QklUX1BQR1RUIGluc3RlYWQgb2YgR0VOOF9DVFhf QUREUkVTU0lOR19NT0RFIGluCmdlbjhfZW1pdF9iYl9zdGFydCB0byBjaGVjayBpZiBlbWl0IHBk cHMgaXMgbmVlZGVkLiAoQWthc2gpCgpDYzogQWthc2ggR29lbCA8YWthc2guZ29lbEBpbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KU2lnbmVk LW9mZi1ieTogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4gKHYyKykK LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDE3ICsrKysrKystLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IGM0OThlYWEuLmFlMmUw ODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC02NTYsOCArNjU2LDggQEAg c3RhdGljIGludCBnZW44X3dyaXRlX3BkcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBnZW44X21tX3N3aXRjaChzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQsCi0JCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQorc3RhdGljIGludCBnZW44X2xlZ2FjeV9tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0LAorCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKIAlpbnQg aSwgcmV0OwogCkBAIC02NzIsNiArNjcyLDEyIEBAIHN0YXRpYyBpbnQgZ2VuOF9tbV9zd2l0Y2go c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50 IGdlbjhfNDhiX21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCisJCQkgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKK3sKKwlyZXR1cm4gZ2VuOF93cml0 ZV9wZHAocmVxLCAwLCBweF9kbWEoJnBwZ3R0LT5wbWw0KSk7Cit9CisKIHN0YXRpYyB2b2lkIGdl bjhfcHBndHRfY2xlYXJfcHRlX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAog CQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHAsCiAJCQkJ ICAgICAgIHVpbnQ2NF90IHN0YXJ0LApAQCAtMTMyMSwxNCArMTMyNywxMyBAQCBzdGF0aWMgaW50 IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiAJcHBndHQtPmJh c2UudW5iaW5kX3ZtYSA9IHBwZ3R0X3VuYmluZF92bWE7CiAJcHBndHQtPmJhc2UuYmluZF92bWEg PSBwcGd0dF9iaW5kX3ZtYTsKIAotCXBwZ3R0LT5zd2l0Y2hfbW0gPSBnZW44X21tX3N3aXRjaDsK LQogCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkgewogCQlyZXQg PSBzZXR1cF9weChwcGd0dC0+YmFzZS5kZXYsICZwcGd0dC0+cG1sNCk7CiAJCWlmIChyZXQpCiAJ CQlnb3RvIGZyZWVfc2NyYXRjaDsKIAogCQlwcGd0dC0+YmFzZS50b3RhbCA9IDFVTEwgPDwgNDg7 CisJCXBwZ3R0LT5zd2l0Y2hfbW0gPSBnZW44XzQ4Yl9tbV9zd2l0Y2g7CiAJfSBlbHNlIHsKIAkJ cmV0ID0gX19wZHBfaW5pdChmYWxzZSwgJnBwZ3R0LT5wZHApOwogCQlpZiAocmV0KQpAQCAtMTM0 Myw2ICsxMzQ4LDcgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0KQogCQkJICovCiAJCQlwcGd0dC0+YmFzZS50b3RhbCA9IHRvX2k5MTUocHBn dHQtPmJhc2UuZGV2KS0+Z3R0LmJhc2UudG90YWw7CiAKKwkJcHBndHQtPnN3aXRjaF9tbSA9IGdl bjhfbGVnYWN5X21tX3N3aXRjaDsKIAkJdHJhY2VfaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVy X2VudHJ5X2FsbG9jKCZwcGd0dC0+YmFzZSwKIAkJCQkJCQkgICAgICAwLCAwLAogCQkJCQkJCSAg ICAgIEdFTjhfUE1MNEVfU0hJRlQpOwpAQCAtMTU0MCw4ICsxNTQ2LDkgQEAgc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF9lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpbnQgajsKIAogCWZv cl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGopIHsKKwkJdTMyIGZvdXJfbGV2ZWwgPSBVU0VT X0ZVTExfNDhCSVRfUFBHVFQoZGV2KSA/IEdFTjhfR0ZYX1BQR1RUXzQ4QiA6IDA7CiAJCUk5MTVf V1JJVEUoUklOR19NT0RFX0dFTjcocmluZyksCi0JCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoR0ZY X1BQR1RUX0VOQUJMRSkpOworCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdGWF9QUEdUVF9FTkFC TEUgfCBmb3VyX2xldmVsKSk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCAz YTc3Njc4Li41YmQxYjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTE2NzAsNiArMTY3 MCw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewogI2RlZmluZSAgIEdGWF9SRVBMQVlf TU9ERQkJKDE8PDExKQogI2RlZmluZSAgIEdGWF9QU01JX0dSQU5VTEFSSVRZCQkoMTw8MTApCiAj ZGVmaW5lICAgR0ZYX1BQR1RUX0VOQUJMRQkJKDE8PDkpCisjZGVmaW5lICAgR0VOOF9HRlhfUFBH VFRfNDhCCQkoMTw8NykKIAogI2RlZmluZSBWTFZfRElTUExBWV9CQVNFIDB4MTgwMDAwCiAjZGVm aW5lIFZMVl9NSVBJX0JBU0UgVkxWX0RJU1BMQVlfQkFTRQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwppbmRleCA5OWJiYThlLi40YzQwNjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAt MTk2LDEzICsxOTYsMjEgQEAKIAlyZWdfc3RhdGVbQ1RYX1BEUCAjIyBuICMjIF9MRFcrMV0gPSBs b3dlcl8zMl9iaXRzKF9hZGRyKTsgXAogfQogCisjZGVmaW5lIEFTU0lHTl9DVFhfUE1MNChwcGd0 dCwgcmVnX3N0YXRlKSB7IFwKKwlyZWdfc3RhdGVbQ1RYX1BEUDBfVURXICsgMV0gPSB1cHBlcl8z Ml9iaXRzKHB4X2RtYSgmcHBndHQtPnBtbDQpKTsgXAorCXJlZ19zdGF0ZVtDVFhfUERQMF9MRFcg KyAxXSA9IGxvd2VyXzMyX2JpdHMocHhfZG1hKCZwcGd0dC0+cG1sNCkpOyBcCit9CisKIGVudW0g ewogCUFEVkFOQ0VEX0NPTlRFWFQgPSAwLAotCUxFR0FDWV9DT05URVhULAorCUxFR0FDWV8zMkJf Q09OVEVYVCwKIAlBRFZBTkNFRF9BRF9DT05URVhULAogCUxFR0FDWV82NEJfQ09OVEVYVAogfTsK LSNkZWZpbmUgR0VOOF9DVFhfTU9ERV9TSElGVCAzCisjZGVmaW5lIEdFTjhfQ1RYX0FERFJFU1NJ TkdfTU9ERV9TSElGVCAzCisjZGVmaW5lIEdFTjhfQ1RYX0FERFJFU1NJTkdfTU9ERShkZXYpICAo VVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikgP1wKKwkJTEVHQUNZXzY0Ql9DT05URVhUIDpcCisJ CUxFR0FDWV8zMkJfQ09OVEVYVCkKIGVudW0gewogCUZBVUxUX0FORF9IQU5HID0gMCwKIAlGQVVM VF9BTkRfSEFMVCwgLyogRGVidWcgb25seSAqLwpAQCAtMjczLDcgKzI4MSw3IEBAIHN0YXRpYyB1 aW50NjRfdCBleGVjbGlzdHNfY3R4X2Rlc2NyaXB0b3Ioc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpycSkKIAlXQVJOX09OKGxyY2EgJiAweEZGRkZGRkZGMDAwMDBGRkZVTEwpOwogCiAJZGVz YyA9IEdFTjhfQ1RYX1ZBTElEOwotCWRlc2MgfD0gTEVHQUNZX0NPTlRFWFQgPDwgR0VOOF9DVFhf TU9ERV9TSElGVDsKKwlkZXNjIHw9IEdFTjhfQ1RYX0FERFJFU1NJTkdfTU9ERShkZXYpIDw8IEdF TjhfQ1RYX0FERFJFU1NJTkdfTU9ERV9TSElGVDsKIAlpZiAoSVNfR0VOOChjdHhfb2JqLT5iYXNl LmRldikpCiAJCWRlc2MgfD0gR0VOOF9DVFhfTDNMTENfQ09IRVJFTlQ7CiAJZGVzYyB8PSBHRU44 X0NUWF9QUklWSUxFR0U7CkBAIC0zNDgsMTAgKzM1NiwxMiBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0 c191cGRhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQogCXJlZ19z dGF0ZVtDVFhfUklOR19UQUlMKzFdID0gcnEtPnRhaWw7CiAJcmVnX3N0YXRlW0NUWF9SSU5HX0JV RkZFUl9TVEFSVCsxXSA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChyYl9vYmopOwogCi0JLyog VHJ1ZSBQUEdUVCB3aXRoIGR5bmFtaWMgcGFnZSBhbGxvY2F0aW9uOiB1cGRhdGUgUERQIHJlZ2lz dGVycyBhbmQKLQkgKiBwb2ludCB0aGUgdW5hbGxvY2F0ZWQgUERQcyB0byB0aGUgc2NyYXRjaCBw YWdlCi0JICovCi0JaWYgKHBwZ3R0KSB7CisJaWYgKHBwZ3R0ICYmICFVU0VTX0ZVTExfNDhCSVRf UFBHVFQocHBndHQtPmJhc2UuZGV2KSkgeworCQkvKiBUcnVlIDMyYiBQUEdUVCB3aXRoIGR5bmFt aWMgcGFnZSBhbGxvY2F0aW9uOiB1cGRhdGUgUERQCisJCSAqIHJlZ2lzdGVycyBhbmQgcG9pbnQg dGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gc2NyYXRjaCBwYWdlLgorCQkgKiBQTUw0IGlzIGFsbG9j YXRlZCBkdXJpbmcgcHBndHQgaW5pdCwgc28gdGhpcyBpcyBub3QgbmVlZGVkCisJCSAqIGluIDQ4 LWJpdCBtb2RlLgorCQkgKi8KIAkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMyk7 CiAJCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDIpOwogCQlBU1NJR05fQ1RYX1BE UChwcGd0dCwgcmVnX3N0YXRlLCAxKTsKQEAgLTE1MTIsMTIgKzE1MjIsMTUgQEAgc3RhdGljIGlu dCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJ ICogSWRlYWxseSwgd2Ugc2hvdWxkIHNldCBGb3JjZSBQRCBSZXN0b3JlIGluIGN0eCBkZXNjcmlw dG9yLAogCSAqIGJ1dCB3ZSBjYW4ndC4gRm9yY2UgUmVzdG9yZSB3b3VsZCBiZSBhIHNlY29uZCBv cHRpb24sIGJ1dAogCSAqIGl0IGlzIHVuc2FmZSBpbiBjYXNlIG9mIGxpdGUtcmVzdG9yZSAoYmVj YXVzZSB0aGUgY3R4IGlzCi0JICogbm90IGlkbGUpLiAqLworCSAqIG5vdCBpZGxlKS4gUE1MNCBp cyBhbGxvY2F0ZWQgZHVyaW5nIHBwZ3R0IGluaXQgc28gdGhpcyBpcworCSAqIG5vdCBuZWVkZWQg aW4gNDgtYml0LiovCiAJaWYgKHJlcS0+Y3R4LT5wcGd0dCAmJgogCSAgICAoaW50ZWxfcmluZ19m bGFnKHJlcS0+cmluZykgJiByZXEtPmN0eC0+cHBndHQtPnBkX2RpcnR5X3JpbmdzKSkgewotCQly ZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBzKHJlcSk7Ci0JCWlmIChyZXQpCi0JCQly ZXR1cm4gcmV0OworCQlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChyZXEtPmk5MTUpKSB7CisJ CQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBzKHJlcSk7CisJCQlpZiAocmV0KQor CQkJCXJldHVybiByZXQ7CisJCX0KIAogCQlyZXEtPmN0eC0+cHBndHQtPnBkX2RpcnR5X3Jpbmdz ICY9IH5pbnRlbF9yaW5nX2ZsYWcocmVxLT5yaW5nKTsKIAl9CkBAIC0yMTk4LDEzICsyMjExLDI0 IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vCiAJcmVnX3N0YXRlW0NUWF9QRFAwX1VEV10gPSBH RU44X1JJTkdfUERQX1VEVyhyaW5nLCAwKTsKIAlyZWdfc3RhdGVbQ1RYX1BEUDBfTERXXSA9IEdF TjhfUklOR19QRFBfTERXKHJpbmcsIDApOwogCi0JLyogV2l0aCBkeW5hbWljIHBhZ2UgYWxsb2Nh dGlvbiwgUERQcyBtYXkgbm90IGJlIGFsbG9jYXRlZCBhdCB0aGlzIHBvaW50LAotCSAqIFBvaW50 IHRoZSB1bmFsbG9jYXRlZCBQRFBzIHRvIHRoZSBzY3JhdGNoIHBhZ2UKLQkgKi8KLQlBU1NJR05f Q1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAzKTsKLQlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVn X3N0YXRlLCAyKTsKLQlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAxKTsKLQlBU1NJ R05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAwKTsKKwlpZiAoVVNFU19GVUxMXzQ4QklUX1BQ R1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKKwkJLyogNjRiIFBQR1RUICg0OGJpdCBjYW5vbmljYWwp CisJCSAqIFBEUDBfREVTQ1JJUFRPUiBjb250YWlucyB0aGUgYmFzZSBhZGRyZXNzIHRvIFBNTDQg YW5kCisJCSAqIG90aGVyIFBEUCBEZXNjcmlwdG9ycyBhcmUgaWdub3JlZC4KKwkJICovCisJCUFT U0lHTl9DVFhfUE1MNChwcGd0dCwgcmVnX3N0YXRlKTsKKwl9IGVsc2UgeworCQkvKiAzMmIgUFBH VFQKKwkJICogUERQKl9ERVNDUklQVE9SIGNvbnRhaW5zIHRoZSBiYXNlIGFkZHJlc3Mgb2Ygc3Bh Y2Ugc3VwcG9ydGVkLgorCQkgKiBXaXRoIGR5bmFtaWMgcGFnZSBhbGxvY2F0aW9uLCBQRFBzIG1h eSBub3QgYmUgYWxsb2NhdGVkIGF0CisJCSAqIHRoaXMgcG9pbnQuIFBvaW50IHRoZSB1bmFsbG9j YXRlZCBQRFBzIHRvIHRoZSBzY3JhdGNoIHBhZ2UKKwkJICovCisJCUFTU0lHTl9DVFhfUERQKHBw Z3R0LCByZWdfc3RhdGUsIDMpOworCQlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAy KTsKKwkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMSk7CisJCUFTU0lHTl9DVFhf UERQKHBwZ3R0LCByZWdfc3RhdGUsIDApOworCX0KKwogCWlmIChyaW5nLT5pZCA9PSBSQ1MpIHsK IAkJcmVnX3N0YXRlW0NUWF9MUklfSEVBREVSXzJdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7 CiAJCXJlZ19zdGF0ZVtDVFhfUl9QV1JfQ0xLX1NUQVRFXSA9IEdFTjhfUl9QV1JfQ0xLX1NUQVRF OwotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==