From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Thu, 13 Dec 2018 12:06:34 +0000 Message-Id: <20181213120636.20292-3-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20181213120636.20292-1-tvrtko.ursulin@linux.intel.com> References: <20181213120636.20292-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/4] tests/gem_ctx_sseu: Dynamic (sub)slice programming tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgoK VmVyaWZ5IHRoYXQgdGhlIHBlci1jb250ZXh0IGR5bmFtaWMgU1NFVSB1QVBJIHdvcmtzIGFzIGV4 cGVjdGVkLgoKdjI6IEFkZCBzdWJzbGljZSB0ZXN0cyAoTGlvbmVsKQogICAgVXNlIE1JX1NFVF9Q UkVESUNBVEUgZm9yIGZ1cnRoZXIgdmVyaWZpY2F0aW9uIHdoZW4gYXZhaWxhYmxlIChMaW9uZWwp Cgp2MzogUmVuYW1lIHRvIGdlbV9jdHhfcnBjcyAoTGlvbmVsKQoKdjQ6IFVwZGF0ZSBrZXJuZWwg QVBJIChMaW9uZWwpCiAgICBBZGQgMCB2YWx1ZSB0ZXN0IChMaW9uZWwpCiAgICBFeGVyY2lzZSBp bnZhbGlkIHZhbHVlcyAoTGlvbmVsKQoKdjU6IEFkZCBwZXJmIHRlc3RzIChMaW9uZWwpCgp2Njog QWRkIG5ldyBzeXNmcyBlbnRyeSB0ZXN0cyAoTGlvbmVsKQoKdjc6IFRlc3QgcnN2ZCBmaWVsZHMK ICAgIFVwZGF0ZSBmb3Iga2VybmVsIHNlcmllcyBjaGFuZ2VzCgp2ODogRHJvcCB0ZXN0X25vX3Nz ZXVfc3VwcG9ydCgpIHRlc3QgKEtlbHZpbikKICAgIERyb3AgZHJtX2ludGVsXyooKSBhcGlzIChD aHJpcykKCnY5OiBieSBDaHJpczoKICAgIERyb3AgYWxsIGRvX2lvY3RsL2RvX2lvY3RsX2Vycigp CiAgICBVc2UgZ2VtX2NvbnRleHRfW2dzXWV0X3BhcmFtKCkKICAgIFVzZSBnZW1fcmVhZCgpIGlu c3RlYWQgb2YgbWFwcGluZyBtZW1vcnkKICAgIGJ5IExpb25lbDoKICAgIFRlc3QgZHluYW1pYyBz c2V1IG9uL29mZiBtb3JlCgpUdnJ0a28gVXJzdWxpbjoKCnYxMDoKICogVmFyaW91cyBzdHlsZSB0 d2Vha3MgYW5kIHJlZmFjdG9yaW5ncy4KICogTmV3IHRlc3QgY292ZXJhZ2UuCgp2MTE6CiAqIENo YW5nZSBwbGF0Zm9ybSBzdXBwb3J0IHRvIGp1c3QgR2VuMTEuCiAqIFNpbXBsaWZ5IGF2YWlsYWJp bGl0eSB0ZXN0LiAoQ2hyaXMgV2lsc29uKQogKiBNb3JlIGludmFsaWQgcG9pbnRlciB0ZXN0cy4g KENocmlzIFdpbHNvbikKCnYxMjoKICogRml4IE1BUF9GSVhFRCB1c2UgKGRvaCEpLgogKiBGaXgg Z2V0L3NldCBjb3B5JnBhc3RlIGVycm9ycy4KICogRHJvcCBzdXBwb3J0ZWQgcGxhdGZvcm0gdGVz dC4gKENocmlzIFdpbHNvbikKICogQWRkIG1tYXBfX2d0dCB0ZXN0LiAoQ2hyaXMgV2lsc29uKQoK djEzOgogKiBDb21taXQgbWVzc2FnZSB0d2Vha3MuCiAqIEFkZGVkIHJlc2V0L2hhbmcvc3VzcGVu ZCB0ZXN0cy4gKENocmlzIFdpbHNvbikKICogQXNzZXJ0IHNwaW5uZXIgaXMgYnVzeS4gKENocmlz IFdpbHNvbikKICogUmVtb3ZlIHNvbWUgbW9yZSBBQkkgYXNzdW1wdGlvbnMuIChDaHJpcyBXaWxz b24pCgp2MTQ6CiAqIFVzZSBkZWZhdWx0IHJlc3VtZSB0aW1lLiAoQ2hyaXMgV2lsc29uKQogKiBU cmlnZ2VyIGhhbmcgYWZ0ZXIgcnBjcyByZWFkIGJhdGNoIGhhcyBiZWVuIHN1Ym1pdHRlZC4gKENo cmlzIFdpbHNvbikKCnYxNToKICogQWRqdXN0IGZvciB1QVBJIHJlc3RyaWN0aW9ucy4KCnYxNjoK ICogQnVpbGQgc3lzdGVtIGNoYW5nZXMuCgp2MTc6CiAqIFJlbW92ZSBhbGwgc3VidGVzdHMgd2hp Y2ggcmVhZCB0aGUgUlBDUyByZWdpc3Rlci4gKEpvb25hcyBMYWh0aW5lbikKCnYxODoKICogVGlk eSBjdXJseSBicmFjZXMuIChKb29uYXMgTGFodGluZW4pCgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwg TGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4gIyB2MTQKUmV2aWV3ZWQtYnk6 IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tCiB0 ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICB8ICAgMSArCiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2Vz ICAgICB8ICAgMyArCiB0ZXN0cy9pOTE1L2dlbV9jdHhfcGFyYW0uYyB8ICAgNCArLQogdGVzdHMv aTkxNS9nZW1fY3R4X3NzZXUuYyAgfCA1MzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogdGVzdHMvbWVzb24uYnVpbGQgICAgICAgICAgfCAgIDggKwogNSBmaWxlcyBjaGFu Z2VkLCA1NDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHRlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5h bSBiL3Rlc3RzL01ha2VmaWxlLmFtCmluZGV4IDQ4ZDc3NTM1YjZiZC4uNDI0NjNiZGU3ZjMwIDEw MDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysgYi90ZXN0cy9NYWtlZmlsZS5hbQpAQCAt MTExLDYgKzExMSw3IEBAIGdlbV9jbG9zZV9yYWNlX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKFRI UkVBRF9DRkxBR1MpCiBnZW1fY2xvc2VfcmFjZV9MREFERCA9ICQoTERBREQpIC1scHRocmVhZAog Z2VtX2N0eF90aHJhc2hfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoVEhSRUFEX0NGTEFHUykKIGdl bV9jdHhfdGhyYXNoX0xEQUREID0gJChMREFERCkgLWxwdGhyZWFkCitnZW1fY3R4X3NzZXVfTERB REQgPSAkKExEQUREKSAkKHRvcF9idWlsZGRpcikvbGliL2xpYmlndF9wZXJmLmxhCiBnZW1fZXhl Y19jYXB0dXJlX0xEQUREID0gJChMREFERCkgLWx6CiBnZW1fZXhlY19wYXJhbGxlbF9DRkxBR1Mg PSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKQogZ2VtX2V4ZWNfcGFyYWxsZWxfTERBREQg PSAkKExEQUREKSAtbHB0aHJlYWQKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMg Yi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IGVlZGRlMWU4MTdjYi4uM2RmZWI1YjY3Mjc0 IDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKQEAgLTE2MSw2ICsxNjEsOSBAQCBnZW1fY3R4X2lzb2xhdGlvbl9TT1VSQ0VTID0g aTkxNS9nZW1fY3R4X2lzb2xhdGlvbi5jCiBURVNUU19wcm9ncyArPSBnZW1fY3R4X3BhcmFtCiBn ZW1fY3R4X3BhcmFtX1NPVVJDRVMgPSBpOTE1L2dlbV9jdHhfcGFyYW0uYwogCitURVNUU19wcm9n cyArPSBnZW1fY3R4X3NzZXUKK2dlbV9jdHhfc3NldV9TT1VSQ0VTID0gaTkxNS9nZW1fY3R4X3Nz ZXUuYworCiBURVNUU19wcm9ncyArPSBnZW1fY3R4X3N3aXRjaAogZ2VtX2N0eF9zd2l0Y2hfU09V UkNFUyA9IGk5MTUvZ2VtX2N0eF9zd2l0Y2guYwogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dl bV9jdHhfcGFyYW0uYyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9wYXJhbS5jCmluZGV4IDBiYmM1ZWZm YmY5Zi4uYWNjMWU2Mjk3NzUwIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9jdHhfcGFyYW0u YworKysgYi90ZXN0cy9pOTE1L2dlbV9jdHhfcGFyYW0uYwpAQCAtMjk0LDExICsyOTQsMTMgQEAg aWd0X21haW4KIAkJCXNldF9wcmlvcml0eShmZCk7CiAJfQogCisJLyogSTkxNV9DT05URVhUX1BB UkFNX1NTRVUgdGVzdHMgYXJlIGxvY2F0ZWQgaW4gZ2VtX2N0eF9zc2V1LmMgKi8KKwogCS8qIE5P VEU6IFRoaXMgdGVzdGNhc2UgaW50ZW50aW9uYWxseSB0ZXN0cyBmb3IgdGhlIG5leHQgZnJlZSBw YXJhbWV0ZXIKIAkgKiB0byBjYXRjaCBBQkkgZXh0ZW5zaW9ucy4gRG9uJ3QgImZpeCIgdGhpcyB0 ZXN0Y2FzZSB3aXRob3V0IGFkZGluZyBhbGwKIAkgKiB0aGUgdGVzdHMgZm9yIHRoZSBuZXcgcGFy YW0gZmlyc3QuCiAJICovCi0JYXJnLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZ ICsgMTsKKwlhcmcucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVSArIDE7CiAKIAlpZ3Rf c3VidGVzdCgiaW52YWxpZC1wYXJhbS1nZXQiKSB7CiAJCWFyZy5jdHhfaWQgPSBjdHg7CmRpZmYg LS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jdHhfc3NldS5jIGIvdGVzdHMvaTkxNS9nZW1fY3R4X3Nz ZXUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1ZDU5MTBlYzEy OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMKQEAgLTAsMCAr MSw1MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNy0yMDE4IEludGVsIENvcnBvcmF0aW9u CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGlu Y2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBT b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO RworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1 dGhvcnM6CisgKiAgICBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRl bC5jb20+CisgKgorICovCisKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgor I2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0 ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8 ZXJybm8uaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNs dWRlIDxzeXMvd2FpdC5oPgorCisjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgorI2luY2x1ZGUg ImlndF9wZXJmLmgiCisjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCisjaW5jbHVkZSAiaW9jdGxfd3Jh cHBlcnMuaCIKKworSUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgY29udGV4dCByZW5kZXIgcG93 ZXJnYXRpbmcgcHJvZ3JhbW1pbmcuIik7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19pbnRlbF9n ZW5fXywgX19pbnRlbF9kZXZpZF9fOworc3RhdGljIHVpbnQ2NF90IF9fc2xpY2VfbWFza19fLCBf X3N1YnNsaWNlX21hc2tfXzsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19zbGljZV9jb3VudF9fLCBf X3N1YnNsaWNlX2NvdW50X187CisKK3N0YXRpYyB1aW50NjRfdCBtYXNrX21pbnVzX29uZSh1aW50 NjRfdCBtYXNrKQoreworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IChzaXpl b2YobWFzaykgKiA4IC0gMSk7IGkrKykgeworCQlpZiAoKDFVTEwgPDwgaSkgJiBtYXNrKQorCQkJ cmV0dXJuIG1hc2sgJiB+KDFVTEwgPDwgaSk7CisJfQorCisJaWd0X2Fzc2VydCgwKTsKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHVpbnQ2NF90IG1hc2tfcGx1c19vbmUodWludDY0X3QgbWFzaykK K3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCAoc2l6ZW9mKG1hc2spICog OCAtIDEpOyBpKyspIHsKKwkJaWYgKCgoMVVMTCA8PCBpKSAmIG1hc2spID09IDApCisJCQlyZXR1 cm4gbWFzayB8ICgxVUxMIDw8IGkpOworCX0KKworCWlndF9hc3NlcnQoMCk7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB1aW50NjRfdCBtYXNrX21pbnVzKHVpbnQ2NF90IG1hc2ssIGludCBuKQor eworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJbWFzayA9 IG1hc2tfbWludXNfb25lKG1hc2spOworCisJcmV0dXJuIG1hc2s7Cit9CisKK3N0YXRpYyB1aW50 NjRfdCBtYXNrX3BsdXModWludDY0X3QgbWFzaywgaW50IG4pCit7CisJdW5zaWduZWQgaW50IGk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorCQltYXNrID0gbWFza19wbHVzX29uZShtYXNr KTsKKworCXJldHVybiBtYXNrOworfQorCitzdGF0aWMgYm9vbAora2VybmVsX2hhc19wZXJfY29u dGV4dF9zc2V1X3N1cHBvcnQoaW50IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbV9zc2V1IHNzZXUgPSB7IH07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3Bh cmFtIGFyZyA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1NTRVUsCisJCS5zaXpl ID0gc2l6ZW9mKHNzZXUpLAorCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJnNzZXUpLAorCX07 CisJaW50IHJldDsKKworCWlmIChfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZykpCisJ CXJldHVybiBmYWxzZTsKKworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc3NldSk7CisK KwlyZXQgPSBfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyk7CisKKwlpZ3RfYXNzZXJ0 KHJldCA9PSAwIHx8IHJldCA9PSAtRU5PREVWIHx8IHJldCA9PSAtRUlOVkFMKTsKKworCXJldHVy biByZXQgPT0gMDsKK30KKworc3RhdGljIGJvb2wgaGFzX2VuZ2luZShpbnQgZmQsIHVuc2lnbmVk IGludCBjbGFzcywgdW5zaWduZWQgaW50IGluc3RhbmNlKQoreworCWludCBwbXUgPSBwZXJmX2k5 MTVfb3BlbihJOTE1X1BNVV9FTkdJTkVfQlVTWShjbGFzcywgaW5zdGFuY2UpKTsKKworCWlmIChw bXUgPj0gMCkKKwkJY2xvc2UocG11KTsKKworCXJldHVybiBwbXUgPj0gMDsKK30KKworLyoKKyAq IFZlcmlmeSB0aGF0IGludmFsaWQgZW5naW5lcyBhcmUgcmVqZWN0ZWQgYW5kIHZhbGlkIG9uZXMg YXJlIGFjY2VwdGVkLgorICovCitzdGF0aWMgdm9pZCB0ZXN0X2VuZ2luZXMoaW50IGZkKQorewor CXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHNzZXUgPSB7IH07CisJc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGFyZyA9IHsKKwkJLnBhcmFtID0gSTkxNV9D T05URVhUX1BBUkFNX1NTRVUsCisJCS5jdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpLAor CQkuc2l6ZSA9IHNpemVvZihzc2V1KSwKKwkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzc2V1 KQorCX07CisJdW5zaWduZWQgaW50IGNsYXNzLCBpbnN0YW5jZTsKKwlpbnQgbGFzdF93aXRoX2Vu Z2luZXM7CisKKwkvKiBnZXRfcGFyYW0gKi8KKworCXNzZXUuaW5zdGFuY2UgPSAtMTsgLyogQXNz dW1lZCBpbnZhbGlkLiAqLworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0o ZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCXNzZXUuY2xhc3MgPSBJOTE1X0VOR0lORV9DTEFTU19J TlZBTElEOyAvKiBCb3RoIGludmFsaWQuICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0 X2dldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJc3NldS5pbnN0YW5jZSA9IDA7IC8q IENsYXNzIGludmFsaWQuICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJh bShmZCwgJmFyZyksIC1FSU5WQUwpOworCXNzZXUuY2xhc3MgPSBJOTE1X0VOR0lORV9DTEFTU19S RU5ERVI7CisKKwlsYXN0X3dpdGhfZW5naW5lcyA9IC0xOworCWZvciAoY2xhc3MgPSAwOyBjbGFz cyA8IH4wOyBjbGFzcysrKSB7CisJCWZvciAoaW5zdGFuY2UgPSAwOyBpbnN0YW5jZSA8IH4wOyBp bnN0YW5jZSsrKSB7CisJCQlpbnQgcmV0OworCisJCQlzc2V1LmNsYXNzID0gY2xhc3M7CisJCQlz c2V1Lmluc3RhbmNlID0gaW5zdGFuY2U7CisKKwkJCXJldCA9IF9fZ2VtX2NvbnRleHRfZ2V0X3Bh cmFtKGZkLCAmYXJnKTsKKworCQkJaWYgKGhhc19lbmdpbmUoZmQsIGNsYXNzLCBpbnN0YW5jZSkp IHsKKwkJCQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7CisJCQkJbGFzdF93aXRoX2VuZ2luZXMgPSBj bGFzczsKKwkJCX0gZWxzZSB7CisJCQkJaWd0X2Fzc2VydF9lcShyZXQsIC1FSU5WQUwpOworCQkJ CWlmIChpbnN0YW5jZSA+IDgpIC8qIFNraXAgb3ZlciBzb21lIGluc3RhbmNlIGhvbGVzLiAqLwor CQkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChjbGFzcyAtIGxhc3Rfd2l0aF9lbmdpbmVz ID4gOCkgLyogU2tpcCBvdmVyIHNvbWUgY2xhc3MgaG9sZXMuICovCisJCQlicmVhazsKKwl9CisK KwkvKgorCSAqIEdldCBzb21lIHByb3BlciB2YWx1ZXMgYmVmb3JlIHRyeWluZyB0byByZXByb2dy YW0gdGhlbSBvbnRvCisJICogYW4gaW52YWxpZCBlbmdpbmUuCisJICovCisJc3NldS5jbGFzcyA9 IDA7CisJc3NldS5pbnN0YW5jZSA9IDA7CisJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJn KTsKKworCS8qIHNldF9wYXJhbSAqLworCisJc3NldS5pbnN0YW5jZSA9IC0xOyAvKiBBc3N1bWVk IGludmFsaWQuICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwg JmFyZyksIC1FSU5WQUwpOworCisJc3NldS5jbGFzcyA9IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFM SUQ7IC8qIEJvdGggaW52YWxpZC4gKi8KKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0 X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwlzc2V1Lmluc3RhbmNlID0gMDsgLyogQ2xh c3MgaW52YWxpZC4gKi8KKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZk LCAmYXJnKSwgLUVJTlZBTCk7CisKKwlsYXN0X3dpdGhfZW5naW5lcyA9IC0xOworCWZvciAoY2xh c3MgPSAwOyBjbGFzcyA8IH4wOyBjbGFzcysrKSB7CisJCWZvciAoaW5zdGFuY2UgPSAwOyBpbnN0 YW5jZSA8IH4wOyBpbnN0YW5jZSsrKSB7CisJCQlpbnQgcmV0OworCisJCQlzc2V1LmNsYXNzID0g Y2xhc3M7CisJCQlzc2V1Lmluc3RhbmNlID0gaW5zdGFuY2U7CisKKwkJCXJldCA9IF9fZ2VtX2Nv bnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKTsKKworCQkJaWYgKGhhc19lbmdpbmUoZmQsIGNsYXNz LCBpbnN0YW5jZSkpIHsKKwkJCQlpZ3RfYXNzZXJ0KHJldCA9PSAwIHx8IHJldCA9PSAtRU5PREVW KTsKKwkJCQlsYXN0X3dpdGhfZW5naW5lcyA9IGNsYXNzOworCQkJfSBlbHNlIHsKKwkJCQlpZ3Rf YXNzZXJ0X2VxKHJldCwgLUVJTlZBTCk7CisJCQkJaWYgKGluc3RhbmNlID4gOCkgLyogU2tpcCBv dmVyIHNvbWUgaW5zdGFuY2UgaG9sZXMuICovCisJCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJ aWYgKGNsYXNzIC0gbGFzdF93aXRoX2VuZ2luZXMgPiA4KSAvKiBTa2lwIG92ZXIgc29tZSBjbGFz cyBob2xlcy4gKi8KKwkJCWJyZWFrOworCX0KKworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGFy Zy5jdHhfaWQpOworfQorCisvKgorICogVmVyaWZ5IHRoYXQgaW52YWxpZCBhcmd1bWVudHMgYXJl IHJlamVjdGVkLgorICovCitzdGF0aWMgdm9pZAordGVzdF9pbnZhbGlkX2FyZ3MoaW50IGZkKQor eworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9 IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRl KGZkKSwKKwl9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHNzZXUg PSB7IH07CisJdW5zaWduZWQgY2hhciAqcGFnZVsyXTsKKwl1bnNpZ25lZCBjaGFyICphZGRyOwor CXVuc2lnbmVkIGludCBzejsKKworCS8qIGdldCBwYXJhbSAqLworCisJLyogSW52YWxpZCBzaXpl LiAqLworCWFyZy5zaXplID0gMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3Bh cmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwkvKiBRdWVyeSBzaXplLiAqLworCWFyZy5zaXpl ID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwg MCk7CisJc3ogPSBhcmcuc2l6ZTsKKworCS8qIEJhZCBwb2ludGVycy4gKi8KKwlpZ3RfYXNzZXJ0 X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisJYXJnLnZh bHVlID0gLTE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFy ZyksIC1FRkFVTFQpOworCWFyZy52YWx1ZSA9IDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250 ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCisJLyogVW5tYXBwZWQuICovCisJ cGFnZVswXSA9IG1tYXAoMCwgNDA5NiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5P TiwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwltZW1zZXQo cGFnZVswXSwgMCwgc2l6ZW9mKHNzZXUpKTsKKwltdW5tYXAocGFnZVswXSwgNDA5Nik7CisJYXJn LnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKHBhZ2VbMF0pOworCWlndF9hc3NlcnRfZXEoX19nZW1f Y29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKworCS8qIFN0cmFkZGxlIGlu dG8gdW5tYXBwZWQgYXJlYS4gKi8KKwlwYWdlWzBdID0gbW1hcCgwLCA4MTkyLCBQUk9UX1dSSVRF LCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCAtMSwgMCk7CisJaWd0X2Fzc2VydChwYWdlWzBdICE9 IE1BUF9GQUlMRUQpOworCW11bm1hcChwYWdlWzBdLCA4MTkyKTsKKwlwYWdlWzBdID0gbW1hcChw YWdlWzBdLCA0MDk2LAorCQkgICAgICAgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5P TiB8IE1BUF9GSVhFRCwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVE KTsKKwltZW1zZXQocGFnZVswXSwgMCwgc2l6ZW9mKHNzZXUpKTsKKwlwYWdlWzFdID0gbW1hcCgo dm9pZCAqKSgodW5zaWduZWQgbG9uZylwYWdlWzBdICsgNDA5NiksIDQwOTYsCisJCSAgICAgICBQ Uk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OIHwgTUFQX0ZJWEVELCAtMSwgMCk7CisJ aWd0X2Fzc2VydChwYWdlWzFdICE9IE1BUF9GQUlMRUQpOworCW1lbXNldChwYWdlWzFdLCAwLCBz aXplb2Yoc3NldSkpOworCW11bm1hcChwYWdlWzFdLCA0MDk2KTsKKwlhcmcudmFsdWUgPSB0b191 c2VyX3BvaW50ZXIocGFnZVsxXSkgLQorCQkgICAgc2l6ZW9mKHN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbV9zc2V1KSArIDQ7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dl dF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCW11bm1hcChwYWdlWzBdLCA0MDk2KTsKKwor CS8qIFN0cmFkZGxlIGludG8gcmVhZC1vbmx5IGFyZWEuICovCisJcGFnZVswXSA9IG1tYXAoMCwg ODE5MiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9h c3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwltdW5tYXAocGFnZVswXSwgODE5Mik7CisJ cGFnZVswXSA9IG1tYXAocGFnZVswXSwgNDA5NiwKKwkJICAgICAgIFBST1RfV1JJVEUsIE1BUF9Q UklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2Vb MF0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMF0sIDAsIHNpemVvZihzc2V1KSk7CisJ cGFnZVsxXSA9IG1tYXAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpcGFnZVswXSArIDQwOTYpLCA0 MDk2LAorCQkgICAgICAgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiB8IE1BUF9G SVhFRCwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVsxXSAhPSBNQVBfRkFJTEVEKTsKKwltZW1z ZXQocGFnZVsxXSwgMCwgc2l6ZW9mKHNzZXUpKTsKKwlpZ3RfYXNzZXJ0KG1wcm90ZWN0KHBhZ2Vb MV0sIDQwOTYsIFBST1RfUkVBRCkgPT0gMCk7CisJYXJnLnZhbHVlID0gdG9fdXNlcl9wb2ludGVy KHBhZ2VbMV0gLSBzaXplb2Yoc3NldSkgKyA0KTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRl eHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisJbXVubWFwKHBhZ2VbMF0sIDQwOTYp OworCW11bm1hcChwYWdlWzFdLCA0MDk2KTsKKworCS8qIHNldCBwYXJhbSAqLworCisJLyogSW52 YWxpZCBzaXplcy4gKi8KKwlhcmcuc2l6ZSA9IDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250 ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJYXJnLnNpemUgPSAwOworCWln dF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsK Kwlhcmcuc2l6ZSA9IHN6OworCisJLyogQmFkIHBvaW50ZXJzLiAqLworCWFyZy52YWx1ZSA9IDA7 CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FRkFV TFQpOworCWFyZy52YWx1ZSA9IC0xOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRf cGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwlhcmcudmFsdWUgPSAxOworCWlndF9hc3NlcnRf ZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKworCS8qIEdl dCB2YWxpZCBTU0VVLiAqLworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc3NldSk7CisJ aWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIDApOworCisJ LyogVW5tYXBwZWQuICovCisJcGFnZVswXSA9IG1tYXAoMCwgNDA5NiwgUFJPVF9XUklURSwgTUFQ X1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBf RkFJTEVEKTsKKwltZW1jcHkocGFnZVswXSwgJnNzZXUsIHNpemVvZihzc2V1KSk7CisJbXVubWFw KHBhZ2VbMF0sIDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihwYWdlWzBdKTsK KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVM VCk7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHVubWFwcGVkIGFyZWEuICovCisJcGFnZVswXSA9IG1t YXAoMCwgODE5MiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOwor CWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwltdW5tYXAocGFnZVswXSwgODE5 Mik7CisJcGFnZVswXSA9IG1tYXAocGFnZVswXSwgNDA5NiwKKwkJICAgICAgIFBST1RfV1JJVEUs IE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0 KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJcGFnZVsxXSA9IG1tYXAoKHZvaWQgKikoKHVuc2ln bmVkIGxvbmcpcGFnZVswXSArIDQwOTYpLCA0MDk2LAorCQkgICAgICAgUFJPVF9XUklURSwgTUFQ X1BSSVZBVEUgfCBNQVBfQU5PTiB8IE1BUF9GSVhFRCwgLTEsIDApOworCWlndF9hc3NlcnQocGFn ZVsxXSAhPSBNQVBfRkFJTEVEKTsKKwlhZGRyID0gcGFnZVsxXSAtIHNpemVvZihzc2V1KSArIDQ7 CisJbWVtY3B5KGFkZHIsICZzc2V1LCBzaXplb2Yoc3NldSkpOworCW11bm1hcChwYWdlWzFdLCA0 MDk2KTsKKwlhcmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoYWRkcik7CisJaWd0X2Fzc2VydF9l cShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCW11bm1hcChw YWdlWzBdLCA0MDk2KTsKKworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGFyZy5jdHhfaWQpOwor fQorCisvKgorICogVmVyaWZ5IHRoYXQgZ2d0dCBtYXBwZWQgYXJlYSBjYW4gYmUgdXNlZCBhcyB0 aGUgc3NldSBwb2ludGVyLgorICovCitzdGF0aWMgdm9pZAordGVzdF9nZ3R0X2FyZ3MoaW50IGZk KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1ICpzc2V1OworCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IEk5MTVf Q09OVEVYVF9QQVJBTV9TU0VVLAorCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKSwK KwkJLnNpemUgPSBzaXplb2YoKnNzZXUpLAorCX07CisJdWludDMyX3QgYm87CisKKwlibyA9IGdl bV9jcmVhdGUoZmQsIDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihnZW1fbW1h cF9fZ3R0KGZkLCBibywgNDA5NiwKKwkJCQkJCSAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpOwor CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIDApOwor CWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAwKTsKKwor CW11bm1hcCgodm9pZCAqKWFyZy52YWx1ZSwgNDA5Nik7CisJZ2VtX2Nsb3NlKGZkLCBibyk7CisJ Z2VtX2NvbnRleHRfZGVzdHJveShmZCwgYXJnLmN0eF9pZCk7Cit9CisKKy8qCisgKiBWZXJpZnkg dGhhdCBpbnZhbGlkIFNTRVUgdmFsdWVzIGFyZSByZWplY3RlZC4KKyAqLworc3RhdGljIHZvaWQK K3Rlc3RfaW52YWxpZF9zc2V1KGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW1fc3NldSBkZXZpY2Vfc3NldSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQku Y3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKSwKKwkJLnNpemUgPSBzaXplb2Yoc3NldSks CisJfTsKKwl1bnNpZ25lZCBpbnQgaTsKKworCS8qIEZldGNoIHRoZSBkZXZpY2UgZGVmYXVsdHMu ICovCisJYXJnLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZkZXZpY2Vfc3NldSk7CisJZ2VtX2Nv bnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKTsKKworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRl cigmc3NldSk7CisKKwkvKiBUcnkgYWxsIHNsaWNlIG1hc2tzIGtub3duIHRvIGJlIGludmFsaWQu ICovCisJc3NldSA9IGRldmljZV9zc2V1OworCWZvciAoaSA9IDE7IGkgPD0gKDggLSBfX3NsaWNl X2NvdW50X18pOyBpKyspIHsKKwkJc3NldS5zbGljZV9tYXNrID0gbWFza19wbHVzKF9fc2xpY2Vf bWFza19fLCBpKTsKKwkJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwg JmFyZyksIC1FSU5WQUwpOworCX0KKworCS8qIDAgc2xpY2VzLiAqLworCXNzZXUuc2xpY2VfbWFz ayA9IDA7CisJaWd0X2Fzc2VydF9lcSgtRUlOVkFMLCBfX2dlbV9jb250ZXh0X3NldF9wYXJhbShm ZCwgJmFyZykpOworCisJLyogVHJ5IGFsbCBzdWJzbGljZSBtYXNrcyBrbm93biB0byBiZSBpbnZh bGlkLiAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlmb3IgKGkgPSAxOyBpIDw9ICg4IC0gX19z dWJzbGljZV9jb3VudF9fKTsgaSsrKSB7CisJCXNzZXUuc3Vic2xpY2VfbWFzayA9IG1hc2tfcGx1 cyhfX3N1YnNsaWNlX21hc2tfXywgaSk7CisJCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9z ZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwl9CisKKwkvKiAwIHN1YnNsaWNlcy4gKi8K Kwlzc2V1LnN1YnNsaWNlX21hc2sgPSAwOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9z ZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCS8qIFRyeSBudW1iZXIgb2YgRVVzIHN1 cGVyaW9yIHRvIHRoZSBtYXggYXZhaWxhYmxlLiAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlz c2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gZGV2aWNlX3NzZXUubWF4X2V1c19wZXJfc3Vic2xp Y2UgKyAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcp LCAtRUlOVkFMKTsKKworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlzc2V1Lm1heF9ldXNfcGVyX3N1 YnNsaWNlID0gZGV2aWNlX3NzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgKyAxOworCWlndF9hc3Nl cnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCS8q IFRyeSB0byBwcm9ncmFtIDAgbWF4IEVVcy4gKi8KKwlzc2V1ID0gZGV2aWNlX3NzZXU7CisJc3Nl dS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0 X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJLyogTWluID4gbWF4ICovCisJc3Nl dSA9IGRldmljZV9zc2V1OworCXNzZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBzc2V1Lm1heF9l dXNfcGVyX3N1YnNsaWNlOworCXNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPSAxOworCWlndF9h c3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwor CWlmIChfX2ludGVsX2dlbl9fICE9IDExKQorCQlnb3RvIG91dDsKKworCS8qIFN1YnNldCBvZiBz dWJzbGljZXMgYnV0IHNsaWNlIG1hc2sgZ3JlYXRlciB0aGFuIG9uZS4gKi8KKwlpZiAoX19zbGlj ZV9jb3VudF9fID4gMSkgeworCQlzc2V1ID0gZGV2aWNlX3NzZXU7CisJCXNzZXUuc3Vic2xpY2Vf bWFzayA9IG1hc2tfbWludXNfb25lKHNzZXUuc3Vic2xpY2VfbWFzayk7CisJCWlndF9hc3NlcnRf ZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwl9CisKKwkv KiBPZGQgc3Vic2xpY2VzIGFib3ZlIGZvdXIuICovCisJc3NldSA9IGRldmljZV9zc2V1OworCXNz ZXUuc2xpY2VfbWFzayA9IDB4MTsKKwlzc2V1LnN1YnNsaWNlX21hc2sgPSBtYXNrX21pbnVzX29u ZShzc2V1LnN1YnNsaWNlX21hc2spOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRf cGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCS8qIE1vcmUgdGhhbiBoYWxmIHN1YnNsaWNl cyB3aXRoIG9uZSBzbGljZS4gKi8KKwlzc2V1ID0gZGV2aWNlX3NzZXU7CisJc3NldS5zbGljZV9t YXNrID0gMHgxOworCXNzZXUuc3Vic2xpY2VfbWFzayA9IG1hc2tfbWludXMoc3NldS5zdWJzbGlj ZV9tYXNrLAorCQkJCQlfX3N1YnNsaWNlX2NvdW50X18gLyAyIC0gMSk7CisJaWd0X2Fzc2VydF9l cShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJLyogVk1F ICovCisKKwkvKiBTbGljZSBjb3VudCBiZXR3ZWVuIG9uZSBhbmQgbWF4LiAqLworCWlmIChfX3Ns aWNlX2NvdW50X18gPiAyKSB7CisJCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwkJc3NldS5zbGljZV9t YXNrID0gbWFza19taW51c19vbmUoc3NldS5zbGljZV9tYXNrKTsKKwkJaWd0X2Fzc2VydF9lcShf X2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCX0KKworCS8qIExl c3MgdGhhbiBoYWxmIHN1YnNsaWNlcyB3aXRoIG9uZSBzbGljZS4gKi8KKwlzc2V1ID0gZGV2aWNl X3NzZXU7CisJc3NldS5zbGljZV9tYXNrID0gMHgxOworCXNzZXUuc3Vic2xpY2VfbWFzayA9IG1h c2tfbWludXMoc3NldS5zdWJzbGljZV9tYXNrLAorCQkJCQlfX3N1YnNsaWNlX2NvdW50X18gLyAy ICsgMSk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyks IC1FSU5WQUwpOworCitvdXQ6CisJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgYXJnLmN0eF9pZCk7 Cit9CisKK2lndF9tYWluCit7CisJaW50IGZkOworCisJaWd0X2ZpeHR1cmUgeworCQlmZCA9IGRy bV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOworCisJ CV9faW50ZWxfZGV2aWRfXyA9IGludGVsX2dldF9kcm1fZGV2aWQoZmQpOworCQlfX2ludGVsX2dl bl9fID0gaW50ZWxfZ2VuKF9faW50ZWxfZGV2aWRfXyk7CisKKwkJaWd0X3JlcXVpcmUoa2VybmVs X2hhc19wZXJfY29udGV4dF9zc2V1X3N1cHBvcnQoZmQpKTsKKwl9CisKKwlpZ3Rfc3VidGVzdF9n cm91cCB7CisJCWlndF9maXh0dXJlIHsKKwkJCWRybV9pOTE1X2dldHBhcmFtX3QgZ3A7CisKKwkJ CWdwLnBhcmFtID0gSTkxNV9QQVJBTV9TTElDRV9NQVNLOworCQkJZ3AudmFsdWUgPSAoaW50ICop ICZfX3NsaWNlX21hc2tfXzsKKwkJCWRvX2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJB TSwgJmdwKTsKKwkJCV9fc2xpY2VfY291bnRfXyA9IF9fYnVpbHRpbl9wb3Bjb3VudChfX3NsaWNl X21hc2tfXyk7CisKKwkJCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNLOworCQkJ Z3AudmFsdWUgPSAoaW50ICopICZfX3N1YnNsaWNlX21hc2tfXzsKKwkJCWRvX2lvY3RsKGZkLCBE Uk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKKwkJCV9fc3Vic2xpY2VfY291bnRfXyA9CisJ CQkJX19idWlsdGluX3BvcGNvdW50KF9fc3Vic2xpY2VfbWFza19fKTsKKwkJfQorCisJCWlndF9z dWJ0ZXN0KCJpbnZhbGlkLWFyZ3MiKQorCQkJdGVzdF9pbnZhbGlkX2FyZ3MoZmQpOworCisJCWln dF9zdWJ0ZXN0KCJpbnZhbGlkLXNzZXUiKQorCQkJdGVzdF9pbnZhbGlkX3NzZXUoZmQpOworCisJ CWlndF9zdWJ0ZXN0KCJnZ3R0LWFyZ3MiKQorCQkJdGVzdF9nZ3R0X2FyZ3MoZmQpOworCisJCWln dF9zdWJ0ZXN0KCJlbmdpbmVzIikKKwkJCXRlc3RfZW5naW5lcyhmZCk7CisJfQorCisJaWd0X2Zp eHR1cmUgeworCQljbG9zZShmZCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVp bGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCBiOGE2ZTYxYjM0MDQuLmY0MWY3MjRhZjhhZiAx MDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAg LTI4OCw2ICsyODgsMTQgQEAgZm9yZWFjaCBwcm9nIDogZ2VtX3Byb2dzICsgZ2VuM19wcm9ncwog CXRlc3RfbGlzdCArPSBwcm9nCiBlbmRmb3JlYWNoCiAKK3Rlc3RfZXhlY3V0YWJsZXMgKz0gZXhl Y3V0YWJsZSgnZ2VtX2N0eF9zc2V1JywKKwkgICBqb2luX3BhdGhzKCdpOTE1JywgJ2dlbV9jdHhf c3NldS5jJyksCisJICAgZGVwZW5kZW5jaWVzIDogdGVzdF9kZXBzICsgWyBsaWJfaWd0X3BlcmYg XSwKKwkgICBpbnN0YWxsX2RpciA6IGxpYmV4ZWNkaXIsCisJICAgaW5zdGFsbF9ycGF0aCA6IGxp YmV4ZWNkaXJfcnBhdGhkaXIsCisJICAgaW5zdGFsbCA6IHRydWUpCit0ZXN0X3Byb2dzICs9ICdn ZW1fY3R4X3NzZXUnCisKIHRlc3RfZXhlY3V0YWJsZXMgKz0gZXhlY3V0YWJsZSgnZ2VtX2Vpbycs CiAJICAgam9pbl9wYXRocygnaTkxNScsICdnZW1fZWlvLmMnKSwKIAkgICBkZXBlbmRlbmNpZXMg OiB0ZXN0X2RlcHMgKyBbIHJlYWx0aW1lIF0sCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaWd0LWRldgo=