From mboxrd@z Thu Jan 1 00:00:00 1970 From: libin.yang@linux.intel.com Subject: [PATCH v4 1/3] drm/i915: set proper N/M in modeset Date: Thu, 18 Aug 2016 14:42:26 +0800 Message-ID: <1471502548-137544-2-git-send-email-libin.yang@linux.intel.com> References: <1471502548-137544-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 6FAD96E9AD for ; Thu, 18 Aug 2016 06:46:06 +0000 (UTC) In-Reply-To: <1471502548-137544-1-git-send-email-libin.yang@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: 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 aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgfCAgIDcg KysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgfCAxNDMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMzYgaW5zZXJ0aW9u cygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggZDRhZGYy OC4uMjM5ZjBhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC03MzM3LDYgKzczMzcsMTMg QEAgZW51bSB7CiAjZGVmaW5lIF9IU1dfQVVEX01JU0NfQ1RSTF9CCQkweDY1MTEwCiAjZGVmaW5l IEhTV19BVURfTUlTQ19DVFJMKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUsIF9IU1dfQVVEX01JU0Nf Q1RSTF9BLCBfSFNXX0FVRF9NSVNDX0NUUkxfQikKIAorI2RlZmluZSBfSFNXX0FVRF9NX0NUU19F TkFCTEVfQQkJMHg2NTAyOAorI2RlZmluZSBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQgkJMHg2NTEy OAorI2RlZmluZSBIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKQkJX01NSU9fUElQRShwaXBlLCBf SFNXX0FVRF9NX0NUU19FTkFCTEVfQSwgX0hTV19BVURfTV9DVFNfRU5BQkxFX0IpCisjZGVmaW5l ICAgQVVEX01fQ1RTX01fVkFMVUVfSU5ERVgJKDEgPDwgMjEpCisjZGVmaW5lICAgQVVEX01fQ1RT X01fUFJPR19FTkFCTEUJKDEgPDwgMjApCisjZGVmaW5lICAgQVVEX0NPTkZJR19NX01BU0sJCTB4 ZmZmZmYKKwogI2RlZmluZSBfSFNXX0FVRF9ESVBfRUxEX0NUUkxfU1RfQQkweDY1MGI0CiAjZGVm aW5lIF9IU1dfQVVEX0RJUF9FTERfQ1RSTF9TVF9CCTB4NjUxYjQKICNkZWZpbmUgSFNXX0FVRF9E SVBfRUxEX0NUUkwocGlwZSkJX01NSU9fUElQRShwaXBlLCBfSFNXX0FVRF9ESVBfRUxEX0NUUkxf U1RfQSwgX0hTV19BVURfRElQX0VMRF9DVFJMX1NUX0IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVk aW8uYwppbmRleCA4NTM4OWNkLi5hOGNlYzUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9hdWRpby5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlv LmMKQEAgLTk4LDYgKzk4LDM4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCXsgMTkyMDAwLCBU TURTXzI5N00sIDIwNDgwLCAyNDc1MDAgfSwKIH07CiAKKyNkZWZpbmUgTENfNTQwTSA1NDAwMDAK KyNkZWZpbmUgTENfMjcwTSAyNzAwMDAKKyNkZWZpbmUgTENfMTYyTSAxNjIwMDAKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgeworCWludCBzYW1wbGVfcmF0ZTsKKwlpbnQgY2xvY2s7CisJdTE2IG47CisJ dTE2IG07Cit9IGF1ZF9ubVtdID0geworCXsgMTkyMDAwLCBMQ181NDBNLCA1NjI1LCAxMDI0IH0s CisJeyAxNzY0MDAsIExDXzU0ME0sIDkzNzUsIDE1NjggfSwKKwl7IDk2MDAwLCBMQ181NDBNLCA1 NjI1LCA1MTIgfSwKKwl7IDg4MjAwLCBMQ181NDBNLCA5Mzc1LCA3ODQgfSwKKwl7IDQ4MDAwLCBM Q181NDBNLCA1NjI1LCAyNTYgfSwKKwl7IDQ0MTAwLCBMQ181NDBNLCA5Mzc1LCAzOTIgfSwKKwl7 IDMyMDAwLCBMQ181NDBNLCAxNjg3NSwgNTEyIH0sCisJeyAxOTIwMDAsIExDXzI3ME0sIDU2MjUs IDIwNDggfSwKKwl7IDE3NjQwMCwgTENfMjcwTSwgOTM3NSwgMzEzNiB9LAorCXsgOTYwMDAsIExD XzI3ME0sIDU2MjUsIDEwMjQgfSwKKwl7IDg4MjAwLCBMQ18yNzBNLCA5Mzc1LCAxNTY4IH0sCisJ eyA0ODAwMCwgTENfMjcwTSwgNTYyNSwgNTEyIH0sCisJeyA0NDEwMCwgTENfMjcwTSwgOTM3NSwg Nzg0IH0sCisJeyAzMjAwMCwgTENfMjcwTSwgMTY4NzUsIDEwMjQgfSwKKwl7IDE5MjAwMCwgTENf MTYyTSwgMzM3NSwgMjA0OCB9LAorCXsgMTc2NDAwLCBMQ18xNjJNLCA1NjI1LCAzMTM2IH0sCisJ eyA5NjAwMCwgTENfMTYyTSwgMzM3NSwgMTAyNCB9LAorCXsgODgyMDAsIExDXzE2Mk0sIDU2MjUs IDE1NjggfSwKKwl7IDQ4MDAwLCBMQ18xNjJNLCAzMzc1LCA1MTIgfSwKKwl7IDQ0MTAwLCBMQ18x NjJNLCA1NjI1LCA3ODQgfSwKKwl7IDMyMDAwLCBMQ18xNjJNLCAxMDEyNSwgMTAyNCB9LAorfTsK KwogLyogZ2V0IEFVRF9DT05GSUdfUElYRUxfQ0xPQ0tfSERNSV8qIHZhbHVlIGZvciBtb2RlICov CiBzdGF0aWMgdTMyIGF1ZGlvX2NvbmZpZ19oZG1pX3BpeGVsX2Nsb2NrKGNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQogewpAQCAtMTIxLDIwICsxNTMsNTAgQEAg c3RhdGljIHUzMiBhdWRpb19jb25maWdfaGRtaV9waXhlbF9jbG9jayhjb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWQKIAlyZXR1cm4gaGRtaV9hdWRpb19jbG9ja1tpXS5jb25m aWc7CiB9CiAKLXN0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2dldF9uKGNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlLCBpbnQgcmF0ZSkKK3N0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2dl dF9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUsCisJCQkgICAgICBpbnQgcmF0ZSkKK3sKKwlpbnQg aTsKKworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVU X0hETUkpKSB7CisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1ZF9uY3RzKTsgaSsrKSB7 CisJCQlpZiAoKHJhdGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3JhdGUpICYmCisJCQkgICAgKGFk anVzdGVkX21vZGUtPmNsb2NrID09IGF1ZF9uY3RzW2ldLmNsb2NrKSkgeworCQkJCXJldHVybiBh dWRfbmN0c1tpXS5uOworCQkJfQorCQl9CisJfQorCisJaWYgKGludGVsX2NydGNfaGFzX2RwX2Vu Y29kZXIoY3J0Yy0+Y29uZmlnKSkgeworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRf bm0pOyBpKyspIHsKKwkJCWlmICgocmF0ZSA9PSBhdWRfbm1baV0uc2FtcGxlX3JhdGUpICYmCisJ CQkgICAgKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBhdWRfbm1baV0uY2xvY2spKSB7CisJ CQkJcmV0dXJuIGF1ZF9ubVtpXS5uOworCQkJfQorCQl9CisJfQorCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGF1ZGlvX2NvbmZpZ19nZXRfbShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgaW50 IHJhdGUpCiB7CiAJaW50IGk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbmN0 cyk7IGkrKykgewotCQlpZiAoKHJhdGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3JhdGUpICYmCi0J CQkobW9kZS0+Y2xvY2sgPT0gYXVkX25jdHNbaV0uY2xvY2spKSB7Ci0JCQlyZXR1cm4gYXVkX25j dHNbaV0ubjsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRjLT5jb25maWcpKSB7 CisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1ZF9ubSk7IGkrKykgeworCQkJaWYgKChy YXRlID09IGF1ZF9ubVtpXS5zYW1wbGVfcmF0ZSkgJiYKKwkJCSAgICAoY3J0Yy0+Y29uZmlnLT5w b3J0X2Nsb2NrID09IGF1ZF9ubVtpXS5jbG9jaykpIHsKKwkJCQlyZXR1cm4gYXVkX25tW2ldLm07 CisJCQl9CiAJCX0KIAl9CisKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHVpbnQzMl90IGF1ZGlv X2NvbmZpZ19zZXR1cF9uX3JlZyhpbnQgbiwgdWludDMyX3QgdmFsKQorc3RhdGljIHVpbnQzMl90 IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJCQkJ IGludCBuLCB1aW50MzJfdCB2YWwpCiB7CiAJaW50IG5fbG93LCBuX3VwOwogCXVpbnQzMl90IHRt cCA9IHZhbDsKQEAgLTE0NSwxNyArMjA3LDY1IEBAIHN0YXRpYyB1aW50MzJfdCBhdWRpb19jb25m aWdfc2V0dXBfbl9yZWcoaW50IG4sIHVpbnQzMl90IHZhbCkKIAl0bXAgfD0gKChuX3VwIDw8IEFV RF9DT05GSUdfVVBQRVJfTl9TSElGVCkgfAogCQkJKG5fbG93IDw8IEFVRF9DT05GSUdfTE9XRVJf Tl9TSElGVCkgfAogCQkJQVVEX0NPTkZJR19OX1BST0dfRU5BQkxFKTsKKwlpZiAoaW50ZWxfY3J0 Y19oYXNfZHBfZW5jb2RlcihjcnRjLT5jb25maWcpKQorCQl0bXAgfD0gQVVEX0NPTkZJR19OX1ZB TFVFX0lOREVYOworCWVsc2UKKwkJdG1wICY9IH5BVURfQ09ORklHX05fVkFMVUVfSU5ERVg7CisJ cmV0dXJuIHRtcDsKK30KKworc3RhdGljIHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9tX3Jl ZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJCQkJIGludCBtLCB1aW50MzJfdCB2YWwpCit7 CisJdWludDMyX3QgdG1wID0gdmFsOworCisJdG1wICY9IH5BVURfQ09ORklHX01fTUFTSzsKKwl0 bXAgfD0gbTsKKwl0bXAgfD0gQVVEX01fQ1RTX01fVkFMVUVfSU5ERVg7CisJdG1wIHw9IEFVRF9N X0NUU19NX1BST0dfRU5BQkxFOworCiAJcmV0dXJuIHRtcDsKIH0KIAorc3RhdGljIHZvaWQgYXVk aW9fbV9jdHNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgIHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLCBpbnQgcmF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJdWludDMyX3QgdG1wLCBtOworCS8qIHBpcGUgc2hv dWxkIGJlIGNoZWNrZWQgaW4gdGhlIGNhbGxlciAqLworCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+ cGlwZTsKKworCWlmIChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGMtPmNvbmZpZykpIHsK KwkJLyogc2V0dXAgbSB2YWx1ZSBmb3IgRFAgKi8KKwkJbSA9IGF1ZGlvX2NvbmZpZ19nZXRfbShj cnRjLCByYXRlKTsKKwkJaWYgKG0gPT0gMCkKKwkJCXJldHVybjsKKwkJdG1wID0gSTkxNV9SRUFE KEhTV19BVURfTV9DVFNfRU5BQkxFKHBpcGUpKTsKKwkJdG1wID0gYXVkaW9fY29uZmlnX3NldHVw X21fcmVnKGNydGMsIG0sIHRtcCk7CisJCUk5MTVfV1JJVEUoSFNXX0FVRF9NX0NUU19FTkFCTEUo cGlwZSksIHRtcCk7CisJfSBlbHNlIHsKKwkJLyogY2xlYXIgY3RzIGZvciBIRE1JICovCisJCXRt cCA9IEk5MTVfUkVBRChIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7CisJCXRtcCAmPSB+QVVE X0NPTkZJR19NX01BU0s7CisJCXRtcCAmPSB+QVVEX01fQ1RTX01fVkFMVUVfSU5ERVg7CisJCXRt cCB8PSBBVURfTV9DVFNfTV9QUk9HX0VOQUJMRTsKKwkJSTkxNV9XUklURShIU1dfQVVEX01fQ1RT X0VOQUJMRShwaXBlKSwgdG1wKTsKKwl9Cit9CisKIC8qIGNoZWNrIHdoZXRoZXIgTi9DVFMvTSBu ZWVkIGJlIHNldCBtYW51YWxseSAqLwogc3RhdGljIGJvb2wgYXVkaW9fcmF0ZV9uZWVkX3Byb2co c3RydWN0IGludGVsX2NydGMgKmNydGMsCi0JCQkJIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlKQorCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRf bW9kZSkKIHsKLQlpZiAoKChtb2RlLT5jbG9jayA9PSBUTURTXzI5N00pIHx8Ci0JCSAobW9kZS0+ Y2xvY2sgPT0gVE1EU18yOTZNKSkgJiYKKwlpZiAoKChhZGp1c3RlZF9tb2RlLT5jbG9jayA9PSBU TURTXzI5N00pIHx8CisJCSAoYWRqdXN0ZWRfbW9kZS0+Y2xvY2sgPT0gVE1EU18yOTZNKSkgJiYK IAkJaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9IRE1JKSkK IAkJcmV0dXJuIHRydWU7CisJZWxzZSBpZiAoKChjcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPT0g TENfNTQwTSkgfHwKKwkJICAoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IExDXzI3ME0pIHx8 CisJCSAgKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBMQ18xNjJNKSkgJiYKKwkJICBpbnRl bF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGMtPmNvbmZpZykpCisJCXJldHVybiB0cnVlOwogCWVs c2UKIAkJcmV0dXJuIGZhbHNlOwogfQpAQCAtMzQzLDE1ICs0NTMsMTcgQEAgc3RhdGljIHZvaWQg aHN3X2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAog CQkJRFJNX0VSUk9SKCJpbnZhbGlkIHBvcnQ6ICVkXG4iLCBwb3J0KTsKIAkJCXJhdGUgPSAwOwog CQl9Ci0JCW4gPSBhdWRpb19jb25maWdfZ2V0X24oYWRqdXN0ZWRfbW9kZSwgcmF0ZSk7CisJCW4g PSBhdWRpb19jb25maWdfZ2V0X24oaW50ZWxfY3J0YywgYWRqdXN0ZWRfbW9kZSwgcmF0ZSk7CiAJ CWlmIChuICE9IDApCi0JCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcobiwgdG1wKTsK KwkJCXRtcCA9IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhpbnRlbF9jcnRjLCBuLCB0bXApOwog CQllbHNlCiAJCQlEUk1fREVCVUdfS01TKCJubyBzdWl0YWJsZSBOIHZhbHVlIGlzIGZvdW5kXG4i KTsKIAl9CiAKIAlJOTE1X1dSSVRFKEhTV19BVURfQ0ZHKHBpcGUpLCB0bXApOwogCisJYXVkaW9f bV9jdHNfc2V0dXAoY29ubmVjdG9yLT5kZXYsIGludGVsX2NydGMsIHJhdGUpOworCiAJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwogfQogCkBAIC02NTgsNyArNzcwLDggQEAgc3Rh dGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmlj ZSAqZGV2LAogCWludGVsX2VuY29kZXIgPSBkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdOwog CS8qIGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICovCiAJaWYgKCFpbnRl bF9lbmNvZGVyIHx8ICFpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMgfHwKLQkgICAgaW50ZWxfZW5j b2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgeworCSAgICAoKGludGVsX2VuY29kZXIt PnR5cGUgIT0gSU5URUxfT1VUUFVUX0hETUkpICYmCisJICAgICAoaW50ZWxfZW5jb2Rlci0+dHlw ZSAhPSBJTlRFTF9PVVRQVVRfRFApKSkgewogCQlEUk1fREVCVUdfS01TKCJubyB2YWxpZCBwb3J0 ICVjXG4iLCBwb3J0X25hbWUocG9ydCkpOwogCQllcnIgPSAtRU5PREVWOwogCQlnb3RvIHVubG9j azsKQEAgLTY4Niw3ICs3OTksNyBAQCBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5 bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCWdvdG8gdW5sb2NrOwogCX0KIAot CW4gPSBhdWRpb19jb25maWdfZ2V0X24obW9kZSwgcmF0ZSk7CisJbiA9IGF1ZGlvX2NvbmZpZ19n ZXRfbihjcnRjLCBtb2RlLCByYXRlKTsKIAlpZiAobiA9PSAwKSB7CiAJCURSTV9ERUJVR19LTVMo IlVzaW5nIGF1dG9tYXRpYyBtb2RlIGZvciBOIHZhbHVlIG9uIHBvcnQgJWNcbiIsCiAJCQkJCSAg cG9ydF9uYW1lKHBvcnQpKTsKQEAgLTY5OCw5ICs4MTEsMTEgQEAgc3RhdGljIGludCBpOTE1X2F1 ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAogCiAJLyog My4gc2V0IHRoZSBOL0NUUy9NICovCiAJdG1wID0gSTkxNV9SRUFEKEhTV19BVURfQ0ZHKHBpcGUp KTsKLQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcobiwgdG1wKTsKKwl0bXAgPSBhdWRp b19jb25maWdfc2V0dXBfbl9yZWcoY3J0YywgbiwgdG1wKTsKIAlJOTE1X1dSSVRFKEhTV19BVURf Q0ZHKHBpcGUpLCB0bXApOwogCisJYXVkaW9fbV9jdHNfc2V0dXAoZGV2X2dldF9kcnZkYXRhKGRl diksIGNydGMsIHBpcGUpOworCiAgdW5sb2NrOgogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2 X211dGV4KTsKIAlpOTE1X2F1ZGlvX2NvbXBvbmVudF9wdXRfcG93ZXIoZGV2KTsKLS0gCjEuOS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK