From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) by gabe.freedesktop.org (Postfix) with ESMTPS id DE1CA89824 for ; Mon, 18 Mar 2019 11:15:20 +0000 (UTC) Received: by mail-pf1-x434.google.com with SMTP id p10so4213351pff.3 for ; Mon, 18 Mar 2019 04:15:20 -0700 (PDT) From: Juha-Pekka Heikkila Date: Mon, 18 Mar 2019 13:15:09 +0200 Message-Id: <1552907710-4345-1-git-send-email-juhapekka.heikkila@gmail.com> Subject: [igt-dev] [PATCH i-g-t 1/2] tests/kms_available_modes_crc limit tested fb formats List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: VGhpcyB0ZXN0IGlzIGNhdXNpbmcgdG9vIG11Y2ggdXNlbGVzcyBub2lzZS4gTGltaXQgdGVzdGVk CmZiIGZvcm1hdHMgdG8gRFJNX0ZPUk1BVF9DOCBhbmQgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMCBm b3Igbm93LgpUaGVzZSB0d28gZm9ybWF0cyBhcmUgY3VycmVudGx5IG5vdCB0ZXN0ZWQgb3RoZXJ3 aXNlIHRodXMKdGhleSdyZSBsZWZ0IGhlcmUgZm9yIG5vdy4gRFJNX0ZPUk1BVF9YQkdSMjEwMTAx MCBuZWVkIHRvIGJlCmluY2x1ZGVkIGludG8gSUdUIHN1cHBvcnRlZCBmb3JtYXRzIGFuZCBEUk1f Rk9STUFUX0M4IHRlc3QgbmVlZAp0byBiZSBtb3ZlZCBlbHNld2hlcmUsIG1heWJlIGludG8ga21z X3BsYW5lLgoKU2lnbmVkLW9mZi1ieTogSnVoYS1QZWtrYSBIZWlra2lsYSA8anVoYXBla2thLmhl aWtraWxhQGdtYWlsLmNvbT4KLS0tCiB0ZXN0cy9rbXNfYXZhaWxhYmxlX21vZGVzX2NyYy5jIHwg Mjg5ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwgMTczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rl c3RzL2ttc19hdmFpbGFibGVfbW9kZXNfY3JjLmMgYi90ZXN0cy9rbXNfYXZhaWxhYmxlX21vZGVz X2NyYy5jCmluZGV4IDdmZjM4NWYuLjUwYjU1MjIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19hdmFp bGFibGVfbW9kZXNfY3JjLmMKKysrIGIvdGVzdHMva21zX2F2YWlsYWJsZV9tb2Rlc19jcmMuYwpA QCAtNTcsMTUgKzU3LDE1IEBAIHR5cGVkZWYgc3RydWN0IHsKIH0gZGF0YV90OwogCiAKLXN0YXRp YyBpbnQgZG9fd3JpdGUoaW50IGZkLCBpbnQgaGFuZGxlLCB2b2lkICpidWYsIGludCBzaXplKQot ewotCXN0cnVjdCBkcm1faTkxNV9nZW1fcHdyaXRlIHdyaXRlOwotCW1lbXNldCgmd3JpdGUsIDB4 MDAsIHNpemVvZih3cml0ZSkpOwotCXdyaXRlLmhhbmRsZSA9IGhhbmRsZTsKLQl3cml0ZS5kYXRh X3B0ciA9ICh1aW50cHRyX3QpYnVmOwotCXdyaXRlLnNpemUgPSBzaXplOwotCXdyaXRlLm9mZnNl dCA9IDA7Ci0JcmV0dXJuIGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX1BXUklURSwg JndyaXRlKTsKK3N0YXRpYyB2b2lkIGRvX3dyaXRlKGludCBmZCwgaW50IGhhbmRsZSwgdm9pZCAq YnVmLCBpbnQgc2l6ZSkKK3sJdm9pZCAqc2NyZWVuYnVmOworCisJZ2VtX3NldF9kb21haW4oZmQs IGhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7CisJc2Ny ZWVuYnVmID0gZ2VtX21tYXBfX2d0dChmZCwgaGFuZGxlLCBzaXplLCBQUk9UX1dSSVRFKTsKKwlt ZW1jcHkoc2NyZWVuYnVmLCBidWYsIHNpemUpOworCWdlbV9tdW5tYXAoc2NyZWVuYnVmLCBzaXpl KTsKKwlnZW1fc2V0X2RvbWFpbihmZCwgaGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1 X0dFTV9ET01BSU5fR1RUKTsKKwlnZW1fc3luYyhmZCwgaGFuZGxlKTsKIH0KIAogCkBAIC05Niw3 NCArOTYsMzkgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfY29tcGFyaXNvbl9jcmNfbGlzdChkYXRh X3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0KQogCQkJICAgIDAuMCwgMC4wLCAwLjApOwog CWlndF9wYWludF9jb2xvcihjciwgMCwgMCwgdywgaCwgMS4wLCAxLjAsIDEuMCk7CiAJaWd0X2Fz c2VydChjYWlyb19zdGF0dXMoY3IpID09IDApOworCWlndF9wdXRfY2Fpcm9fY3R4KGRhdGEtPmdm eF9mZCwgJmRhdGEtPnByaW1hcnlfZmIsIGNyKTsKIAogCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dl dF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7CiAJaWd0X3BsYW5l X3NldF9mYihwcmltYXJ5LCAmZGF0YS0+cHJpbWFyeV9mYik7CiAJaWd0X2Rpc3BsYXlfY29tbWl0 MigmZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0KTsKIAorCWlndF9waXBlX2NyY19kcmFpbihk YXRhLT5waXBlX2NyYyk7CiAJaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGRhdGEtPmdmeF9mZCwg ZGF0YS0+cGlwZV9jcmMsICZkYXRhLT5jdXJzb3JfY3JjKTsKIAlpZ3RfcGxhbmVfc2V0X2ZiKHBy aW1hcnksIE5VTEwpOwogCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIGRhdGEt PmNvbW1pdCk7CiAKLQlpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLT5nZnhfZmQp KSA8IDkgPwotCQkgIGlndF9wYWludF9jb2xvcihjciwgMCwgMCwgbW9kZS0+aGRpc3BsYXksIG1v ZGUtPnZkaXNwbGF5LCAxLjAsIDEuMCwgMS4wKSA6Ci0JCSAgaWd0X3BhaW50X2NvbG9yX2FscGhh KGNyLCAwLCAwLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksIDEuMCwgMS4wLCAxLjAs IDEuMCk7CisJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5nZnhfZmQsICZkYXRhLT5wcmlt YXJ5X2ZiKTsKKwlpZ3RfcGFpbnRfY29sb3IoY3IsIDAsIDAsIG1vZGUtPmhkaXNwbGF5LCBtb2Rl LT52ZGlzcGxheSwgMS4wLCAxLjAsIDEuMCk7CisJaWd0X3B1dF9jYWlyb19jdHgoZGF0YS0+Z2Z4 X2ZkLCAmZGF0YS0+cHJpbWFyeV9mYiwgY3IpOwogCiAJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5 LCAmZGF0YS0+cHJpbWFyeV9mYik7CiAJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxh eSwgZGF0YS0+Y29tbWl0KTsKIAorCWlndF9waXBlX2NyY19kcmFpbihkYXRhLT5waXBlX2NyYyk7 CiAJaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGRhdGEtPmdmeF9mZCwgZGF0YS0+cGlwZV9jcmMs ICZkYXRhLT5mdWxsc2NyZWVuX2NyYyk7CiAKLQljYWlyb19kZXN0cm95KGNyKTsKIAlpZ3RfcmVt b3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJmRhdGEtPnByaW1hcnlfZmIpOwogfQogCiBzdGF0aWMgY29u c3Qgc3RydWN0IHsKIAl1aW50MzJfdAlmb3VyY2M7CiAJY2hhcgkJemVyb3BhZGRpbmc7Ci0JZW51 bQkJeyBCWVRFU19QUF8xPTEsCi0JCQkJQllURVNfUFBfMj0yLAotCQkJCUJZVEVTX1BQXzQ9NCwK LQkJCQlOVjEyLAotCQkJCVAwMTAsCi0JCQkJU0tJUDQgfSBicHA7CisJZW51bQkJeyBCWVRFU19Q UF8xID0gMSwKKwkJCQlCWVRFU19QUF80ID0gNH0gYnBwOwogCXVpbnQzMl90CXZhbHVlOwogfSBm aWxsZXJzW10gPSB7CiAJeyBEUk1fRk9STUFUX0M4LCAwLCBCWVRFU19QUF8xLCAweGZmfSwKLQl7 IERSTV9GT1JNQVRfUkdCNTY1LCAwLCBCWVRFU19QUF8yLCAweGZmZmZ9LAotCXsgRFJNX0ZPUk1B VF9YUkdCODg4OCwgMCwgQllURVNfUFBfNCwgMHhmZmZmZmZmZn0sCi0JeyBEUk1fRk9STUFUX1hC R1I4ODg4LCAwLCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwKLQotCS8qCi0JICogZm9sbG93aW5n IHR3byBhcmUgc2tpcHBlZCBiZWNhdXNlIGJsZW5kaW5nIHNlZW1zIHRvIHdvcmsKLQkgKiBpbmNv cnJlY3RseSB3aXRoIGV4Y2VwdGlvbiBvZiBBUjI0IG9uIGN1cnNvciBwbGFuZS4KLQkgKiBUZXN0 IHN0aWxsIGNyZWF0ZXMgdGhlIHBsYW5lcywganVzdCBmaWxsaW5nIHBsYW5lCi0JICogYW5kIGdl dHRpbmcgY3JjIGlzIHNraXBwZWQuCi0JICovCi0JeyBEUk1fRk9STUFUX0FSR0I4ODg4LCAwLCBT S0lQNCwgMHhmZmZmZmZmZn0sCi0JeyBEUk1fRk9STUFUX0FCR1I4ODg4LCAwLCBTS0lQNCwgMHgw MGZmZmZmZn0sCi0KLQl7IERSTV9GT1JNQVRfWFJHQjIxMDEwMTAsIDAsIEJZVEVTX1BQXzQsIDB4 ZmZmZmZmZmZ9LAogCXsgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMCwgMCwgQllURVNfUFBfNCwgMHhm ZmZmZmZmZn0sCi0KLQl7IERSTV9GT1JNQVRfWVVZViwgMCwgQllURVNfUFBfNCwgMHg4MGViODBl Yn0sCi0JeyBEUk1fRk9STUFUX1lWWVUsIDAsIEJZVEVTX1BQXzQsIDB4ODBlYjgwZWJ9LAotCXsg RFJNX0ZPUk1BVF9WWVVZLCAwLCBCWVRFU19QUF80LCAweGViODBlYjgwfSwKLQl7IERSTV9GT1JN QVRfVVlWWSwgMCwgQllURVNfUFBfNCwgMHhlYjgwZWI4MH0sCi0KLQkvKgotCSAqIChzZW1pLSlw bGFuYXIgZm9ybWF0cwotCSAqLwotCXsgRFJNX0ZPUk1BVF9OVjEyLCAwLCBOVjEyLCAweDgwZWJ9 LAotI2lmZGVmIERSTV9GT1JNQVRfUDAxMAotCXsgRFJNX0ZPUk1BVF9QMDEwLCAwLCBQMDEwLCAw eDgwMDBlYjAwfSwKLSNlbmRpZgotI2lmZGVmIERSTV9GT1JNQVRfUDAxMgotCXsgRFJNX0ZPUk1B VF9QMDEyLCAwLCBQMDEwLCAweDgwMDBlYjAwfSwKLSNlbmRpZgotI2lmZGVmIERSTV9GT1JNQVRf UDAxNgotCXsgRFJNX0ZPUk1BVF9QMDE2LCAwLCBQMDEwLCAweDgwMDBlYjAwfSwKLSNlbmRpZgog CXsgMCwgMCwgMCwgMCB9CiB9OwogCkBAIC0xNzUsMTEgKzE0MCwxMCBAQCBzdGF0aWMgYm9vbCBm aWxsX2luX2ZiKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGlndF9wbGFuZV90 ICpwbGFuZSwKIAkJICAgICAgIHVpbnQzMl90IGZvcm1hdCkKIHsKIAlzaWduZWQgaSwgYywgd3Jp dGVzaXplOwotCXVuc2lnbmVkIHNob3J0KiBwdGVtcF8xNl9idWY7CiAJdW5zaWduZWQgaW50KiBw dGVtcF8zMl9idWY7CiAKLQlmb3IoIGkgPSAwOyBmaWxsZXJzW2ldLmZvdXJjYyAhPSAwOyBpKysg KSB7Ci0JCWlmKCBmaWxsZXJzW2ldLmZvdXJjYyA9PSBmb3JtYXQgKQorCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGZpbGxlcnMpLTE7IGkrKykgeworCQlpZiAoZmlsbGVyc1tpXS5mb3VyY2Mg PT0gZm9ybWF0KQogCQkJYnJlYWs7CiAJfQogCkBAIC0xOTAsNTcgKzE1NCwxMiBAQCBzdGF0aWMg Ym9vbCBmaWxsX2luX2ZiKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGlndF9w bGFuZV90ICpwbGFuZSwKIAkJCXB0ZW1wXzMyX2J1ZltjXSA9IGZpbGxlcnNbaV0udmFsdWU7CiAJ CXdyaXRlc2l6ZSA9IGRhdGEtPnNpemU7CiAJCWJyZWFrOwotCWNhc2UgQllURVNfUFBfMjoKLQkJ cHRlbXBfMTZfYnVmID0gKHVuc2lnbmVkIHNob3J0KilkYXRhLT5idWY7Ci0JCWZvciAoYyA9IDA7 IGMgPCBkYXRhLT5zaXplLzI7IGMrKykKLQkJCXB0ZW1wXzE2X2J1ZltjXSA9ICh1bnNpZ25lZCBz aG9ydClmaWxsZXJzW2ldLnZhbHVlOwotCQl3cml0ZXNpemUgPSBkYXRhLT5zaXplOwotCQlicmVh azsKIAljYXNlIEJZVEVTX1BQXzE6CiAJCW1lbXNldCgodm9pZCAqKWRhdGEtPmJ1ZiwgZmlsbGVy c1tpXS52YWx1ZSwgZGF0YS0+c2l6ZSk7CiAJCXdyaXRlc2l6ZSA9IGRhdGEtPnNpemU7CiAJCWJy ZWFrOwotCWNhc2UgTlYxMjoKLQkJbWVtc2V0KCh2b2lkICopZGF0YS0+YnVmLCBmaWxsZXJzW2ld LnZhbHVlJjB4ZmYsCi0JCSAgICAgICBkYXRhLT5mYi5vZmZzZXRzWzFdKTsKLQotCQltZW1zZXQo KHZvaWQgKikoZGF0YS0+YnVmK2RhdGEtPmZiLm9mZnNldHNbMV0pLAotCQkgICAgICAgKGZpbGxl cnNbaV0udmFsdWU+PjgpJjB4ZmYsCi0JCSAgICAgICBkYXRhLT5zaXplIC0gZGF0YS0+ZmIub2Zm c2V0c1sxXSk7Ci0KLQkJd3JpdGVzaXplID0gZGF0YS0+c2l6ZTsKLQkJYnJlYWs7Ci0JY2FzZSBQ MDEwOgotCQlwdGVtcF8xNl9idWYgPSAodW5zaWduZWQgc2hvcnQqKWRhdGEtPmJ1ZjsKLQkJZm9y IChjID0gMDsgYyA8IGRhdGEtPnNpemUvMjsgYysrKQotCQkJcHRlbXBfMTZfYnVmW2NdID0gKHVu c2lnbmVkIHNob3J0KWZpbGxlcnNbaV0udmFsdWUmMHhmZmZmOwotCi0JCXB0ZW1wXzE2X2J1ZiA9 ICh1bnNpZ25lZCBzaG9ydCopKGRhdGEtPmJ1ZitkYXRhLT5zaXplKTsKLQkJZm9yIChjID0gMDsg YyA8IGRhdGEtPnNpemUvMjsgYysrKQotCQkJcHRlbXBfMTZfYnVmW2NdID0gKHVuc2lnbmVkIHNo b3J0KShmaWxsZXJzW2ldLnZhbHVlPj4xNikmMHhmZmZmOwotCi0JCXdyaXRlc2l6ZSA9IGRhdGEt PnNpemUrZGF0YS0+c2l6ZS8yOwotCQlicmVhazsKLQljYXNlIFNLSVA0OgotCQlpZiAoZmlsbGVy c1tpXS5mb3VyY2MgPT0gRFJNX0ZPUk1BVF9BUkdCODg4OCAmJgotCQkgICAgcGxhbmUtPnR5cGUg PT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7Ci0JCS8qCi0JCSAqIHNwZWNpYWwgZm9yIGN1cnNv ciBwbGFuZSB3aGVyZSBibGVuZGluZyB3b3JrcyBjb3JyZWN0bHkuCi0JCSAqLwotCQkJcHRlbXBf MzJfYnVmID0gKHVuc2lnbmVkIGludCopZGF0YS0+YnVmOwotCQkJZm9yIChjID0gMDsgYyA8IGRh dGEtPnNpemUvNDsgYysrKQotCQkJCXB0ZW1wXzMyX2J1ZltjXSA9IGZpbGxlcnNbaV0udmFsdWU7 Ci0JCQl3cml0ZXNpemUgPSBkYXRhLT5zaXplOwotCQkJYnJlYWs7Ci0JCX0KLQkJaWd0X2luZm8o IkZvcm1hdCAlcyBDUkMgY29tcGFyaXNvbiBza2lwcGVkIGJ5IGRlc2lnbi5cbiIsCi0JCQkgKGNo YXIqKSZmaWxsZXJzW2ldLmZvdXJjYyk7Ci0KLQkJcmV0dXJuIGZhbHNlOwogCWRlZmF1bHQ6Ci0J CWlndF9pbmZvKCJVbnN1cHBvcnRlZCBtb2RlIGZvciB0ZXN0ICVzXG4iLAotCQkJIChjaGFyKikm ZmlsbGVyc1tpXS5mb3VyY2MpOwotCQlyZXR1cm4gZmFsc2U7CisJCWlndF9hc3NlcnRfZigwLCAi dW5rbm93biBicHAiKTsKIAl9CiAKIAlkb193cml0ZShkYXRhLT5nZnhfZmQsIGRhdGEtPmdlbV9o YW5kbGUsICh2b2lkKilkYXRhLT5idWYsIHdyaXRlc2l6ZSk7CkBAIC0yNzEsMjYgKzE5MCwyMCBA QCBzdGF0aWMgYm9vbCBzZXR1cF9mYihkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0 LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJCXRpbGluZyA9IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05P TkU7CiAJfQogCi0JZm9yIChpID0gMDsgZmlsbGVyc1tpXS5mb3VyY2MgIT0gMDsgaSsrKSB7CisJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmlsbGVycyktMTsgaSsrKSB7CiAJCWlmIChmaWxs ZXJzW2ldLmZvdXJjYyA9PSBmb3JtYXQpCiAJCQlicmVhazsKIAl9CiAKIAlzd2l0Y2ggKGZpbGxl cnNbaV0uYnBwKSB7Ci0JY2FzZSBOVjEyOgogCWNhc2UgQllURVNfUFBfMToKIAkJYnBwID0gODsK IAkJYnJlYWs7Ci0KLQljYXNlIFAwMTA6Ci0JY2FzZSBCWVRFU19QUF8yOgotCQlicHAgPSAxNjsK LQkJYnJlYWs7Ci0KLQljYXNlIFNLSVA0OgogCWNhc2UgQllURVNfUFBfNDoKIAkJYnBwID0gMzI7 CiAJCWJyZWFrOworCWRlZmF1bHQ6CisJCWlndF9hc3NlcnRfZigwLCAidW5rbm93biBicHAiKTsK IAl9CiAKIAlpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShkYXRhLT5nZnhfZmQsIHRpbGluZywgYnBwLApA QCAtMjk4LDIzICsyMTEsMTggQEAgc3RhdGljIGJvb2wgc2V0dXBfZmIoZGF0YV90ICpkYXRhLCBp Z3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X3BsYW5lX3QgKnBsYW5lLAogCWRhdGEtPmZiLm9mZnNl dHNbMF0gPSAwOwogCWRhdGEtPmZiLnN0cmlkZXNbMF0gPSBBTElHTih3ICogYnBwIC8gOCwgdGls ZV93aWR0aCk7CiAJZ2Vtc2l6ZSA9IGRhdGEtPnNpemUgPSBkYXRhLT5mYi5zdHJpZGVzWzBdICog QUxJR04oaCwgdGlsZV9oZWlnaHQpOwotCi0JaWYgKGZpbGxlcnNbaV0uYnBwID09IFAwMTAgfHwg ZmlsbGVyc1tpXS5icHAgPT0gTlYxMikgewotCQlkYXRhLT5mYi5vZmZzZXRzWzFdID0gZGF0YS0+ c2l6ZTsKLQkJZGF0YS0+ZmIuc3RyaWRlc1sxXSA9IGRhdGEtPmZiLnN0cmlkZXNbMF07Ci0JCWdl bXNpemUgPSBkYXRhLT5zaXplICogMjsKLQotCQlpZiAoZmlsbGVyc1tpXS5icHAgPT0gTlYxMikK LQkJCWRhdGEtPnNpemUgKz0gZGF0YS0+ZmIuc3RyaWRlc1sxXSAqIEFMSUdOKGgvMiwgdGlsZV9o ZWlnaHQpOwotCi0JCW51bV9wbGFuZXMgPSAyOwotCX0KKwlkYXRhLT5idWYgPSAodW5zaWduZWQg Y2hhciAqKWNhbGxvYyhkYXRhLT5zaXplKjIsIDEpOwogCiAJZGF0YS0+Z2VtX2hhbmRsZSA9IGdl bV9jcmVhdGUoZGF0YS0+Z2Z4X2ZkLCBnZW1zaXplKTsKIAlyZXQgPSBfX2dlbV9zZXRfdGlsaW5n KGRhdGEtPmdmeF9mZCwgZGF0YS0+Z2VtX2hhbmRsZSwKIAkJCSAgICAgICBpZ3RfZmJfbW9kX3Rv X3RpbGluZyh0aWxpbmcpLAogCQkJICAgICAgIGRhdGEtPmZiLnN0cmlkZXNbMF0pOwogCisJZGF0 YS0+ZmIuZ2VtX2hhbmRsZSA9IGRhdGEtPmdlbV9oYW5kbGU7CisJZGF0YS0+ZmIud2lkdGggPSB3 OworCWRhdGEtPmZiLmhlaWdodCA9IGg7CisJZmlsbF9pbl9mYihkYXRhLCBvdXRwdXQsIHBsYW5l LCBmb3JtYXQpOworCiAJaWd0X2Fzc2VydF9lcShyZXQsIDApOwogCiAJcmV0ID0gX19rbXNfYWRk ZmIoZGF0YS0+Z2Z4X2ZkLCBkYXRhLT5nZW1faGFuZGxlLCB3LCBoLApAQCAtMzI5LDkgKzIzNyw2 IEBAIHN0YXRpYyBib29sIHNldHVwX2ZiKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRw dXQsIGlndF9wbGFuZV90ICpwbGFuZSwKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCWRhdGEtPmZi LndpZHRoID0gdzsKLQlkYXRhLT5mYi5oZWlnaHQgPSBoOwotCWRhdGEtPmZiLmdlbV9oYW5kbGUg PSBkYXRhLT5nZW1faGFuZGxlOwogCXJldHVybiB0cnVlOwogfQogCkBAIC0zNzgsNjMgKzI4Myw2 NiBAQCBzdGF0aWMgYm9vbCBwcmVwYXJlX2NydGMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3Qg Km91dHB1dCwKIAlpZiAoIXNldHVwX2ZiKGRhdGEsIG91dHB1dCwgcGxhbmUsIGZvcm1hdCkpCiAJ CXJldHVybiBmYWxzZTsKIAotCWZyZWUoKHZvaWQqKWRhdGEtPmJ1Zik7Ci0JZGF0YS0+YnVmID0g KHVuc2lnbmVkIGNoYXIqKWNhbGxvYyhkYXRhLT5zaXplKjIsIDEpOwogCXJldHVybiB0cnVlOwog fQogCiAKIHN0YXRpYyBpbnQKIHRlc3Rfb25lX21vZGUoZGF0YV90KiBkYXRhLCBpZ3Rfb3V0cHV0 X3QgKm91dHB1dCwgaWd0X3BsYW5lX3QqIHBsYW5lLAotCSAgICAgIGludCBtb2RlKQorCSAgICAg IGludCBtb2RlLCBlbnVtIHBpcGUgcGlwZSkKIHsKIAlpZ3RfY3JjX3QgY3VycmVudF9jcmM7CiAJ c2lnbmVkIHJWYWwgPSAwOwotCWJvb2wgZG9fY3JjOwotCWNoYXIqIGNyY2NvbXBhcmVbMl07CisJ aW50IGk7CiAKLQlpZiAocHJlcGFyZV9jcnRjKGRhdGEsIG91dHB1dCwgcGxhbmUsIG1vZGUpKXsK LQkJLyoKLQkJICogd2UgaGF2ZSBmYiBmcm9tIHByZXBhcmVfY3J0YyguLikgc28gbm93IGZpbGwg aXQgaW4KLQkJICogY29ycmVjdGx5IGluIGZpbGxfaW5fZmIoLi4pCi0JCSAqLwotCQlkb19jcmMg PSBmaWxsX2luX2ZiKGRhdGEsIG91dHB1dCwgcGxhbmUsIG1vZGUpOworCS8qCisJICogTGltaXQg dGVzdHMgb25seSB0byB0aG9zZSBmYiBmb3JtYXRzIGxpc3RlZCBpbiBmaWxsZXJzIHRhYmxlCisJ ICovCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmlsbGVycyktMTsgaSsrKSB7CisJCWlm IChmaWxsZXJzW2ldLmZvdXJjYyA9PSBtb2RlKQorCQkJYnJlYWs7CisJfQorCisJaWYgKGZpbGxl cnNbaV0uYnBwID09IDApCisJCXJldHVybiBmYWxzZTsKIAorCWlmIChwcmVwYXJlX2NydGMoZGF0 YSwgb3V0cHV0LCBwbGFuZSwgbW9kZSkpIHsKIAkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRh dGEtPmZiKTsKIAkJaWd0X2ZiX3NldF9zaXplKCZkYXRhLT5mYiwgcGxhbmUsIGRhdGEtPmZiLndp ZHRoLCBkYXRhLT5mYi5oZWlnaHQpOwogCQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIGRhdGEt PmZiLndpZHRoLCBkYXRhLT5mYi5oZWlnaHQpOwogCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkYXRh LT5mYiwgcGxhbmUsIDAsIDApOwogCQlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5 LCBkYXRhLT5jb21taXQpOwogCi0JCWlmIChkb19jcmMpIHsKLQkJCWlndF9waXBlX2NyY19nZXRf Y3VycmVudChkYXRhLT5nZnhfZmQsIGRhdGEtPnBpcGVfY3JjLCAmY3VycmVudF9jcmMpOwotCi0J CQlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7Ci0JCQkJaWYgKCFp Z3RfY2hlY2tfY3JjX2VxdWFsKCZjdXJyZW50X2NyYywKLQkJCQkJJmRhdGEtPmZ1bGxzY3JlZW5f Y3JjKSkgewotCQkJCQljcmNjb21wYXJlWzBdID0gaWd0X2NyY190b19zdHJpbmcoJmN1cnJlbnRf Y3JjKTsKLQkJCQkJY3JjY29tcGFyZVsxXSA9IGlndF9jcmNfdG9fc3RyaW5nKCZkYXRhLT5mdWxs c2NyZWVuX2NyYyk7Ci0JCQkJCWlndF93YXJuKCJjcmMgbWlzbWF0Y2guIHRhcmdldCAlLjhzLCBy ZXN1bHQgJS44cy5cbiIsIGNyY2NvbXBhcmVbMF0sIGNyY2NvbXBhcmVbMV0pOwotCQkJCQlmcmVl KGNyY2NvbXBhcmVbMF0pOwotCQkJCQlmcmVlKGNyY2NvbXBhcmVbMV0pOwotCQkJCQlyVmFsKys7 Ci0JCQkJfQotCQkJfSBlbHNlIHsKLQkJCQlpZiAoIWlndF9jaGVja19jcmNfZXF1YWwoJmN1cnJl bnRfY3JjLAotCQkJCQkmZGF0YS0+Y3Vyc29yX2NyYykpIHsKLQkJCQkJY3JjY29tcGFyZVswXSA9 IGlndF9jcmNfdG9fc3RyaW5nKCZjdXJyZW50X2NyYyk7Ci0JCQkJCWNyY2NvbXBhcmVbMV0gPSBp Z3RfY3JjX3RvX3N0cmluZygmZGF0YS0+Y3Vyc29yX2NyYyk7Ci0JCQkJCWlndF93YXJuKCJjcmMg bWlzbWF0Y2guIHRhcmdldCAlLjhzLCByZXN1bHQgJS44cy5cbiIsIGNyY2NvbXBhcmVbMF0sIGNy Y2NvbXBhcmVbMV0pOwotCQkJCQlmcmVlKGNyY2NvbXBhcmVbMF0pOwotCQkJCQlmcmVlKGNyY2Nv bXBhcmVbMV0pOwotCQkJCQlyVmFsKys7Ci0JCQkJfQorCQlpZ3Rfd2FpdF9mb3JfdmJsYW5rKGRh dGEtPmdmeF9mZCwgcGlwZSk7CisJCWlndF9waXBlX2NyY19kcmFpbihkYXRhLT5waXBlX2NyYyk7 CisJCWlndF9waXBlX2NyY19nZXRfY3VycmVudChkYXRhLT5nZnhfZmQsIGRhdGEtPnBpcGVfY3Jj LCAmY3VycmVudF9jcmMpOworCisJCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9D VVJTT1IpIHsKKwkJCWlmICghaWd0X2NoZWNrX2NyY19lcXVhbCgmY3VycmVudF9jcmMsCisJCQkJ JmRhdGEtPmZ1bGxzY3JlZW5fY3JjKSkgeworCQkJCWlndF93YXJuKCJjcmMgbWlzbWF0Y2guIGNv bm5lY3RvciAlcyB1c2luZyBwaXBlICVzIiBcCisJCQkJCSIgcGxhbmUgaW5kZXggJWQgbW9kZSAl LjRzXG4iLAorCQkJCQlpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKKwkJCQkJa21zdGVzdF9waXBl X25hbWUocGlwZSksCisJCQkJCXBsYW5lLT5pbmRleCwKKwkJCQkJKGNoYXIgKikmbW9kZSk7CisJ CQkJclZhbCsrOworCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKCFpZ3RfY2hlY2tfY3JjX2VxdWFs KCZjdXJyZW50X2NyYywKKwkJCQkmZGF0YS0+Y3Vyc29yX2NyYykpIHsKKwkJCQlpZ3Rfd2Fybigi Y3JjIG1pc21hdGNoLiBjb25uZWN0b3IgJXMgdXNpbmcgcGlwZSAlcyIgXAorCQkJCQkiIHBsYW5l IGluZGV4ICVkIG1vZGUgJS40c1xuIiwKKwkJCQkJaWd0X291dHB1dF9uYW1lKG91dHB1dCksCisJ CQkJCWttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpLAorCQkJCQlwbGFuZS0+aW5kZXgsCisJCQkJCShj aGFyICopJm1vZGUpOworCQkJCXJWYWwrKzsKIAkJCX0KIAkJfQotCQlyZW1vdmVfZmIoZGF0YSwg b3V0cHV0LCBwbGFuZSk7Ci0JCXJldHVybiByVmFsOwogCX0KLQlyZXR1cm4gMTsKKwlyZW1vdmVf ZmIoZGF0YSwgb3V0cHV0LCBwbGFuZSk7CisJcmV0dXJuIHJWYWw7CiB9CiAKIApAQCAtNDQ1LDE0 ICszNTMsNDQgQEAgdGVzdF9hdmFpbGFibGVfbW9kZXMoZGF0YV90KiBkYXRhKQogCWlndF9wbGFu ZV90ICpwbGFuZTsKIAlpbnQgbW9kZWluZGV4OwogCWVudW0gcGlwZSBwaXBlOwotCWludCBpbnZh bGlkcyA9IDA7CisJaW50IGludmFsaWRzID0gMCwgaSwgbHV0X3NpemU7CiAJZHJtTW9kZVBsYW5l ICptb2RlUGxhbmU7Ci0JY2hhciBwbGFuZXR5cGVbM11bOF0gPSB7Ik9WRVJMQVlcMCIsICJQUklN QVJZXDAiLCAiQ1VSU09SXDAiIH07CisKKwlzdHJ1Y3QgeworCQl1aW50MTZfdCByZWQ7CisJCXVp bnQxNl90IGdyZWVuOworCQl1aW50MTZfdCBibHVlOworCQl1aW50MTZfdCByZXNlcnZlZDsKKwl9 ICpsdXQgPSBOVUxMOwogCiAJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dCgmZGF0YS0+ ZGlzcGxheSwgcGlwZSwgb3V0cHV0KSB7CiAJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBw aXBlKTsKIAkJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0 KTsKIAorCQlpZiAoaWd0X3BpcGVfb2JqX2hhc19wcm9wKCZkYXRhLT5kaXNwbGF5LnBpcGVzW3Bp cGVdLCBJR1RfQ1JUQ19HQU1NQV9MVVRfU0laRSkpIHsKKwkJCWx1dF9zaXplID0gaWd0X3BpcGVf Z2V0X3Byb3AoJmRhdGEtPmRpc3BsYXksIHBpcGUsCisJCQkJCQkgICAgIElHVF9DUlRDX0dBTU1B X0xVVF9TSVpFKTsKKworCQkJbHV0ID0gY2FsbG9jKHNpemVvZigqbHV0KSwgbHV0X3NpemUpOwor CisJCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykgeworCQkJCWx1dFtpXS5yZWQgPSAo aSAqIDB4ZmZmZiAvIChsdXRfc2l6ZSAtIDEpKSAmIDB4ZmMwMDsKKwkJCQlsdXRbaV0uZ3JlZW4g PSAoaSAqIDB4ZmZmZiAvIChsdXRfc2l6ZSAtIDEpKSAmIDB4ZmMwMDsKKwkJCQlsdXRbaV0uYmx1 ZSA9IChpICogMHhmZmZmIC8gKGx1dF9zaXplIC0gMSkpICYgMHhmYzAwOworCQkJfQorCisJCQlp Z3RfcGlwZV9yZXBsYWNlX3Byb3BfYmxvYigmZGF0YS0+ZGlzcGxheSwgcGlwZSwKKwkJCQkJCSAg IElHVF9DUlRDX0dBTU1BX0xVVCwKKwkJCQkJCSAgIGx1dCwgc2l6ZW9mKCpsdXQpICogbHV0X3Np emUpOworCQkJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0 KTsKKworCQkJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKKwkJCQlsdXRbaV0ucmVk ID0gaSAqIDB4ZmZmZiAvIChsdXRfc2l6ZSAtIDEpOworCQkJCWx1dFtpXS5ncmVlbiA9IGkgKiAw eGZmZmYgLyAobHV0X3NpemUgLSAxKTsKKwkJCQlsdXRbaV0uYmx1ZSA9IGkgKiAweGZmZmYgLyAo bHV0X3NpemUgLSAxKTsKKwkJCX0KKwkJfQorCiAJCWRhdGEtPnBpcGVfY3JjID0gaWd0X3BpcGVf Y3JjX25ldyhkYXRhLT5nZnhfZmQsIHBpcGUsCiAJCQkJCQkgIElOVEVMX1BJUEVfQ1JDX1NPVVJD RV9BVVRPKTsKIApAQCAtNDY3LDI5ICs0MDUsMzQgQEAgdGVzdF9hdmFpbGFibGVfbW9kZXMoZGF0 YV90KiBkYXRhKQogCQkJbW9kZVBsYW5lID0gZHJtTW9kZUdldFBsYW5lKGRhdGEtPmdmeF9mZCwK IAkJCQkJCSAgICBwbGFuZS0+ZHJtX3BsYW5lLT5wbGFuZV9pZCk7CiAKKwkJCWlmIChwbGFuZS0+ dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCisJCQkJY29udGludWU7CisKIAkJCWZvciAo bW9kZWluZGV4ID0gMDsKIAkJCSAgICAgbW9kZWluZGV4IDwgbW9kZVBsYW5lLT5jb3VudF9mb3Jt YXRzOwogCQkJICAgICBtb2RlaW5kZXgrKykgewogCQkJCWRhdGEtPmZvcm1hdC5kd29yZCA9IG1v ZGVQbGFuZS0+Zm9ybWF0c1ttb2RlaW5kZXhdOwogCi0JCQkJaWd0X2luZm8oIlRlc3RpbmcgY29u bmVjdG9yICVzIHVzaW5nIHBpcGUgJXMiIFwKLQkJCQkJICIgcGxhbmUgaW5kZXggJWQgdHlwZSAl cyBtb2RlICVzXG4iLAotCQkJCQkgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCi0JCQkJCSBrbXN0 ZXN0X3BpcGVfbmFtZShwaXBlKSwKLQkJCQkJIHBsYW5lLT5pbmRleCwKLQkJCQkJIHBsYW5ldHlw ZVtwbGFuZS0+dHlwZV0sCi0JCQkJCSAoY2hhciopJmRhdGEtPmZvcm1hdC5uYW1lKTsKLQogCQkJ CWludmFsaWRzICs9IHRlc3Rfb25lX21vZGUoZGF0YSwgb3V0cHV0LAogCQkJCQkJCSAgcGxhbmUs Ci0JCQkJCQkJICBtb2RlUGxhbmUtPmZvcm1hdHNbbW9kZWluZGV4XSk7CisJCQkJCQkJICBtb2Rl UGxhbmUtPmZvcm1hdHNbbW9kZWluZGV4XSwKKwkJCQkJCQkgIHBpcGUpOwogCQkJfQogCQkJZHJt TW9kZUZyZWVQbGFuZShtb2RlUGxhbmUpOwogCQl9CiAJCWlndF9waXBlX2NyY19zdG9wKGRhdGEt PnBpcGVfY3JjKTsKIAkJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwotCQlpZ3Rf ZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBkYXRhLT5jb21taXQpOworCisJCWlmIChs dXQgIT0gTlVMTCkgeworCQkJaWd0X3BpcGVfcmVwbGFjZV9wcm9wX2Jsb2IoJmRhdGEtPmRpc3Bs YXksIHBpcGUsCisJCQkJCQkgICBJR1RfQ1JUQ19HQU1NQV9MVVQsCisJCQkJCQkgICBsdXQsIHNp emVvZigqbHV0KSAqIGx1dF9zaXplKTsKKwkJCWZyZWUobHV0KTsKKwkJCWx1dCA9IE5VTEw7CisJ CX0KKwogCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9OT05FKTsKKwkJaWd0X2Rp c3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0KTsKIAl9CiAJaWd0X2Fz c2VydChpbnZhbGlkcyA9PSAwKTsKIH0KLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2lndC1kZXY=