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 21:05:00 -0700 Message-ID: <20190908040500.18930-1-matthew.d.roper@intel.com> References: <20190908025752.5242-1-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 6317989C9B for ; Sun, 8 Sep 2019 04:05:03 +0000 (UTC) In-Reply-To: <20190908025752.5242-1-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 IEZpeCBjb21wYXJpc29uIHdoZW4gZmluZGluZyBiZXN0IGNkY2xrLgoKdjM6IEFub3RoZXIgbG9n aWMgZml4IGZvciBjYWxjX2NkY2xrLgoKQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFs YUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5y b3BlckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9j ZGNsay5jIHwgMzE4ICsrKysrKysrLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9jZGNsay5oIHwgICA4ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgICAgICB8ICAgNCArCiAzIGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25z KCspLCAyMDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9jZGNsay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jZGNsay5jCmluZGV4IGUwN2RlM2I4NGNlYy4uY2E2NDE0M2I2ZDdlIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jZGNsay5jCkBAIC0xMTYxLDI4ICsxMTYxLDk2IEBA IHN0YXRpYyB2b2lkIHNrbF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCXNrbF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0ZSwgSU5WQUxJRF9Q SVBFKTsKIH0KIAotc3RhdGljIGludCBieHRfY2FsY19jZGNsayhpbnQgbWluX2NkY2xrKQotewot CWlmIChtaW5fY2RjbGsgPiA1NzYwMDApCi0JCXJldHVybiA2MjQwMDA7Ci0JZWxzZSBpZiAobWlu X2NkY2xrID4gMzg0MDAwKQotCQlyZXR1cm4gNTc2MDAwOwotCWVsc2UgaWYgKG1pbl9jZGNsayA+ IDI4ODAwMCkKLQkJcmV0dXJuIDM4NDAwMDsKLQllbHNlIGlmIChtaW5fY2RjbGsgPiAxNDQwMDAp Ci0JCXJldHVybiAyODgwMDA7Ci0JZWxzZQotCQlyZXR1cm4gMTQ0MDAwOworc3RhdGljIGNvbnN0 IHN0cnVjdCBpbnRlbF9jZGNsa192YWxzIGJ4dF9jZGNsa190YWJsZVtdID0geworCXsgMTQ0MDAw LCA4LCA2MCB9LAorCXsgMjg4MDAwLCA0LCA2MCB9LAorCXsgMzg0MDAwLCAzLCA2MCB9LAorCXsg NTc2MDAwLCAyLCA2MCB9LAorCXsgNjI0MDAwLCAyLCA2NSB9LAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBpbnRlbF9jZGNsa192YWxzIGdsa19jZGNsa190YWJsZVtdID0geworCXsgIDc5MjAw LCA4LCAzMyB9LAorCXsgMTU4NDAwLCA0LCAzMyB9LAorCXsgMzE2ODAwLCAyLCAzMyB9LAorfTsK Kworc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa192YWxzIGNubF9jZGNsa190YWJsZVtd ID0geworCXsgMTY4MDAwLCA0LCAzNSwgMjggfSwKKwl7IDMzNjAwMCwgMiwgMzUsIDI4IH0sCisJ eyA1MjgwMDAsIDIsIDU1LCA0NCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9j ZGNsa192YWxzIGljbF9jZGNsa190YWJsZVtdID0geworCXsgMTcyODAwLCAyLCAxOCwgIDAsICA5 IH0sCisJeyAxODAwMDAsIDIsICAwLCAxNSwgIDAgfSwKKwl7IDE5MjAwMCwgMiwgMjAsIDE2LCAx MCB9LAorCXsgMzA3MjAwLCAyLCAzMiwgIDAsIDE2IH0sCisJeyAzMTIwMDAsIDIsICAwLCAyNiwg IDAgfSwKKwl7IDMyNDAwMCwgNCwgIDAsIDU0LCAgMCB9LAorCXsgMzI2NDAwLCA0LCA2OCwgIDAs IDM0IH0sCisJeyA1NTIwMDAsIDIsICAwLCA0NiwgIDAgfSwKKwl7IDU1NjgwMCwgMiwgNTgsICAw LCAyOSB9LAorCXsgNjQ4MDAwLCAyLCAgMCwgNTQsICAwIH0sCisJeyA2NTI4MDAsIDIsIDY4LCAg MCwgMzQgfSwKK307CisKK3N0YXRpYyBpbnQgY2FsY19jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgIGludCBtaW5fY2RjbGspCit7CisJY29uc3Qgc3RydWN0 IGludGVsX2NkY2xrX3ZhbHMgKnRhYmxlID0gZGV2X3ByaXYtPmNkY2xrLnRhYmxlOworCXVuc2ln bmVkIGludCByZWYgPSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmOworCWludCBiZXN0X2NkY2xrID0g MDsKKwlpbnQgaTsKKworCWlmIChXQVJOX09OKHJlZiAhPSAxOTIwMCAmJiByZWYgIT0gMjQwMDAg JiYgcmVmICE9IDM4NDAwKSkKKwkJcmVmID0gMTkyMDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgZGV2 X3ByaXYtPmNkY2xrLnRhYmxlX3NpemU7IGkrKykgeworCQlpZiAoKHJlZiA9PSAxOTIwMCAmJiB0 YWJsZVtpXS5yYXRpb18xOSA9PSAwKSB8fAorCQkgICAgKHJlZiA9PSAyNDAwMCAmJiB0YWJsZVtp XS5yYXRpb18yNCA9PSAwKSB8fAorCQkgICAgKHJlZiA9PSAzODQwMCAmJiB0YWJsZVtpXS5yYXRp b18zOCA9PSAwKSkKKwkJCWNvbnRpbnVlOworCisJCWJlc3RfY2RjbGsgPSB0YWJsZVtpXS5jZGNs azsKKwkJaWYgKHRhYmxlW2ldLmNkY2xrID49IG1pbl9jZGNsaykKKwkJCXJldHVybiBiZXN0X2Nk Y2xrOworCX0KKworCVdBUk4oMSwgIkNhbm5vdCBzYXRpc2Z5IG1pbmltdW0gY2RjbGsgJWRcbiIs IG1pbl9jZGNsayk7CisJcmV0dXJuIGJlc3RfY2RjbGs7CiB9CiAKLXN0YXRpYyBpbnQgZ2xrX2Nh bGNfY2RjbGsoaW50IG1pbl9jZGNsaykKK3N0YXRpYyBpbnQgY2FsY19jZGNsa19wbGxfdmNvKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQogewotCWlmIChtaW5f Y2RjbGsgPiAxNTg0MDApCi0JCXJldHVybiAzMTY4MDA7Ci0JZWxzZSBpZiAobWluX2NkY2xrID4g NzkyMDApCi0JCXJldHVybiAxNTg0MDA7Ci0JZWxzZQotCQlyZXR1cm4gNzkyMDA7CisJY29uc3Qg c3RydWN0IGludGVsX2NkY2xrX3ZhbHMgKnRhYmxlID0gZGV2X3ByaXYtPmNkY2xrLnRhYmxlOwor CWludCByYXRpbywgYmVzdF9yYXRpbywgaTsKKworCWlmIChjZGNsayA9PSBkZXZfcHJpdi0+Y2Rj bGsuaHcuYnlwYXNzKQorCQlyZXR1cm4gMDsKKworCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+ Y2RjbGsudGFibGVfc2l6ZTsgaSsrKSB7CisJCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcucmVmID09 IDE5MjAwKQorCQkJcmF0aW8gPSB0YWJsZVtpXS5yYXRpb18xOTsKKwkJZWxzZSBpZiAoZGV2X3By aXYtPmNkY2xrLmh3LnJlZiA9PSAyNDAwMCkKKwkJCXJhdGlvID0gdGFibGVbaV0ucmF0aW9fMjQ7 CisJCWVsc2UKKwkJCXJhdGlvID0gdGFibGVbaV0ucmF0aW9fMzg7CisKKwkJaWYgKHJhdGlvID09 IDApCisJCQljb250aW51ZTsKKwkJZWxzZQorCQkJYmVzdF9yYXRpbyA9IHJhdGlvOworCisJCWlm ICh0YWJsZVtpXS5jZGNsayA9PSBjZGNsayB8fAorCQkgICAgV0FSTl9PTih0YWJsZVtpXS5jZGNs ayA+IGNkY2xrKSkKKwkJCXJldHVybiBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICogcmF0aW87CisJ fQorCisJV0FSTigxLCAiY2RjbGsgJWQgbm90IHZhbGlkIGZvciByZWZjbGsgJWRcbiIsCisJICAg ICBjZGNsaywgZGV2X3ByaXYtPmNkY2xrLmh3LnJlZik7CisKKwlyZXR1cm4gZGV2X3ByaXYtPmNk Y2xrLmh3LnJlZiAqIGJlc3RfcmF0aW87CiB9CiAKIHN0YXRpYyB1OCBieHRfY2FsY192b2x0YWdl X2xldmVsKGludCBjZGNsaykKQEAgLTEyMjAsNTIgKzEyODgsNiBAQCBzdGF0aWMgdTggZWhsX2Nh bGNfdm9sdGFnZV9sZXZlbChpbnQgY2RjbGspCiAJCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50 IGJ4dF9kZV9wbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNk Y2xrKQotewotCWludCByYXRpbzsKLQotCWlmIChjZGNsayA9PSBkZXZfcHJpdi0+Y2RjbGsuaHcu YnlwYXNzKQotCQlyZXR1cm4gMDsKLQotCXN3aXRjaCAoY2RjbGspIHsKLQlkZWZhdWx0OgotCQlN SVNTSU5HX0NBU0UoY2RjbGspOwotCQkvKiBmYWxsIHRocm91Z2ggKi8KLQljYXNlIDE0NDAwMDoK LQljYXNlIDI4ODAwMDoKLQljYXNlIDM4NDAwMDoKLQljYXNlIDU3NjAwMDoKLQkJcmF0aW8gPSA2 MDsKLQkJYnJlYWs7Ci0JY2FzZSA2MjQwMDA6Ci0JCXJhdGlvID0gNjU7Ci0JCWJyZWFrOwotCX0K LQotCXJldHVybiBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICogcmF0aW87Ci19Ci0KLXN0YXRpYyBp bnQgZ2xrX2RlX3BsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQg Y2RjbGspCi17Ci0JaW50IHJhdGlvOwotCi0JaWYgKGNkY2xrID09IGRldl9wcml2LT5jZGNsay5o dy5ieXBhc3MpCi0JCXJldHVybiAwOwotCi0Jc3dpdGNoIChjZGNsaykgewotCWRlZmF1bHQ6Ci0J CU1JU1NJTkdfQ0FTRShjZGNsayk7Ci0JCS8qIGZhbGwgdGhyb3VnaCAqLwotCWNhc2UgIDc5MjAw OgotCWNhc2UgMTU4NDAwOgotCWNhc2UgMzE2ODAwOgotCQlyYXRpbyA9IDMzOwotCQlicmVhazsK LQl9Ci0KLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAqIHJhdGlvOwotfQotCiBzdGF0 aWMgdm9pZCBjbmxfcmVhZG91dF9yZWZjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCiB7 CkBAIC0xNTc2LDEzICsxNTk4LDggQEAgc3RhdGljIHZvaWQgYnh0X2luaXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIC0gVGhlIGluaXRpYWwgQ0RDTEsgbmVl ZHMgdG8gYmUgcmVhZCBmcm9tIFZCVC4KIAkgKiAgIE5lZWQgdG8gbWFrZSB0aGlzIGNoYW5nZSBh ZnRlciBWQlQgaGFzIGNoYW5nZXMgZm9yIEJYVC4KIAkgKi8KLQlpZiAoSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpIHsKLQkJY2RjbGtfc3RhdGUuY2RjbGsgPSBnbGtfY2FsY19jZGNsaygwKTsKLQkJ Y2RjbGtfc3RhdGUudmNvID0gZ2xrX2RlX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrX3N0YXRlLmNk Y2xrKTsKLQl9IGVsc2UgewotCQljZGNsa19zdGF0ZS5jZGNsayA9IGJ4dF9jYWxjX2NkY2xrKDAp OwotCQljZGNsa19zdGF0ZS52Y28gPSBieHRfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGtfc3Rh dGUuY2RjbGspOwotCX0KKwljZGNsa19zdGF0ZS5jZGNsayA9IGNhbGNfY2RjbGsoZGV2X3ByaXYs IDApOworCWNkY2xrX3N0YXRlLnZjbyA9IGNhbGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2Rj bGtfc3RhdGUuY2RjbGspOwogCWNkY2xrX3N0YXRlLnZvbHRhZ2VfbGV2ZWwgPSBieHRfY2FsY192 b2x0YWdlX2xldmVsKGNkY2xrX3N0YXRlLmNkY2xrKTsKIAogCWJ4dF9zZXRfY2RjbGsoZGV2X3By aXYsICZjZGNsa19zdGF0ZSwgSU5WQUxJRF9QSVBFKTsKQEAgLTE1OTksMTYgKzE2MTYsNiBAQCBz dGF0aWMgdm9pZCBieHRfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlieHRfc2V0X2NkY2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUsIElOVkFMSURfUElQ RSk7CiB9CiAKLXN0YXRpYyBpbnQgY25sX2NhbGNfY2RjbGsoaW50IG1pbl9jZGNsaykKLXsKLQlp ZiAobWluX2NkY2xrID4gMzM2MDAwKQotCQlyZXR1cm4gNTI4MDAwOwotCWVsc2UgaWYgKG1pbl9j ZGNsayA+IDE2ODAwMCkKLQkJcmV0dXJuIDMzNjAwMDsKLQllbHNlCi0JCXJldHVybiAxNjgwMDA7 Ci19Ci0KIHN0YXRpYyB2b2lkIGNubF9jZGNsa19wbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJdTMyIHZhbDsKQEAgLTE3MTgsMjkgKzE3MjUsNiBAQCBz dGF0aWMgdm9pZCBjbmxfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAlkZXZfcHJpdi0+Y2RjbGsuaHcudm9sdGFnZV9sZXZlbCA9IGNkY2xrX3N0YXRlLT52b2x0 YWdlX2xldmVsOwogfQogCi1zdGF0aWMgaW50IGNubF9jZGNsa19wbGxfdmNvKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGNkY2xrKQotewotCWludCByYXRpbzsKLQotCWlm IChjZGNsayA9PSBkZXZfcHJpdi0+Y2RjbGsuaHcuYnlwYXNzKQotCQlyZXR1cm4gMDsKLQotCXN3 aXRjaCAoY2RjbGspIHsKLQlkZWZhdWx0OgotCQlNSVNTSU5HX0NBU0UoY2RjbGspOwotCQkvKiBm YWxsIHRocm91Z2ggKi8KLQljYXNlIDE2ODAwMDoKLQljYXNlIDMzNjAwMDoKLQkJcmF0aW8gPSBk ZXZfcHJpdi0+Y2RjbGsuaHcucmVmID09IDE5MjAwID8gMzUgOiAyODsKLQkJYnJlYWs7Ci0JY2Fz ZSA1MjgwMDA6Ci0JCXJhdGlvID0gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiA9PSAxOTIwMCA/IDU1 IDogNDQ7Ci0JCWJyZWFrOwotCX0KLQotCXJldHVybiBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICog cmF0aW87Ci19Ci0KIHN0YXRpYyB2b2lkIGNubF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJdTMyIGNkY3RsLCBleHBlY3RlZDsKQEAgLTE3ODMs NzcgKzE3NjcsNiBAQCBzdGF0aWMgdm9pZCBjbmxfc2FuaXRpemVfY2RjbGsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWRldl9wcml2LT5jZGNsay5ody52Y28gPSAtMTsKIH0K IAotc3RhdGljIGludCBpY2xfY2FsY19jZGNsayhpbnQgbWluX2NkY2xrLCB1bnNpZ25lZCBpbnQg cmVmKQotewotCXN0YXRpYyBjb25zdCBpbnQgcmFuZ2VzXzI0W10gPSB7IDE4MDAwMCwgMTkyMDAw LCAzMTIwMDAsIDMyNDAwMCwKLQkJCQkJIDU1MjAwMCwgNjQ4MDAwIH07Ci0Jc3RhdGljIGNvbnN0 IGludCByYW5nZXNfMTlfMzhbXSA9IHsgMTcyODAwLCAxOTIwMDAsIDMwNzIwMCwgMzI2NDAwLAot CQkJCQkgICAgNTU2ODAwLCA2NTI4MDAgfTsKLQljb25zdCBpbnQgKnJhbmdlczsKLQlpbnQgbGVu LCBpOwotCi0Jc3dpdGNoIChyZWYpIHsKLQlkZWZhdWx0OgotCQlNSVNTSU5HX0NBU0UocmVmKTsK LQkJLyogZmFsbCB0aHJvdWdoICovCi0JY2FzZSAyNDAwMDoKLQkJcmFuZ2VzID0gcmFuZ2VzXzI0 OwotCQlsZW4gPSBBUlJBWV9TSVpFKHJhbmdlc18yNCk7Ci0JCWJyZWFrOwotCWNhc2UgMTkyMDA6 Ci0JY2FzZSAzODQwMDoKLQkJcmFuZ2VzID0gcmFuZ2VzXzE5XzM4OwotCQlsZW4gPSBBUlJBWV9T SVpFKHJhbmdlc18xOV8zOCk7Ci0JCWJyZWFrOwotCX0KLQotCWZvciAoaSA9IDA7IGkgPCBsZW47 IGkrKykgewotCQlpZiAobWluX2NkY2xrIDw9IHJhbmdlc1tpXSkKLQkJCXJldHVybiByYW5nZXNb aV07Ci0JfQotCi0JV0FSTl9PTihtaW5fY2RjbGsgPiByYW5nZXNbbGVuIC0gMV0pOwotCXJldHVy biByYW5nZXNbbGVuIC0gMV07Ci19Ci0KLXN0YXRpYyBpbnQgaWNsX2NhbGNfY2RjbGtfcGxsX3Zj byhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNsaykKLXsKLQlpbnQg cmF0aW87Ci0KLQlpZiAoY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xrLmh3LmJ5cGFzcykKLQkJcmV0 dXJuIDA7Ci0KLQlzd2l0Y2ggKGNkY2xrKSB7Ci0JZGVmYXVsdDoKLQkJTUlTU0lOR19DQVNFKGNk Y2xrKTsKLQkJLyogZmFsbCB0aHJvdWdoICovCi0JY2FzZSAxNzI4MDA6Ci0JY2FzZSAzMDcyMDA6 Ci0JY2FzZSAzMjY0MDA6Ci0JY2FzZSA1NTY4MDA6Ci0JY2FzZSA2NTI4MDA6Ci0JCVdBUk5fT04o ZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAhPSAxOTIwMCAmJgotCQkJZGV2X3ByaXYtPmNkY2xrLmh3 LnJlZiAhPSAzODQwMCk7Ci0JCWJyZWFrOwotCWNhc2UgMTgwMDAwOgotCWNhc2UgMzEyMDAwOgot CWNhc2UgMzI0MDAwOgotCWNhc2UgNTUyMDAwOgotCWNhc2UgNjQ4MDAwOgotCQlXQVJOX09OKGRl dl9wcml2LT5jZGNsay5ody5yZWYgIT0gMjQwMDApOwotCQlicmVhazsKLQljYXNlIDE5MjAwMDoK LQkJV0FSTl9PTihkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICE9IDE5MjAwICYmCi0JCQlkZXZfcHJp di0+Y2RjbGsuaHcucmVmICE9IDM4NDAwICYmCi0JCQlkZXZfcHJpdi0+Y2RjbGsuaHcucmVmICE9 IDI0MDAwKTsKLQkJYnJlYWs7Ci0JfQotCi0JcmF0aW8gPSBjZGNsayAvIChkZXZfcHJpdi0+Y2Rj bGsuaHcucmVmIC8gMik7Ci0KLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAqIHJhdGlv OwotfQotCiBzdGF0aWMgdm9pZCBpY2xfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIHNhbml0aXplZF9zdGF0 ZTsKQEAgLTE4ODIsOSArMTc5NSw5IEBAIHN0YXRpYyB2b2lkIGljbF9pbml0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlEUk1fREVCVUdfS01TKCJTYW5pdGl6aW5n IGNkY2xrIHByb2dyYW1tZWQgYnkgcHJlLW9zXG4iKTsKIAogCXNhbml0aXplZF9zdGF0ZS5yZWYg PSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmOwotCXNhbml0aXplZF9zdGF0ZS5jZGNsayA9IGljbF9j YWxjX2NkY2xrKDAsIHNhbml0aXplZF9zdGF0ZS5yZWYpOwotCXNhbml0aXplZF9zdGF0ZS52Y28g PSBpY2xfY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LAotCQkJCQkJICAgICBzYW5pdGl6ZWRf c3RhdGUuY2RjbGspOworCXNhbml0aXplZF9zdGF0ZS5jZGNsayA9IGNhbGNfY2RjbGsoZGV2X3By aXYsIDApOworCXNhbml0aXplZF9zdGF0ZS52Y28gPSBjYWxjX2NkY2xrX3BsbF92Y28oZGV2X3By aXYsCisJCQkJCQkgc2FuaXRpemVkX3N0YXRlLmNkY2xrKTsKIAlpZiAoSVNfRUxLSEFSVExBS0Uo ZGV2X3ByaXYpKQogCQlzYW5pdGl6ZWRfc3RhdGUudm9sdGFnZV9sZXZlbCA9CiAJCQllaGxfY2Fs Y192b2x0YWdlX2xldmVsKHNhbml0aXplZF9zdGF0ZS5jZGNsayk7CkBAIC0xOTIzLDggKzE4MzYs OCBAQCBzdGF0aWMgdm9pZCBjbmxfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAKIAljZGNsa19zdGF0ZSA9IGRldl9wcml2LT5jZGNsay5odzsKIAotCWNkY2xr X3N0YXRlLmNkY2xrID0gY25sX2NhbGNfY2RjbGsoMCk7Ci0JY2RjbGtfc3RhdGUudmNvID0gY25s X2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrX3N0YXRlLmNkY2xrKTsKKwljZGNsa19zdGF0 ZS5jZGNsayA9IGNhbGNfY2RjbGsoZGV2X3ByaXYsIDApOworCWNkY2xrX3N0YXRlLnZjbyA9IGNh bGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGtfc3RhdGUuY2RjbGspOwogCWNkY2xrX3N0 YXRlLnZvbHRhZ2VfbGV2ZWwgPSBjbmxfY2FsY192b2x0YWdlX2xldmVsKGNkY2xrX3N0YXRlLmNk Y2xrKTsKIAogCWNubF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0ZSwgSU5WQUxJRF9Q SVBFKTsKQEAgLTI0MjYsMTMgKzIzMzksOCBAQCBzdGF0aWMgaW50IGJ4dF9tb2Rlc2V0X2NhbGNf Y2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJaWYgKG1pbl9jZGNsayA8 IDApCiAJCXJldHVybiBtaW5fY2RjbGs7CiAKLQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikp IHsKLQkJY2RjbGsgPSBnbGtfY2FsY19jZGNsayhtaW5fY2RjbGspOwotCQl2Y28gPSBnbGtfZGVf cGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOwotCX0gZWxzZSB7Ci0JCWNkY2xrID0gYnh0X2NhbGNf Y2RjbGsobWluX2NkY2xrKTsKLQkJdmNvID0gYnh0X2RlX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xr KTsKLQl9CisJY2RjbGsgPSBjYWxjX2NkY2xrKGRldl9wcml2LCBtaW5fY2RjbGspOworCXZjbyA9 IGNhbGNfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOwogCiAJc3RhdGUtPmNkY2xrLmxv Z2ljYWwudmNvID0gdmNvOwogCXN0YXRlLT5jZGNsay5sb2dpY2FsLmNkY2xrID0gY2RjbGs7CkBA IC0yNDQwLDEzICsyMzQ4LDggQEAgc3RhdGljIGludCBieHRfbW9kZXNldF9jYWxjX2NkY2xrKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQlieHRfY2FsY192b2x0YWdlX2xldmVs KGNkY2xrKTsKIAogCWlmICghc3RhdGUtPmFjdGl2ZV9waXBlcykgewotCQlpZiAoSVNfR0VNSU5J TEFLRShkZXZfcHJpdikpIHsKLQkJCWNkY2xrID0gZ2xrX2NhbGNfY2RjbGsoc3RhdGUtPmNkY2xr LmZvcmNlX21pbl9jZGNsayk7Ci0JCQl2Y28gPSBnbGtfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgY2Rj bGspOwotCQl9IGVsc2UgewotCQkJY2RjbGsgPSBieHRfY2FsY19jZGNsayhzdGF0ZS0+Y2RjbGsu Zm9yY2VfbWluX2NkY2xrKTsKLQkJCXZjbyA9IGJ4dF9kZV9wbGxfdmNvKGRldl9wcml2LCBjZGNs ayk7Ci0JCX0KKwkJY2RjbGsgPSBjYWxjX2NkY2xrKGRldl9wcml2LCBzdGF0ZS0+Y2RjbGsuZm9y Y2VfbWluX2NkY2xrKTsKKwkJdmNvID0gY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNs ayk7CiAKIAkJc3RhdGUtPmNkY2xrLmFjdHVhbC52Y28gPSB2Y287CiAJCXN0YXRlLT5jZGNsay5h Y3R1YWwuY2RjbGsgPSBjZGNsazsKQEAgLTI0NjgsOCArMjM3MSw4IEBAIHN0YXRpYyBpbnQgY25s X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlp ZiAobWluX2NkY2xrIDwgMCkKIAkJcmV0dXJuIG1pbl9jZGNsazsKIAotCWNkY2xrID0gY25sX2Nh bGNfY2RjbGsobWluX2NkY2xrKTsKLQl2Y28gPSBjbmxfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwg Y2RjbGspOworCWNkY2xrID0gY2FsY19jZGNsayhkZXZfcHJpdiwgbWluX2NkY2xrKTsKKwl2Y28g PSBjYWxjX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKIAogCXN0YXRlLT5jZGNsay5s b2dpY2FsLnZjbyA9IHZjbzsKIAlzdGF0ZS0+Y2RjbGsubG9naWNhbC5jZGNsayA9IGNkY2xrOwpA QCAtMjQ3OCw4ICsyMzgxLDggQEAgc3RhdGljIGludCBjbmxfbW9kZXNldF9jYWxjX2NkY2xrKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQkgICAgY25sX2NvbXB1dGVfbWluX3Zv bHRhZ2VfbGV2ZWwoc3RhdGUpKTsKIAogCWlmICghc3RhdGUtPmFjdGl2ZV9waXBlcykgewotCQlj ZGNsayA9IGNubF9jYWxjX2NkY2xrKHN0YXRlLT5jZGNsay5mb3JjZV9taW5fY2RjbGspOwotCQl2 Y28gPSBjbmxfY2RjbGtfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOworCQljZGNsayA9IGNhbGNf Y2RjbGsoZGV2X3ByaXYsIHN0YXRlLT5jZGNsay5mb3JjZV9taW5fY2RjbGspOworCQl2Y28gPSBj YWxjX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKIAogCQlzdGF0ZS0+Y2RjbGsuYWN0 dWFsLnZjbyA9IHZjbzsKIAkJc3RhdGUtPmNkY2xrLmFjdHVhbC5jZGNsayA9IGNkY2xrOwpAQCAt MjQ5NSwxNSArMjM5OCwxNCBAQCBzdGF0aWMgaW50IGNubF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiBzdGF0aWMgaW50IGljbF9tb2Rlc2V0X2Nh bGNfY2RjbGsoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwotCXVu c2lnbmVkIGludCByZWYgPSBzdGF0ZS0+Y2RjbGsubG9naWNhbC5yZWY7CiAJaW50IG1pbl9jZGNs aywgY2RjbGssIHZjbzsKIAogCW1pbl9jZGNsayA9IGludGVsX2NvbXB1dGVfbWluX2NkY2xrKHN0 YXRlKTsKIAlpZiAobWluX2NkY2xrIDwgMCkKIAkJcmV0dXJuIG1pbl9jZGNsazsKIAotCWNkY2xr ID0gaWNsX2NhbGNfY2RjbGsobWluX2NkY2xrLCByZWYpOwotCXZjbyA9IGljbF9jYWxjX2NkY2xr X3BsbF92Y28oZGV2X3ByaXYsIGNkY2xrKTsKKwljZGNsayA9IGNhbGNfY2RjbGsoZGV2X3ByaXYs IG1pbl9jZGNsayk7CisJdmNvID0gY2FsY19jZGNsa19wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7 CiAKIAlzdGF0ZS0+Y2RjbGsubG9naWNhbC52Y28gPSB2Y287CiAJc3RhdGUtPmNkY2xrLmxvZ2lj YWwuY2RjbGsgPSBjZGNsazsKQEAgLTI1MTcsOCArMjQxOSw4IEBAIHN0YXRpYyBpbnQgaWNsX21v ZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJCSAg ICBjbmxfY29tcHV0ZV9taW5fdm9sdGFnZV9sZXZlbChzdGF0ZSkpOwogCiAJaWYgKCFzdGF0ZS0+ YWN0aXZlX3BpcGVzKSB7Ci0JCWNkY2xrID0gaWNsX2NhbGNfY2RjbGsoc3RhdGUtPmNkY2xrLmZv cmNlX21pbl9jZGNsaywgcmVmKTsKLQkJdmNvID0gaWNsX2NhbGNfY2RjbGtfcGxsX3ZjbyhkZXZf cHJpdiwgY2RjbGspOworCQljZGNsayA9IGNhbGNfY2RjbGsoZGV2X3ByaXYsIHN0YXRlLT5jZGNs ay5mb3JjZV9taW5fY2RjbGspOworCQl2Y28gPSBjYWxjX2NkY2xrX3BsbF92Y28oZGV2X3ByaXYs IGNkY2xrKTsKIAogCQlzdGF0ZS0+Y2RjbGsuYWN0dWFsLnZjbyA9IHZjbzsKIAkJc3RhdGUtPmNk Y2xrLmFjdHVhbC5jZGNsayA9IGNkY2xrOwpAQCAtMjc1NCwxMiArMjY1NiwxOCBAQCB2b2lkIGlu dGVsX2luaXRfY2RjbGtfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7CiAJCWRldl9wcml2LT5kaXNwbGF5LnNl dF9jZGNsayA9IGNubF9zZXRfY2RjbGs7CiAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2Fs Y19jZGNsayA9IGljbF9tb2Rlc2V0X2NhbGNfY2RjbGs7CisJCWRldl9wcml2LT5jZGNsay50YWJs ZSA9IGljbF9jZGNsa190YWJsZTsKKwkJZGV2X3ByaXYtPmNkY2xrLnRhYmxlX3NpemUgPSBBUlJB WV9TSVpFKGljbF9jZGNsa190YWJsZSk7CiAJfSBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9w cml2KSkgewogCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfY2RjbGsgPSBjbmxfc2V0X2NkY2xrOwog CQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPSBjbmxfbW9kZXNldF9jYWxj X2NkY2xrOworCQlkZXZfcHJpdi0+Y2RjbGsudGFibGUgPSBjbmxfY2RjbGtfdGFibGU7CisJCWRl dl9wcml2LT5jZGNsay50YWJsZV9zaXplID0gQVJSQVlfU0laRShjbmxfY2RjbGtfdGFibGUpOwog CX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKIAkJZGV2X3ByaXYtPmRpc3BsYXku c2V0X2NkY2xrID0gYnh0X3NldF9jZGNsazsKIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9j YWxjX2NkY2xrID0gYnh0X21vZGVzZXRfY2FsY19jZGNsazsKKwkJZGV2X3ByaXYtPmNkY2xrLnRh YmxlID0gYnh0X2NkY2xrX3RhYmxlOworCQlkZXZfcHJpdi0+Y2RjbGsudGFibGVfc2l6ZSA9IEFS UkFZX1NJWkUoYnh0X2NkY2xrX3RhYmxlKTsKIAl9IGVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3By aXYpKSB7CiAJCWRldl9wcml2LT5kaXNwbGF5LnNldF9jZGNsayA9IHNrbF9zZXRfY2RjbGs7CiAJ CWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayA9IHNrbF9tb2Rlc2V0X2NhbGNf Y2RjbGs7CkBAIC0yNzc0LDcgKzI2ODIsNyBAQCB2b2lkIGludGVsX2luaXRfY2RjbGtfaG9va3Mo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlkZXZfcHJpdi0+ZGlzcGxheS5t b2Rlc2V0X2NhbGNfY2RjbGsgPSB2bHZfbW9kZXNldF9jYWxjX2NkY2xrOwogCX0KIAotCWVsc2Ug aWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApCisJ aWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApCiAJ CWRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayA9IGJ4dF9nZXRfY2RjbGs7CiAJZWxzZSBpZiAo SVNfR0VOOV9CQyhkZXZfcHJpdikpCiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayA9IHNr bF9nZXRfY2RjbGs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2NkY2xrLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmgK aW5kZXggNGQ2ZjdmNWY4OTMwLi44MGRjMTdhMDdhYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2NkY2xrLmgKQEAgLTE1LDYgKzE1LDE0IEBAIHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGU7CiBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGU7CiBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZTsKIAorc3RydWN0IGludGVsX2NkY2xrX3ZhbHMgeworCWludCBjZGNsazsKKwlpbnQg ZGl2aWRlcjsgICAvKiBDRDJYIGRpdmlkZXIgKiAyICovCisJaW50IHJhdGlvXzE5OworCWludCBy YXRpb18yNDsKKwlpbnQgcmF0aW9fMzg7Cit9OworCiBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX21p bl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiB2b2lk IGludGVsX2NkY2xrX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogdm9pZCBp bnRlbF9jZGNsa191bmluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKaW5kZXggZGI3NDgwODMxZTUyLi5hNGQyNDkxOTNkYzggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaApAQCAtMTQyMCw2ICsxNDIwLDEwIEBAIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlIHsKIAkJLyogVGhlIGN1cnJlbnQgaGFyZHdhcmUgY2RjbGsgc3RhdGUgKi8KIAkJc3Ry dWN0IGludGVsX2NkY2xrX3N0YXRlIGh3OwogCisJCS8qIGNkY2xrLCBkaXZpZGVyLCBhbmQgcmF0 aW8gdGFibGUgZnJvbSBic3BlYyAqLworCQljb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfdmFscyAq dGFibGU7CisJCWludCB0YWJsZV9zaXplOworCiAJCWludCBmb3JjZV9taW5fY2RjbGs7CiAJfSBj ZGNsazsKIAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=