From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH 2/8] drm/i915: Use literal representation of cdclk tables Date: Sat, 7 Sep 2019 19:57:52 -0700 Message-ID: <20190908025752.5242-1-matthew.d.roper@intel.com> References: <20190907002143.22591-3-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8DF8589CB2 for ; Sun, 8 Sep 2019 02:57:55 +0000 (UTC) In-Reply-To: <20190907002143.22591-3-matthew.d.roper@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 List-Id: intel-gfx@lists.freedesktop.org VGhlIGJzcGVjIGxheXMgb3V0IGxlZ2FsIGNkY2xrIGZyZXF1ZW5jaWVzLCBQTEwgcmF0aW9zLCBh bmQgQ0QyWApkaXZpZGVycyBpbiBhbiBlYXN5LXRvLXJlYWQgdGFibGUgZm9yIG1vc3QgcmVjZW50 IHBsYXRmb3Jtcy4gIFdlJ3ZlIGJlZW4KdHJhbnNsYXRpbmcgdGhlIGRhdGEgZnJvbSB0aGF0IHRh YmxlIGludG8gcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBsb2dpYywKYnV0IGl0J3MgZWFzeSB0byBv dmVybG9vayBhbiBhcmVhIHdlIG5lZWQgdG8gdXBkYXRlIHdoZW4gYWRkaW5nIG5ldwpjZGNsayB2 YWx1ZXMgb3IgZW5hYmxpbmcgbmV3IHBsYXRmb3Jtcy4gIExldCdzIGp1c3QgYWRkIGEgZm9ybSBv ZiB0aGUKYnNwZWMgdGFibGUgdG8gdGhlIGNvZGUgYW5kIHRoZW4gYWRqdXN0IG91ciBmdW5jdGlv bnMgdG8gcHVsbCB3aGF0IHRoZXkKbmVlZCBkaXJlY3RseSBvdXQgb2YgdGhlIHRhYmxlLgoKdjI6 IEZpeCBjb21wYXJpc29uIHdoZW4gZmluZGluZyBiZXN0IGNkY2xrLgoKQ2M6IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hdHQg Um9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jIHwgMzE4ICsrKysrKysrLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5oIHwgICA4ICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICAgNCArCiAzIGZpbGVzIGNoYW5n ZWQsIDEyNSBpbnNlcnRpb25zKCspLCAyMDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jCmluZGV4IGUwN2RlM2I4NGNlYy4uOTBlZmM4MmI4 YTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xr LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jCkBAIC0x MTYxLDI4ICsxMTYxLDk2IEBAIHN0YXRpYyB2b2lkIHNrbF91bmluaXRfY2RjbGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXNrbF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNs a19zdGF0ZSwgSU5WQUxJRF9QSVBFKTsKIH0KIAotc3RhdGljIGludCBieHRfY2FsY19jZGNsayhp bnQgbWluX2NkY2xrKQotewotCWlmIChtaW5fY2RjbGsgPiA1NzYwMDApCi0JCXJldHVybiA2MjQw MDA7Ci0JZWxzZSBpZiAobWluX2NkY2xrID4gMzg0MDAwKQotCQlyZXR1cm4gNTc2MDAwOwotCWVs c2UgaWYgKG1pbl9jZGNsayA+IDI4ODAwMCkKLQkJcmV0dXJuIDM4NDAwMDsKLQllbHNlIGlmICht aW5fY2RjbGsgPiAxNDQwMDApCi0JCXJldHVybiAyODgwMDA7Ci0JZWxzZQotCQlyZXR1cm4gMTQ0 MDAwOworc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa192YWxzIGJ4dF9jZGNsa190YWJs ZVtdID0geworCXsgMTQ0MDAwLCA4LCA2MCB9LAorCXsgMjg4MDAwLCA0LCA2MCB9LAorCXsgMzg0 MDAwLCAzLCA2MCB9LAorCXsgNTc2MDAwLCAyLCA2MCB9LAorCXsgNjI0MDAwLCAyLCA2NSB9LAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa192YWxzIGdsa19jZGNsa190YWJs ZVtdID0geworCXsgIDc5MjAwLCA4LCAzMyB9LAorCXsgMTU4NDAwLCA0LCAzMyB9LAorCXsgMzE2 ODAwLCAyLCAzMyB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa192YWxz IGNubF9jZGNsa190YWJsZVtdID0geworCXsgMTY4MDAwLCA0LCAzNSwgMjggfSwKKwl7IDMzNjAw MCwgMiwgMzUsIDI4IH0sCisJeyA1MjgwMDAsIDIsIDU1LCA0NCB9LAorfTsKKworc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9jZGNsa192YWxzIGljbF9jZGNsa190YWJsZVtdID0geworCXsgMTcy ODAwLCAyLCAxOCwgIDAsICA5IH0sCisJeyAxODAwMDAsIDIsICAwLCAxNSwgIDAgfSwKKwl7IDE5 MjAwMCwgMiwgMjAsIDE2LCAxMCB9LAorCXsgMzA3MjAwLCAyLCAzMiwgIDAsIDE2IH0sCisJeyAz MTIwMDAsIDIsICAwLCAyNiwgIDAgfSwKKwl7IDMyNDAwMCwgNCwgIDAsIDU0LCAgMCB9LAorCXsg MzI2NDAwLCA0LCA2OCwgIDAsIDM0IH0sCisJeyA1NTIwMDAsIDIsICAwLCA0NiwgIDAgfSwKKwl7 IDU1NjgwMCwgMiwgNTgsICAwLCAyOSB9LAorCXsgNjQ4MDAwLCAyLCAgMCwgNTQsICAwIH0sCisJ eyA2NTI4MDAsIDIsIDY4LCAgMCwgMzQgfSwKK307CisKK3N0YXRpYyBpbnQgY2FsY19jZGNsayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgIGludCBtaW5fY2RjbGsp Cit7CisJY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3ZhbHMgKnRhYmxlID0gZGV2X3ByaXYtPmNk Y2xrLnRhYmxlOworCXVuc2lnbmVkIGludCByZWYgPSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmOwor CWludCBiZXN0X2NkY2xrID0gMDsKKwlpbnQgaTsKKworCWlmIChXQVJOX09OKHJlZiAhPSAxOTIw MCAmJiByZWYgIT0gMjQwMDAgJiYgcmVmICE9IDM4NDAwKSkKKwkJcmVmID0gMTkyMDA7CisKKwlm b3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPmNkY2xrLnRhYmxlX3NpemU7IGkrKykgeworCQlpZiAo cmVmID09IDE5MjAwICYmIHRhYmxlW2ldLnJhdGlvXzE5ID09IDAgfHwKKwkJICAgIHJlZiA9PSAy NDAwMCAmJiB0YWJsZVtpXS5yYXRpb18yNCA9PSAwIHx8CisJCSAgICByZWYgPT0gMzg0MDAgJiYg dGFibGVbaV0ucmF0aW9fMzggPT0gMCkKKwkJCWNvbnRpbnVlOworCisJCWJlc3RfY2RjbGsgPSB0 YWJsZVtpXS5jZGNsazsKKwkJaWYgKHRhYmxlW2ldLmNkY2xrID49IG1pbl9jZGNsaykKKwkJCXJl dHVybiBiZXN0X2NkY2xrOworCX0KKworCVdBUk4oMSwgIkNhbm5vdCBzYXRpc2Z5IG1pbmltdW0g Y2RjbGsgJWRcbiIsIG1pbl9jZGNsayk7CisJcmV0dXJuIGJlc3RfY2RjbGs7CiB9CiAKLXN0YXRp YyBpbnQgZ2xrX2NhbGNfY2RjbGsoaW50IG1pbl9jZGNsaykKK3N0YXRpYyBpbnQgY2FsY19jZGNs a19wbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQog ewotCWlmIChtaW5fY2RjbGsgPiAxNTg0MDApCi0JCXJldHVybiAzMTY4MDA7Ci0JZWxzZSBpZiAo bWluX2NkY2xrID4gNzkyMDApCi0JCXJldHVybiAxNTg0MDA7Ci0JZWxzZQotCQlyZXR1cm4gNzky MDA7CisJY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3ZhbHMgKnRhYmxlID0gZGV2X3ByaXYtPmNk Y2xrLnRhYmxlOworCWludCByYXRpbywgYmVzdF9yYXRpbywgaTsKKworCWlmIChjZGNsayA9PSBk ZXZfcHJpdi0+Y2RjbGsuaHcuYnlwYXNzKQorCQlyZXR1cm4gMDsKKworCWZvciAoaSA9IDA7IGkg PCBkZXZfcHJpdi0+Y2RjbGsudGFibGVfc2l6ZTsgaSsrKSB7CisJCWlmIChkZXZfcHJpdi0+Y2Rj bGsuaHcucmVmID09IDE5MjAwKQorCQkJcmF0aW8gPSB0YWJsZVtpXS5yYXRpb18xOTsKKwkJZWxz ZSBpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiA9PSAyNDAwMCkKKwkJCXJhdGlvID0gdGFibGVb aV0ucmF0aW9fMjQ7CisJCWVsc2UKKwkJCXJhdGlvID0gdGFibGVbaV0ucmF0aW9fMzg7CisKKwkJ aWYgKHJhdGlvID09IDApCisJCQljb250aW51ZTsKKwkJZWxzZQorCQkJYmVzdF9yYXRpbyA9IHJh dGlvOworCisJCWlmICh0YWJsZVtpXS5jZGNsayA9PSBjZGNsayB8fAorCQkgICAgV0FSTl9PTih0 YWJsZVtpXS5jZGNsayA+IGNkY2xrKSkKKwkJCXJldHVybiBkZXZfcHJpdi0+Y2RjbGsuaHcucmVm ICogcmF0aW87CisJfQorCisJV0FSTigxLCAiY2RjbGsgJWQgbm90IHZhbGlkIGZvciByZWZjbGsg JWRcbiIsCisJICAgICBjZGNsaywgZGV2X3ByaXYtPmNkY2xrLmh3LnJlZik7CisKKwlyZXR1cm4g ZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAqIGJlc3RfcmF0aW87CiB9CiAKIHN0YXRpYyB1OCBieHRf Y2FsY192b2x0YWdlX2xldmVsKGludCBjZGNsaykKQEAgLTEyMjAsNTIgKzEyODgsNiBAQCBzdGF0 aWMgdTggZWhsX2NhbGNfdm9sdGFnZV9sZXZlbChpbnQgY2RjbGspCiAJCXJldHVybiAwOwogfQog Ci1zdGF0aWMgaW50IGJ4dF9kZV9wbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgaW50IGNkY2xrKQotewotCWludCByYXRpbzsKLQotCWlmIChjZGNsayA9PSBkZXZfcHJp di0+Y2RjbGsuaHcuYnlwYXNzKQotCQlyZXR1cm4gMDsKLQotCXN3aXRjaCAoY2RjbGspIHsKLQlk ZWZhdWx0OgotCQlNSVNTSU5HX0NBU0UoY2RjbGspOwotCQkvKiBmYWxsIHRocm91Z2ggKi8KLQlj YXNlIDE0NDAwMDoKLQljYXNlIDI4ODAwMDoKLQljYXNlIDM4NDAwMDoKLQljYXNlIDU3NjAwMDoK LQkJcmF0aW8gPSA2MDsKLQkJYnJlYWs7Ci0JY2FzZSA2MjQwMDA6Ci0JCXJhdGlvID0gNjU7Ci0J CWJyZWFrOwotCX0KLQotCXJldHVybiBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICogcmF0aW87Ci19 Ci0KLXN0YXRpYyBpbnQgZ2xrX2RlX3BsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBpbnQgY2RjbGspCi17Ci0JaW50IHJhdGlvOwotCi0JaWYgKGNkY2xrID09IGRldl9w cml2LT5jZGNsay5ody5ieXBhc3MpCi0JCXJldHVybiAwOwotCi0Jc3dpdGNoIChjZGNsaykgewot CWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShjZGNsayk7Ci0JCS8qIGZhbGwgdGhyb3VnaCAqLwot CWNhc2UgIDc5MjAwOgotCWNhc2UgMTU4NDAwOgotCWNhc2UgMzE2ODAwOgotCQlyYXRpbyA9IDMz OwotCQlicmVhazsKLQl9Ci0KLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAqIHJhdGlv OwotfQotCiBzdGF0aWMgdm9pZCBjbmxfcmVhZG91dF9yZWZjbGsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2Rj bGtfc3RhdGUpCiB7CkBAIC0xNTc2LDEzICsxNTk4LDggQEAgc3RhdGljIHZvaWQgYnh0X2luaXRf Y2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIC0gVGhlIGluaXRp YWwgQ0RDTEsgbmVlZHMgdG8gYmUgcmVhZCBmcm9tIFZCVC4KIAkgKiAgIE5lZWQgdG8gbWFrZSB0 aGlzIGNoYW5nZSBhZnRlciBWQlQgaGFzIGNoYW5nZXMgZm9yIEJYVC4KIAkgKi8KLQlpZiAoSVNf R0VNSU5JTEFLRShkZXZfcHJpdikpIHsKLQkJY2RjbGtfc3RhdGUuY2RjbGsgPSBnbGtfY2FsY19j ZGNsaygwKTsKLQkJY2RjbGtfc3RhdGUudmNvID0gZ2xrX2RlX3BsbF92Y28oZGV2X3ByaXYsIGNk Y2xrX3N0YXRlLmNkY2xrKTsKLQl9IGVsc2UgewotCQljZGNsa19zdGF0ZS5jZGNsayA9IGJ4dF9j YWxjX2NkY2xrKDApOwotCQljZGNsa19zdGF0ZS52Y28gPSBieHRfZGVfcGxsX3ZjbyhkZXZfcHJp diwgY2RjbGtfc3RhdGUuY2RjbGspOwotCX0KKwljZGNsa19zdGF0ZS5jZGNsayA9IGNhbGNfY2Rj bGsoZGV2X3ByaXYsIDApOworCWNkY2xrX3N0YXRlLnZjbyA9IGNhbGNfY2RjbGtfcGxsX3Zjbyhk ZXZfcHJpdiwgY2RjbGtfc3RhdGUuY2RjbGspOwogCWNkY2xrX3N0YXRlLnZvbHRhZ2VfbGV2ZWwg PSBieHRfY2FsY192b2x0YWdlX2xldmVsKGNkY2xrX3N0YXRlLmNkY2xrKTsKIAogCWJ4dF9zZXRf Y2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0ZSwgSU5WQUxJRF9QSVBFKTsKQEAgLTE1OTksMTYg KzE2MTYsNiBAQCBzdGF0aWMgdm9pZCBieHRfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAlieHRfc2V0X2NkY2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUs IElOVkFMSURfUElQRSk7CiB9CiAKLXN0YXRpYyBpbnQgY25sX2NhbGNfY2RjbGsoaW50IG1pbl9j ZGNsaykKLXsKLQlpZiAobWluX2NkY2xrID4gMzM2MDAwKQotCQlyZXR1cm4gNTI4MDAwOwotCWVs c2UgaWYgKG1pbl9jZGNsayA+IDE2ODAwMCkKLQkJcmV0dXJuIDMzNjAwMDsKLQllbHNlCi0JCXJl dHVybiAxNjgwMDA7Ci19Ci0KIHN0YXRpYyB2b2lkIGNubF9jZGNsa19wbGxfZGlzYWJsZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJdTMyIHZhbDsKQEAgLTE3MTgsMjkg KzE3MjUsNiBAQCBzdGF0aWMgdm9pZCBjbmxfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAlkZXZfcHJpdi0+Y2RjbGsuaHcudm9sdGFnZV9sZXZlbCA9IGNkY2xr X3N0YXRlLT52b2x0YWdlX2xldmVsOwogfQogCi1zdGF0aWMgaW50IGNubF9jZGNsa19wbGxfdmNv KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQotewotCWludCBy YXRpbzsKLQotCWlmIChjZGNsayA9PSBkZXZfcHJpdi0+Y2RjbGsuaHcuYnlwYXNzKQotCQlyZXR1 cm4gMDsKLQotCXN3aXRjaCAoY2RjbGspIHsKLQlkZWZhdWx0OgotCQlNSVNTSU5HX0NBU0UoY2Rj bGspOwotCQkvKiBmYWxsIHRocm91Z2ggKi8KLQljYXNlIDE2ODAwMDoKLQljYXNlIDMzNjAwMDoK LQkJcmF0aW8gPSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmID09IDE5MjAwID8gMzUgOiAyODsKLQkJ YnJlYWs7Ci0JY2FzZSA1MjgwMDA6Ci0JCXJhdGlvID0gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiA9 PSAxOTIwMCA/IDU1IDogNDQ7Ci0JCWJyZWFrOwotCX0KLQotCXJldHVybiBkZXZfcHJpdi0+Y2Rj bGsuaHcucmVmICogcmF0aW87Ci19Ci0KIHN0YXRpYyB2b2lkIGNubF9zYW5pdGl6ZV9jZGNsayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJdTMyIGNkY3RsLCBleHBlY3Rl ZDsKQEAgLTE3ODMsNzcgKzE3NjcsNiBAQCBzdGF0aWMgdm9pZCBjbmxfc2FuaXRpemVfY2RjbGso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWRldl9wcml2LT5jZGNsay5ody52 Y28gPSAtMTsKIH0KIAotc3RhdGljIGludCBpY2xfY2FsY19jZGNsayhpbnQgbWluX2NkY2xrLCB1 bnNpZ25lZCBpbnQgcmVmKQotewotCXN0YXRpYyBjb25zdCBpbnQgcmFuZ2VzXzI0W10gPSB7IDE4 MDAwMCwgMTkyMDAwLCAzMTIwMDAsIDMyNDAwMCwKLQkJCQkJIDU1MjAwMCwgNjQ4MDAwIH07Ci0J c3RhdGljIGNvbnN0IGludCByYW5nZXNfMTlfMzhbXSA9IHsgMTcyODAwLCAxOTIwMDAsIDMwNzIw MCwgMzI2NDAwLAotCQkJCQkgICAgNTU2ODAwLCA2NTI4MDAgfTsKLQljb25zdCBpbnQgKnJhbmdl czsKLQlpbnQgbGVuLCBpOwotCi0Jc3dpdGNoIChyZWYpIHsKLQlkZWZhdWx0OgotCQlNSVNTSU5H X0NBU0UocmVmKTsKLQkJLyogZmFsbCB0aHJvdWdoICovCi0JY2FzZSAyNDAwMDoKLQkJcmFuZ2Vz ID0gcmFuZ2VzXzI0OwotCQlsZW4gPSBBUlJBWV9TSVpFKHJhbmdlc18yNCk7Ci0JCWJyZWFrOwot CWNhc2UgMTkyMDA6Ci0JY2FzZSAzODQwMDoKLQkJcmFuZ2VzID0gcmFuZ2VzXzE5XzM4OwotCQls ZW4gPSBBUlJBWV9TSVpFKHJhbmdlc18xOV8zOCk7Ci0JCWJyZWFrOwotCX0KLQotCWZvciAoaSA9 IDA7IGkgPCBsZW47IGkrKykgewotCQlpZiAobWluX2NkY2xrIDw9IHJhbmdlc1tpXSkKLQkJCXJl dHVybiByYW5nZXNbaV07Ci0JfQotCi0JV0FSTl9PTihtaW5fY2RjbGsgPiByYW5nZXNbbGVuIC0g MV0pOwotCXJldHVybiByYW5nZXNbbGVuIC0gMV07Ci19Ci0KLXN0YXRpYyBpbnQgaWNsX2NhbGNf Y2RjbGtfcGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNs aykKLXsKLQlpbnQgcmF0aW87Ci0KLQlpZiAoY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xrLmh3LmJ5 cGFzcykKLQkJcmV0dXJuIDA7Ci0KLQlzd2l0Y2ggKGNkY2xrKSB7Ci0JZGVmYXVsdDoKLQkJTUlT U0lOR19DQVNFKGNkY2xrKTsKLQkJLyogZmFsbCB0aHJvdWdoICovCi0JY2FzZSAxNzI4MDA6Ci0J Y2FzZSAzMDcyMDA6Ci0JY2FzZSAzMjY0MDA6Ci0JY2FzZSA1NTY4MDA6Ci0JY2FzZSA2NTI4MDA6 Ci0JCVdBUk5fT04oZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAhPSAxOTIwMCAmJgotCQkJZGV2X3By aXYtPmNkY2xrLmh3LnJlZiAhPSAzODQwMCk7Ci0JCWJyZWFrOwotCWNhc2UgMTgwMDAwOgotCWNh c2UgMzEyMDAwOgotCWNhc2UgMzI0MDAwOgotCWNhc2UgNTUyMDAwOgotCWNhc2UgNjQ4MDAwOgot CQlXQVJOX09OKGRldl9wcml2LT5jZGNsay5ody5yZWYgIT0gMjQwMDApOwotCQlicmVhazsKLQlj YXNlIDE5MjAwMDoKLQkJV0FSTl9PTihkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICE9IDE5MjAwICYm Ci0JCQlkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICE9IDM4NDAwICYmCi0JCQlkZXZfcHJpdi0+Y2Rj bGsuaHcucmVmICE9IDI0MDAwKTsKLQkJYnJlYWs7Ci0JfQotCi0JcmF0aW8gPSBjZGNsayAvIChk ZXZfcHJpdi0+Y2RjbGsuaHcucmVmIC8gMik7Ci0KLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3 LnJlZiAqIHJhdGlvOwotfQotCiBzdGF0aWMgdm9pZCBpY2xfaW5pdF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIHNh bml0aXplZF9zdGF0ZTsKQEAgLTE4ODIsOSArMTc5NSw5IEBAIHN0YXRpYyB2b2lkIGljbF9pbml0 X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlEUk1fREVCVUdfS01T KCJTYW5pdGl6aW5nIGNkY2xrIHByb2dyYW1tZWQgYnkgcHJlLW9zXG4iKTsKIAogCXNhbml0aXpl ZF9zdGF0ZS5yZWYgPSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmOwotCXNhbml0aXplZF9zdGF0ZS5j ZGNsayA9IGljbF9jYWxjX2NkY2xrKDAsIHNhbml0aXplZF9zdGF0ZS5yZWYpOwotCXNhbml0aXpl ZF9zdGF0ZS52Y28gPSBpY2xfY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LAotCQkJCQkJICAg ICBzYW5pdGl6ZWRfc3RhdGUuY2RjbGspOworCXNhbml0aXplZF9zdGF0ZS5jZGNsayA9IGNhbGNf Y2RjbGsoZGV2X3ByaXYsIDApOworCXNhbml0aXplZF9zdGF0ZS52Y28gPSBjYWxjX2NkY2xrX3Bs bF92Y28oZGV2X3ByaXYsCisJCQkJCQkgc2FuaXRpemVkX3N0YXRlLmNkY2xrKTsKIAlpZiAoSVNf RUxLSEFSVExBS0UoZGV2X3ByaXYpKQogCQlzYW5pdGl6ZWRfc3RhdGUudm9sdGFnZV9sZXZlbCA9 CiAJCQllaGxfY2FsY192b2x0YWdlX2xldmVsKHNhbml0aXplZF9zdGF0ZS5jZGNsayk7CkBAIC0x OTIzLDggKzE4MzYsOCBAQCBzdGF0aWMgdm9pZCBjbmxfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAljZGNsa19zdGF0ZSA9IGRldl9wcml2LT5jZGNsay5o dzsKIAotCWNkY2xrX3N0YXRlLmNkY2xrID0gY25sX2NhbGNfY2RjbGsoMCk7Ci0JY2RjbGtfc3Rh dGUudmNvID0gY25sX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrX3N0YXRlLmNkY2xrKTsK KwljZGNsa19zdGF0ZS5jZGNsayA9IGNhbGNfY2RjbGsoZGV2X3ByaXYsIDApOworCWNkY2xrX3N0 YXRlLnZjbyA9IGNhbGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGtfc3RhdGUuY2RjbGsp OwogCWNkY2xrX3N0YXRlLnZvbHRhZ2VfbGV2ZWwgPSBjbmxfY2FsY192b2x0YWdlX2xldmVsKGNk Y2xrX3N0YXRlLmNkY2xrKTsKIAogCWNubF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0 ZSwgSU5WQUxJRF9QSVBFKTsKQEAgLTI0MjYsMTMgKzIzMzksOCBAQCBzdGF0aWMgaW50IGJ4dF9t b2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJaWYg KG1pbl9jZGNsayA8IDApCiAJCXJldHVybiBtaW5fY2RjbGs7CiAKLQlpZiAoSVNfR0VNSU5JTEFL RShkZXZfcHJpdikpIHsKLQkJY2RjbGsgPSBnbGtfY2FsY19jZGNsayhtaW5fY2RjbGspOwotCQl2 Y28gPSBnbGtfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOwotCX0gZWxzZSB7Ci0JCWNkY2xr ID0gYnh0X2NhbGNfY2RjbGsobWluX2NkY2xrKTsKLQkJdmNvID0gYnh0X2RlX3BsbF92Y28oZGV2 X3ByaXYsIGNkY2xrKTsKLQl9CisJY2RjbGsgPSBjYWxjX2NkY2xrKGRldl9wcml2LCBtaW5fY2Rj bGspOworCXZjbyA9IGNhbGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOwogCiAJc3Rh dGUtPmNkY2xrLmxvZ2ljYWwudmNvID0gdmNvOwogCXN0YXRlLT5jZGNsay5sb2dpY2FsLmNkY2xr ID0gY2RjbGs7CkBAIC0yNDQwLDEzICsyMzQ4LDggQEAgc3RhdGljIGludCBieHRfbW9kZXNldF9j YWxjX2NkY2xrKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQlieHRfY2FsY192 b2x0YWdlX2xldmVsKGNkY2xrKTsKIAogCWlmICghc3RhdGUtPmFjdGl2ZV9waXBlcykgewotCQlp ZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKLQkJCWNkY2xrID0gZ2xrX2NhbGNfY2RjbGso c3RhdGUtPmNkY2xrLmZvcmNlX21pbl9jZGNsayk7Ci0JCQl2Y28gPSBnbGtfZGVfcGxsX3Zjbyhk ZXZfcHJpdiwgY2RjbGspOwotCQl9IGVsc2UgewotCQkJY2RjbGsgPSBieHRfY2FsY19jZGNsayhz dGF0ZS0+Y2RjbGsuZm9yY2VfbWluX2NkY2xrKTsKLQkJCXZjbyA9IGJ4dF9kZV9wbGxfdmNvKGRl dl9wcml2LCBjZGNsayk7Ci0JCX0KKwkJY2RjbGsgPSBjYWxjX2NkY2xrKGRldl9wcml2LCBzdGF0 ZS0+Y2RjbGsuZm9yY2VfbWluX2NkY2xrKTsKKwkJdmNvID0gY2FsY19jZGNsa19wbGxfdmNvKGRl dl9wcml2LCBjZGNsayk7CiAKIAkJc3RhdGUtPmNkY2xrLmFjdHVhbC52Y28gPSB2Y287CiAJCXN0 YXRlLT5jZGNsay5hY3R1YWwuY2RjbGsgPSBjZGNsazsKQEAgLTI0NjgsOCArMjM3MSw4IEBAIHN0 YXRpYyBpbnQgY25sX21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSkKIAlpZiAobWluX2NkY2xrIDwgMCkKIAkJcmV0dXJuIG1pbl9jZGNsazsKIAotCWNk Y2xrID0gY25sX2NhbGNfY2RjbGsobWluX2NkY2xrKTsKLQl2Y28gPSBjbmxfY2RjbGtfcGxsX3Zj byhkZXZfcHJpdiwgY2RjbGspOworCWNkY2xrID0gY2FsY19jZGNsayhkZXZfcHJpdiwgbWluX2Nk Y2xrKTsKKwl2Y28gPSBjYWxjX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKIAogCXN0 YXRlLT5jZGNsay5sb2dpY2FsLnZjbyA9IHZjbzsKIAlzdGF0ZS0+Y2RjbGsubG9naWNhbC5jZGNs ayA9IGNkY2xrOwpAQCAtMjQ3OCw4ICsyMzgxLDggQEAgc3RhdGljIGludCBjbmxfbW9kZXNldF9j YWxjX2NkY2xrKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQkgICAgY25sX2Nv bXB1dGVfbWluX3ZvbHRhZ2VfbGV2ZWwoc3RhdGUpKTsKIAogCWlmICghc3RhdGUtPmFjdGl2ZV9w aXBlcykgewotCQljZGNsayA9IGNubF9jYWxjX2NkY2xrKHN0YXRlLT5jZGNsay5mb3JjZV9taW5f Y2RjbGspOwotCQl2Y28gPSBjbmxfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOworCQlj ZGNsayA9IGNhbGNfY2RjbGsoZGV2X3ByaXYsIHN0YXRlLT5jZGNsay5mb3JjZV9taW5fY2RjbGsp OworCQl2Y28gPSBjYWxjX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKIAogCQlzdGF0 ZS0+Y2RjbGsuYWN0dWFsLnZjbyA9IHZjbzsKIAkJc3RhdGUtPmNkY2xrLmFjdHVhbC5jZGNsayA9 IGNkY2xrOwpAQCAtMjQ5NSwxNSArMjM5OCwxNCBAQCBzdGF0aWMgaW50IGNubF9tb2Rlc2V0X2Nh bGNfY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiBzdGF0aWMgaW50IGlj bF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFz ZS5kZXYpOwotCXVuc2lnbmVkIGludCByZWYgPSBzdGF0ZS0+Y2RjbGsubG9naWNhbC5yZWY7CiAJ aW50IG1pbl9jZGNsaywgY2RjbGssIHZjbzsKIAogCW1pbl9jZGNsayA9IGludGVsX2NvbXB1dGVf bWluX2NkY2xrKHN0YXRlKTsKIAlpZiAobWluX2NkY2xrIDwgMCkKIAkJcmV0dXJuIG1pbl9jZGNs azsKIAotCWNkY2xrID0gaWNsX2NhbGNfY2RjbGsobWluX2NkY2xrLCByZWYpOwotCXZjbyA9IGlj bF9jYWxjX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKKwljZGNsayA9IGNhbGNfY2Rj bGsoZGV2X3ByaXYsIG1pbl9jZGNsayk7CisJdmNvID0gY2FsY19jZGNsa19wbGxfdmNvKGRldl9w cml2LCBjZGNsayk7CiAKIAlzdGF0ZS0+Y2RjbGsubG9naWNhbC52Y28gPSB2Y287CiAJc3RhdGUt PmNkY2xrLmxvZ2ljYWwuY2RjbGsgPSBjZGNsazsKQEAgLTI1MTcsOCArMjQxOSw4IEBAIHN0YXRp YyBpbnQgaWNsX21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSkKIAkJCSAgICBjbmxfY29tcHV0ZV9taW5fdm9sdGFnZV9sZXZlbChzdGF0ZSkpOwogCiAJ aWYgKCFzdGF0ZS0+YWN0aXZlX3BpcGVzKSB7Ci0JCWNkY2xrID0gaWNsX2NhbGNfY2RjbGsoc3Rh dGUtPmNkY2xrLmZvcmNlX21pbl9jZGNsaywgcmVmKTsKLQkJdmNvID0gaWNsX2NhbGNfY2RjbGtf cGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOworCQljZGNsayA9IGNhbGNfY2RjbGsoZGV2X3ByaXYs IHN0YXRlLT5jZGNsay5mb3JjZV9taW5fY2RjbGspOworCQl2Y28gPSBjYWxjX2NkY2xrX3BsbF92 Y28oZGV2X3ByaXYsIGNkY2xrKTsKIAogCQlzdGF0ZS0+Y2RjbGsuYWN0dWFsLnZjbyA9IHZjbzsK IAkJc3RhdGUtPmNkY2xrLmFjdHVhbC5jZGNsayA9IGNkY2xrOwpAQCAtMjc1NCwxMiArMjY1Niwx OCBAQCB2b2lkIGludGVsX2luaXRfY2RjbGtfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7CiAJCWRldl9wcml2 LT5kaXNwbGF5LnNldF9jZGNsayA9IGNubF9zZXRfY2RjbGs7CiAJCWRldl9wcml2LT5kaXNwbGF5 Lm1vZGVzZXRfY2FsY19jZGNsayA9IGljbF9tb2Rlc2V0X2NhbGNfY2RjbGs7CisJCWRldl9wcml2 LT5jZGNsay50YWJsZSA9IGljbF9jZGNsa190YWJsZTsKKwkJZGV2X3ByaXYtPmNkY2xrLnRhYmxl X3NpemUgPSBBUlJBWV9TSVpFKGljbF9jZGNsa190YWJsZSk7CiAJfSBlbHNlIGlmIChJU19DQU5O T05MQUtFKGRldl9wcml2KSkgewogCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfY2RjbGsgPSBjbmxf c2V0X2NkY2xrOwogCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPSBjbmxf bW9kZXNldF9jYWxjX2NkY2xrOworCQlkZXZfcHJpdi0+Y2RjbGsudGFibGUgPSBjbmxfY2RjbGtf dGFibGU7CisJCWRldl9wcml2LT5jZGNsay50YWJsZV9zaXplID0gQVJSQVlfU0laRShjbmxfY2Rj bGtfdGFibGUpOwogCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKIAkJZGV2X3By aXYtPmRpc3BsYXkuc2V0X2NkY2xrID0gYnh0X3NldF9jZGNsazsKIAkJZGV2X3ByaXYtPmRpc3Bs YXkubW9kZXNldF9jYWxjX2NkY2xrID0gYnh0X21vZGVzZXRfY2FsY19jZGNsazsKKwkJZGV2X3By aXYtPmNkY2xrLnRhYmxlID0gYnh0X2NkY2xrX3RhYmxlOworCQlkZXZfcHJpdi0+Y2RjbGsudGFi bGVfc2l6ZSA9IEFSUkFZX1NJWkUoYnh0X2NkY2xrX3RhYmxlKTsKIAl9IGVsc2UgaWYgKElTX0dF TjlfQkMoZGV2X3ByaXYpKSB7CiAJCWRldl9wcml2LT5kaXNwbGF5LnNldF9jZGNsayA9IHNrbF9z ZXRfY2RjbGs7CiAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayA9IHNrbF9t b2Rlc2V0X2NhbGNfY2RjbGs7CkBAIC0yNzc0LDcgKzI2ODIsNyBAQCB2b2lkIGludGVsX2luaXRf Y2RjbGtfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlkZXZfcHJp di0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPSB2bHZfbW9kZXNldF9jYWxjX2NkY2xrOwog CX0KIAotCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTApCisJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTApCiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayA9IGJ4dF9nZXRfY2RjbGs7 CiAJZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCiAJCWRldl9wcml2LT5kaXNwbGF5Lmdl dF9jZGNsayA9IHNrbF9nZXRfY2RjbGs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2NkY2xrLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2NkY2xrLmgKaW5kZXggNGQ2ZjdmNWY4OTMwLi44MGRjMTdhMDdhYTIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmgKQEAgLTE1LDYgKzE1LDE0IEBAIHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGU7CiBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGU7CiBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKIAorc3RydWN0IGludGVsX2NkY2xrX3ZhbHMgeworCWludCBj ZGNsazsKKwlpbnQgZGl2aWRlcjsgICAvKiBDRDJYIGRpdmlkZXIgKiAyICovCisJaW50IHJhdGlv XzE5OworCWludCByYXRpb18yNDsKKwlpbnQgcmF0aW9fMzg7Cit9OworCiBpbnQgaW50ZWxfY3J0 Y19jb21wdXRlX21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7CiB2b2lkIGludGVsX2NkY2xrX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpOwogdm9pZCBpbnRlbF9jZGNsa191bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZGI3NDgwODMxZTUyLi5hNGQyNDkxOTNk YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTQyMCw2ICsxNDIwLDEwIEBAIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlIHsKIAkJLyogVGhlIGN1cnJlbnQgaGFyZHdhcmUgY2RjbGsgc3Rh dGUgKi8KIAkJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIGh3OwogCisJCS8qIGNkY2xrLCBkaXZp ZGVyLCBhbmQgcmF0aW8gdGFibGUgZnJvbSBic3BlYyAqLworCQljb25zdCBzdHJ1Y3QgaW50ZWxf Y2RjbGtfdmFscyAqdGFibGU7CisJCWludCB0YWJsZV9zaXplOworCiAJCWludCBmb3JjZV9taW5f Y2RjbGs7CiAJfSBjZGNsazsKIAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZng=