From mboxrd@z Thu Jan 1 00:00:00 1970 From: libin.yang@linux.intel.com Subject: [PATCH v3 1/3] drm/i915: set proper N/M in modeset Date: Thu, 4 Aug 2016 15:58:02 +0800 Message-ID: <1470297484-82178-1-git-send-email-libin.yang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 4CB746E5E9 for ; Thu, 4 Aug 2016 08:01:14 +0000 (UTC) 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, jani.nikula@linux.intel.com, ville.syrjala@linux.intel.com, daniel.vetter@intel.com, tiwai@suse.de Cc: Libin Yang List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTGliaW4gWWFuZyA8bGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb20+CgpXaGVuIG1vZGVz ZXQgb2NjdXJzIGFuZCB0aGUgTFNfQ0xLIGlzIHNldCB0byBzb21lCnNwZWNpYWwgdmFsdWVzIGlu IERQIG1vZGUsIHRoZSBOL00gbmVlZCB0byBiZSBzZXQKbWFudWFsbHkgaWYgYXVkaW8gaXMgcGxh eWluZy4gT3RoZXJ3aXNlIHRoZSBmaXJzdApzZXZlcmFsIHNlY29uZHMgbWF5IGJlIHNpbGVudCBp biBhdWRpbyBwbGF5YmFjay4KClRoZSByZWxhdGlvbnNoaXAgb2YgTWF1ZCBhbmQgTmF1ZCBpcyBl eHByZXNzZWQgaW4KdGhlIGZvbGxvd2luZyBlcXVhdGlvbjoKTWF1ZC9OYXVkID0gNTEyICogZnMg LyBmX0xTX0NsawoKUGxlYXNlIHJlZmVyIFZFU0EgRGlzcGxheVBvcnQgU3RhbmRhcmQgc3BlYyBm b3IgZGV0YWlscy4KClNpZ25lZC1vZmYtYnk6IExpYmluIFlhbmcgPGxpYmluLnlhbmdAbGludXgu aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgfCAgIDYg KysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgfCAxMzMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9u cygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggOGJmZGU3 NS4uMmY5ZDAwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC03MzUxLDYgKzczNTEsMTIg QEAgZW51bSB7CiAjZGVmaW5lIF9IU1dfQVVEX0NPTkZJR19CCQkweDY1MTAwCiAjZGVmaW5lIEhT V19BVURfQ0ZHKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsIF9IU1dfQVVEX0NPTkZJR19BLCBfSFNX X0FVRF9DT05GSUdfQikKIAorI2RlZmluZSBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQQkJMHg2NTAy OAorI2RlZmluZSBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQgkJMHg2NTEyOAorI2RlZmluZSBIU1df QVVEX01fQ1RTX0VOQUJMRShwaXBlKQkJX01NSU9fUElQRShwaXBlLCBfSFNXX0FVRF9NX0NUU19F TkFCTEVfQSwgX0hTV19BVURfTV9DVFNfRU5BQkxFX0IpCisjZGVmaW5lICAgQVVEX01fQ1RTX01f VkFMVUVfSU5ERVgJKDEgPDwgMjEpCisjZGVmaW5lICAgQVVEX01fQ1RTX01fUFJPR19FTkFCTEUJ KDEgPDwgMjApCisKICNkZWZpbmUgX0hTV19BVURfTUlTQ19DVFJMX0EJCTB4NjUwMTAKICNkZWZp bmUgX0hTV19BVURfTUlTQ19DVFJMX0IJCTB4NjUxMTAKICNkZWZpbmUgSFNXX0FVRF9NSVNDX0NU UkwocGlwZSkJCV9NTUlPX1BJUEUocGlwZSwgX0hTV19BVURfTUlTQ19DVFJMX0EsIF9IU1dfQVVE X01JU0NfQ1RSTF9CKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVk aW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKaW5kZXggNjcwMGE3Yi4u MDRlNzM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCkBAIC05OCw2ICs5OCwzNSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIAl7IDE5MjAwMCwgVE1EU18yOTdNLCAyMDQ4MCwgMjQ3 NTAwIH0sCiB9OwogCisjZGVmaW5lIExDXzU0ME0gNTQwMDAwCisjZGVmaW5lIExDXzI3ME0gMjcw MDAwCisjZGVmaW5lIExDXzE2Mk0gMTYyMDAwCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwlpbnQg c2FtcGxlX3JhdGU7CisJaW50IGNsb2NrOworCXUxNiBuOworCXUxNiBtOworfSBhdWRfbm1bXSA9 IHsKKwl7MTkyMDAwLCBMQ181NDBNLCA1NjI1LCAxMDI0fSwKKwl7OTYwMDAsIExDXzU0ME0sIDU2 MjUsIDUxMn0sCisJezg4MjAwLCBMQ181NDBNLCA5Mzc1LCA3ODR9LAorCXs0ODAwMCwgTENfNTQw TSwgNTYyNSwgMjU2fSwKKwl7NDQxMDAsIExDXzU0ME0sIDkzNzUsIDM5Mn0sCisJezMyMDAwLCBM Q181NDBNLCAxNjg3NSwgNTEyfSwKKwl7MTkyMDAwLCBMQ18yNzBNLCA1NjI1LCAyMDQ4fSwKKwl7 OTYwMDAsIExDXzI3ME0sIDU2MjUsIDEwMjR9LAorCXs4ODIwMCwgTENfMjcwTSwgOTM3NSwgMTU2 OH0sCisJezQ4MDAwLCBMQ18yNzBNLCA1NjI1LCA1MTJ9LAorCXs0NDEwMCwgTENfMjcwTSwgOTM3 NSwgNzg0fSwKKwl7MzIwMDAsIExDXzI3ME0sIDE2ODc1LCAxMDI0fSwKKwl7MTkyMDAwLCBMQ18x NjJNLCAzMzc1LCAyMDQ4fSwKKwl7OTYwMDAsIExDXzE2Mk0sIDMzNzUsIDEwMjR9LAorCXs4ODIw MCwgTENfMTYyTSwgNTYyNSwgMTU2OH0sCisJezQ4MDAwLCBMQ18xNjJNLCAzMzc1LCA1MTJ9LAor CXs0NDEwMCwgTENfMTYyTSwgNTYyNSwgNzg0fSwKKwl7MzIwMDAsIExDXzE2Mk0sIDEwMTI1LCAx MDI0fSwKK307CisKIC8qIGdldCBBVURfQ09ORklHX1BJWEVMX0NMT0NLX0hETUlfKiB2YWx1ZSBm b3IgbW9kZSAqLwogc3RhdGljIHUzMiBhdWRpb19jb25maWdfaGRtaV9waXhlbF9jbG9jayhjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKIHsKQEAgLTEyMSwyMCAr MTUwLDUwIEBAIHN0YXRpYyB1MzIgYXVkaW9fY29uZmlnX2hkbWlfcGl4ZWxfY2xvY2soY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkCiAJcmV0dXJuIGhkbWlfYXVkaW9fY2xv Y2tbaV0uY29uZmlnOwogfQogCi1zdGF0aWMgaW50IGF1ZGlvX2NvbmZpZ19nZXRfbihjb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwgaW50IHJhdGUpCitzdGF0aWMgaW50IGF1ZGlv X2NvbmZpZ19nZXRfbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJCSAgICAgIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlLAorCQkJICAgICAgaW50IHJhdGUp CiB7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbmN0cyk7IGkr KykgewotCQlpZiAoKHJhdGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3JhdGUpICYmCi0JCQkobW9k ZS0+Y2xvY2sgPT0gYXVkX25jdHNbaV0uY2xvY2spKSB7Ci0JCQlyZXR1cm4gYXVkX25jdHNbaV0u bjsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9I RE1JKSkgeworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbmN0cyk7IGkrKykgewor CQkJaWYgKChyYXRlID09IGF1ZF9uY3RzW2ldLnNhbXBsZV9yYXRlKSAmJgorCQkJCShhZGp1c3Rl ZF9tb2RlLT5jbG9jayA9PSBhdWRfbmN0c1tpXS5jbG9jaykpIHsKKwkJCQlyZXR1cm4gYXVkX25j dHNbaV0ubjsKKwkJCX0KIAkJfQogCX0KKworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMt PmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkgeworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShhdWRfbm0pOyBpKyspIHsKKwkJCWlmICgocmF0ZSA9PSBhdWRfbm1baV0uc2FtcGxlX3JhdGUp ICYmCisJCQkJKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBhdWRfbm1baV0uY2xvY2spKSB7 CisJCQkJcmV0dXJuIGF1ZF9ubVtpXS5uOworCQkJfQorCQl9CisJfQorCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGF1ZGlvX2NvbmZpZ19nZXRfbShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywg aW50IHJhdGUpCit7CisJaW50IGk7CisKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5j b25maWcsIElOVEVMX09VVFBVVF9EUCkpIHsKKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo YXVkX25tKTsgaSsrKSB7CisJCQlpZiAoKHJhdGUgPT0gYXVkX25tW2ldLnNhbXBsZV9yYXRlKSAm JgorCQkJCShjcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPT0gYXVkX25tW2ldLmNsb2NrKSkgewor CQkJCXJldHVybiBhdWRfbm1baV0ubTsKKwkJCX0KKwkJfQorCX0KKwogCXJldHVybiAwOwogfQog Ci1zdGF0aWMgdWludDMyX3QgYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKGludCBuLCB1aW50MzJf dCB2YWwpCitzdGF0aWMgdWludDMyX3QgYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAorCQkJCQkgaW50IG4sIHVpbnQzMl90IHZhbCkKIHsKIAlpbnQgbl9s b3csIG5fdXA7CiAJdWludDMyX3QgdG1wID0gdmFsOwpAQCAtMTQ1LDE3ICsyMDQsMzkgQEAgc3Rh dGljIHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhpbnQgbiwgdWludDMyX3QgdmFs KQogCXRtcCB8PSAoKG5fdXAgPDwgQVVEX0NPTkZJR19VUFBFUl9OX1NISUZUKSB8CiAJCQkobl9s b3cgPDwgQVVEX0NPTkZJR19MT1dFUl9OX1NISUZUKSB8CiAJCQlBVURfQ09ORklHX05fUFJPR19F TkFCTEUpOworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VU UFVUX0RQKSkKKwkJdG1wIHw9IEFVRF9DT05GSUdfTl9WQUxVRV9JTkRFWDsKKwlyZXR1cm4gdG1w OworfQorCitzdGF0aWMgdWludDMyX3QgYXVkaW9fY29uZmlnX3NldHVwX21fcmVnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAorCQkJCQkgaW50IG0sIHVpbnQzMl90IHZhbCkKK3sKKwl1aW50MzJf dCB0bXAgPSB2YWw7CisKKwlpZiAoIWludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJ TlRFTF9PVVRQVVRfRFApKQorCQlyZXR1cm4gMDsKKworCXRtcCB8PSBtOworCXRtcCB8PSBBVURf TV9DVFNfTV9WQUxVRV9JTkRFWDsKKwl0bXAgfD0gQVVEX01fQ1RTX01fUFJPR19FTkFCTEU7CisK IAlyZXR1cm4gdG1wOwogfQogCiAvKiBjaGVjayB3aGV0aGVyIE4vQ1RTL00gbmVlZCBiZSBzZXQg bWFudWFsbHkgKi8KIHN0YXRpYyBib29sIGF1ZGlvX3JhdGVfbmVlZF9wcm9nKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAotCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkK KwkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCiB7Ci0J aWYgKCgobW9kZS0+Y2xvY2sgPT0gVE1EU18yOTdNKSB8fAotCQkgKG1vZGUtPmNsb2NrID09IFRN RFNfMjk2TSkpICYmCisJaWYgKCgoYWRqdXN0ZWRfbW9kZS0+Y2xvY2sgPT0gVE1EU18yOTdNKSB8 fAorCQkgKGFkanVzdGVkX21vZGUtPmNsb2NrID09IFRNRFNfMjk2TSkpICYmCiAJCWludGVsX2Ny dGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfSERNSSkpCiAJCXJldHVybiB0 cnVlOworCWVsc2UgaWYgKCgoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IExDXzU0ME0pIHx8 CisJCSAgKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBMQ18yNzBNKSB8fAorCQkgIChjcnRj LT5jb25maWctPnBvcnRfY2xvY2sgPT0gTENfMTYyTSkpICYmCisJCSAgaW50ZWxfY3J0Y19oYXNf dHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpCisJCXJldHVybiB0cnVlOwogCWVs c2UKIAkJcmV0dXJuIGZhbHNlOwogfQpAQCAtMjg3LDcgKzM2OCw3IEBAIHN0YXRpYyB2b2lkIGhz d19hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9CiAJCWVuY190b19kaWdf cG9ydCgmZW5jb2Rlci0+YmFzZSk7CiAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+ cG9ydDsKLQl1aW50MzJfdCB0bXA7CisJdWludDMyX3QgdG1wLCBtOwogCWludCBsZW4sIGk7CiAJ aW50IG4sIHJhdGU7CiAKQEAgLTM0MywxNSArNDI0LDI1IEBAIHN0YXRpYyB2b2lkIGhzd19hdWRp b19jb2RlY19lbmFibGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCURSTV9F UlJPUigiaW52YWxpZCBwb3J0OiAlZFxuIiwgcG9ydCk7CiAJCQlyYXRlID0gMDsKIAkJfQotCQlu ID0gYXVkaW9fY29uZmlnX2dldF9uKGFkanVzdGVkX21vZGUsIHJhdGUpOworCQluID0gYXVkaW9f Y29uZmlnX2dldF9uKGludGVsX2NydGMsIGFkanVzdGVkX21vZGUsIHJhdGUpOwogCQlpZiAobiAh PSAwKQotCQkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKG4sIHRtcCk7CisJCQl0bXAg PSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcoaW50ZWxfY3J0YywgbiwgdG1wKTsKIAkJZWxzZQog CQkJRFJNX0RFQlVHX0tNUygibm8gc3VpdGFibGUgTiB2YWx1ZSBpcyBmb3VuZFxuIik7CiAJfQog CiAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKIAorCS8qIHNldHVwIG0gdmFs dWUgZm9yIERQICovCisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoaW50ZWxfY3J0Yy0+Y29uZmln LCBJTlRFTF9PVVRQVVRfRFApKSB7CisJCW0gPSBhdWRpb19jb25maWdfZ2V0X20oaW50ZWxfY3J0 YywgcmF0ZSk7CisJCWlmIChtICE9IDApIHsKKwkJCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX01f Q1RTX0VOQUJMRShwaXBlKSk7CisJCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbV9yZWcoaW50 ZWxfY3J0YywgbSwgdG1wKTsKKwkJCUk5MTVfV1JJVEUoSFNXX0FVRF9NX0NUU19FTkFCTEUocGlw ZSksIHRtcCk7CisJCX0KKwl9CisKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7 CiB9CiAKQEAgLTYzNyw3ICs3MjgsNyBAQCBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50 X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGU7CiAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29tcCA9IGRldl9w cml2LT5hdWRpb19jb21wb25lbnQ7CiAJZW51bSBwaXBlIHBpcGUgPSBJTlZBTElEX1BJUEU7Ci0J dTMyIHRtcDsKKwl1MzIgdG1wLCBtOwogCWludCBuOwogCWludCBlcnIgPSAwOwogCkBAIC02NTMs NyArNzQ0LDggQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3Jh dGUoc3RydWN0IGRldmljZSAqZGV2LAogCWludGVsX2VuY29kZXIgPSBkZXZfcHJpdi0+ZGlnX3Bv cnRfbWFwW3BvcnRdOwogCS8qIGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNU ICovCiAJaWYgKCFpbnRlbF9lbmNvZGVyIHx8ICFpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMgfHwK LQkgICAgaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgeworCSAgICAo KGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0hETUkpICYmCisJICAgICAoaW50 ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRFApKSkgewogCQlEUk1fREVCVUdfS01T KCJubyB2YWxpZCBwb3J0ICVjXG4iLCBwb3J0X25hbWUocG9ydCkpOwogCQllcnIgPSAtRU5PREVW OwogCQlnb3RvIHVubG9jazsKQEAgLTY4MSw3ICs3NzMsNyBAQCBzdGF0aWMgaW50IGk5MTVfYXVk aW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCWdvdG8g dW5sb2NrOwogCX0KIAotCW4gPSBhdWRpb19jb25maWdfZ2V0X24obW9kZSwgcmF0ZSk7CisJbiA9 IGF1ZGlvX2NvbmZpZ19nZXRfbihjcnRjLCBtb2RlLCByYXRlKTsKIAlpZiAobiA9PSAwKSB7CiAJ CURSTV9ERUJVR19LTVMoIlVzaW5nIGF1dG9tYXRpYyBtb2RlIGZvciBOIHZhbHVlIG9uIHBvcnQg JWNcbiIsCiAJCQkJCSAgcG9ydF9uYW1lKHBvcnQpKTsKQEAgLTY5Myw4ICs3ODUsMTcgQEAgc3Rh dGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmlj ZSAqZGV2LAogCiAJLyogMy4gc2V0IHRoZSBOL0NUUy9NICovCiAJdG1wID0gSTkxNV9SRUFEKEhT V19BVURfQ0ZHKHBpcGUpKTsKLQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcobiwgdG1w KTsKKwl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcoY3J0YywgbiwgdG1wKTsKIAlJOTE1 X1dSSVRFKEhTV19BVURfQ0ZHKHBpcGUpLCB0bXApOworCS8qIHNldHVwIG0gdmFsdWUgZm9yIERQ ICovCisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRf RFApKSB7CisJCW0gPSBhdWRpb19jb25maWdfZ2V0X20oY3J0YywgcmF0ZSk7CisJCWlmIChtID09 IDApCisJCQlnb3RvIHVubG9jazsKKwkJdG1wID0gSTkxNV9SRUFEKEhTV19BVURfTV9DVFNfRU5B QkxFKHBpcGUpKTsKKwkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX21fcmVnKGNydGMsIG0sIHRt cCk7CisJCUk5MTVfV1JJVEUoSFNXX0FVRF9NX0NUU19FTkFCTEUocGlwZSksIHRtcCk7CisJfQog CiAgdW5sb2NrOgogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsKLS0gCjEuOS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK