From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t 2/4] tests/gem_ctx_sseu: Dynamic (sub)slice programming tests Date: Mon, 14 Jan 2019 10:29:53 +0000 Message-ID: <20190114102955.10721-3-tvrtko.ursulin@linux.intel.com> References: <20190114102955.10721-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190114102955.10721-1-tvrtko.ursulin@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: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org 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 eSBjdXJseSBicmFjZXMuIChKb29uYXMgTGFodGluZW4pCgp2MTk6CiAqIENoZWNrIGZsYWdzL3Jz dmQgTUJaLgoKdjIwOgogKiBSZWJhc2UgZm9yIGVuZ2luZV9jbGFzcy9lbmdpbmVfaW5zdGFuY2Ug dWFwaSBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcu bGFuZHdlcmxpbkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0 a28udXJzdWxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4gIyB2MTQKUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9v bmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tCiB0ZXN0cy9NYWtlZmlsZS5hbSAgICAg ICAgICB8ICAgMSArCiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgICB8ICAgMyArCiB0ZXN0cy9p OTE1L2dlbV9jdHhfcGFyYW0uYyB8ICAgNCArLQogdGVzdHMvaTkxNS9nZW1fY3R4X3NzZXUuYyAg fCA1NDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdHMvbWVzb24u YnVpbGQgICAgICAgICAgfCAgIDggKwogNSBmaWxlcyBjaGFuZ2VkLCA1NTYgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2k5MTUvZ2VtX2N0eF9z c2V1LmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFt CmluZGV4IDQ4ZDc3NTM1YjZiZC4uNDI0NjNiZGU3ZjMwIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtl ZmlsZS5hbQorKysgYi90ZXN0cy9NYWtlZmlsZS5hbQpAQCAtMTExLDYgKzExMSw3IEBAIGdlbV9j bG9zZV9yYWNlX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKFRIUkVBRF9DRkxBR1MpCiBnZW1fY2xv c2VfcmFjZV9MREFERCA9ICQoTERBREQpIC1scHRocmVhZAogZ2VtX2N0eF90aHJhc2hfQ0ZMQUdT ID0gJChBTV9DRkxBR1MpICQoVEhSRUFEX0NGTEFHUykKIGdlbV9jdHhfdGhyYXNoX0xEQUREID0g JChMREFERCkgLWxwdGhyZWFkCitnZW1fY3R4X3NzZXVfTERBREQgPSAkKExEQUREKSAkKHRvcF9i dWlsZGRpcikvbGliL2xpYmlndF9wZXJmLmxhCiBnZW1fZXhlY19jYXB0dXJlX0xEQUREID0gJChM REFERCkgLWx6CiBnZW1fZXhlY19wYXJhbGxlbF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJF QURfQ0ZMQUdTKQogZ2VtX2V4ZWNfcGFyYWxsZWxfTERBREQgPSAkKExEQUREKSAtbHB0aHJlYWQK ZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzCmluZGV4IGVlZGRlMWU4MTdjYi4uM2RmZWI1YjY3Mjc0IDEwMDY0NAotLS0gYS90ZXN0cy9N YWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTE2MSw2ICsx NjEsOSBAQCBnZW1fY3R4X2lzb2xhdGlvbl9TT1VSQ0VTID0gaTkxNS9nZW1fY3R4X2lzb2xhdGlv bi5jCiBURVNUU19wcm9ncyArPSBnZW1fY3R4X3BhcmFtCiBnZW1fY3R4X3BhcmFtX1NPVVJDRVMg PSBpOTE1L2dlbV9jdHhfcGFyYW0uYwogCitURVNUU19wcm9ncyArPSBnZW1fY3R4X3NzZXUKK2dl bV9jdHhfc3NldV9TT1VSQ0VTID0gaTkxNS9nZW1fY3R4X3NzZXUuYworCiBURVNUU19wcm9ncyAr PSBnZW1fY3R4X3N3aXRjaAogZ2VtX2N0eF9zd2l0Y2hfU09VUkNFUyA9IGk5MTUvZ2VtX2N0eF9z d2l0Y2guYwogCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jdHhfcGFyYW0uYyBiL3Rlc3Rz L2k5MTUvZ2VtX2N0eF9wYXJhbS5jCmluZGV4IDBiYmM1ZWZmYmY5Zi4uYWNjMWU2Mjk3NzUwIDEw MDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9jdHhfcGFyYW0uYworKysgYi90ZXN0cy9pOTE1L2dl bV9jdHhfcGFyYW0uYwpAQCAtMjk0LDExICsyOTQsMTMgQEAgaWd0X21haW4KIAkJCXNldF9wcmlv cml0eShmZCk7CiAJfQogCisJLyogSTkxNV9DT05URVhUX1BBUkFNX1NTRVUgdGVzdHMgYXJlIGxv Y2F0ZWQgaW4gZ2VtX2N0eF9zc2V1LmMgKi8KKwogCS8qIE5PVEU6IFRoaXMgdGVzdGNhc2UgaW50 ZW50aW9uYWxseSB0ZXN0cyBmb3IgdGhlIG5leHQgZnJlZSBwYXJhbWV0ZXIKIAkgKiB0byBjYXRj aCBBQkkgZXh0ZW5zaW9ucy4gRG9uJ3QgImZpeCIgdGhpcyB0ZXN0Y2FzZSB3aXRob3V0IGFkZGlu ZyBhbGwKIAkgKiB0aGUgdGVzdHMgZm9yIHRoZSBuZXcgcGFyYW0gZmlyc3QuCiAJICovCi0JYXJn LnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZICsgMTsKKwlhcmcucGFyYW0gPSBJ OTE1X0NPTlRFWFRfUEFSQU1fU1NFVSArIDE7CiAKIAlpZ3Rfc3VidGVzdCgiaW52YWxpZC1wYXJh bS1nZXQiKSB7CiAJCWFyZy5jdHhfaWQgPSBjdHg7CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dl bV9jdHhfc3NldS5jIGIvdGVzdHMvaTkxNS9nZW1fY3R4X3NzZXUuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE2NjA5YmVlNjFjOAotLS0gL2Rldi9udWxsCisrKyBi L3Rlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMKQEAgLTAsMCArMSw1NDEgQEAKKy8qCisgKiBDb3B5 cmlnaHQgwqkgMjAxNy0yMDE4IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICBMaW9uZWwg TGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+CisgKgorICovCisKKyNp bmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor I2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRs Lmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx0 aW1lLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorCisj aW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgorI2luY2x1ZGUgImlndF9wZXJmLmgiCisjaW5jbHVk ZSAiaWd0X3N5c2ZzLmgiCisjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMuaCIKKworSUdUX1RFU1Rf REVTQ1JJUFRJT04oIlRlc3QgY29udGV4dCByZW5kZXIgcG93ZXJnYXRpbmcgcHJvZ3JhbW1pbmcu Iik7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19pbnRlbF9nZW5fXywgX19pbnRlbF9kZXZpZF9f Oworc3RhdGljIHVpbnQ2NF90IF9fc2xpY2VfbWFza19fLCBfX3N1YnNsaWNlX21hc2tfXzsKK3N0 YXRpYyB1bnNpZ25lZCBpbnQgX19zbGljZV9jb3VudF9fLCBfX3N1YnNsaWNlX2NvdW50X187CisK K3N0YXRpYyB1aW50NjRfdCBtYXNrX21pbnVzX29uZSh1aW50NjRfdCBtYXNrKQoreworCXVuc2ln bmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IChzaXplb2YobWFzaykgKiA4IC0gMSk7IGkr KykgeworCQlpZiAoKDFVTEwgPDwgaSkgJiBtYXNrKQorCQkJcmV0dXJuIG1hc2sgJiB+KDFVTEwg PDwgaSk7CisJfQorCisJaWd0X2Fzc2VydCgwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVp bnQ2NF90IG1hc2tfcGx1c19vbmUodWludDY0X3QgbWFzaykKK3sKKwl1bnNpZ25lZCBpbnQgaTsK KworCWZvciAoaSA9IDA7IGkgPCAoc2l6ZW9mKG1hc2spICogOCAtIDEpOyBpKyspIHsKKwkJaWYg KCgoMVVMTCA8PCBpKSAmIG1hc2spID09IDApCisJCQlyZXR1cm4gbWFzayB8ICgxVUxMIDw8IGkp OworCX0KKworCWlndF9hc3NlcnQoMCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50NjRf dCBtYXNrX21pbnVzKHVpbnQ2NF90IG1hc2ssIGludCBuKQoreworCXVuc2lnbmVkIGludCBpOwor CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJbWFzayA9IG1hc2tfbWludXNfb25lKG1hc2sp OworCisJcmV0dXJuIG1hc2s7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBtYXNrX3BsdXModWludDY0 X3QgbWFzaywgaW50IG4pCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwg bjsgaSsrKQorCQltYXNrID0gbWFza19wbHVzX29uZShtYXNrKTsKKworCXJldHVybiBtYXNrOwor fQorCitzdGF0aWMgYm9vbAora2VybmVsX2hhc19wZXJfY29udGV4dF9zc2V1X3N1cHBvcnQoaW50 IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHNzZXUgPSB7 IH07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGFyZyA9IHsKKwkJLnBhcmFt ID0gSTkxNV9DT05URVhUX1BBUkFNX1NTRVUsCisJCS5zaXplID0gc2l6ZW9mKHNzZXUpLAorCQku dmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJnNzZXUpLAorCX07CisJaW50IHJldDsKKworCWlmIChf X2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZykpCisJCXJldHVybiBmYWxzZTsKKworCWFy Zy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc3NldSk7CisKKwlyZXQgPSBfX2dlbV9jb250ZXh0 X3NldF9wYXJhbShmZCwgJmFyZyk7CisKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwIHx8IHJldCA9PSAt RU5PREVWIHx8IHJldCA9PSAtRUlOVkFMKTsKKworCXJldHVybiByZXQgPT0gMDsKK30KKworc3Rh dGljIGJvb2wgaGFzX2VuZ2luZShpbnQgZmQsIHVuc2lnbmVkIGludCBjbGFzcywgdW5zaWduZWQg aW50IGluc3RhbmNlKQoreworCWludCBwbXUgPSBwZXJmX2k5MTVfb3BlbihJOTE1X1BNVV9FTkdJ TkVfQlVTWShjbGFzcywgaW5zdGFuY2UpKTsKKworCWlmIChwbXUgPj0gMCkKKwkJY2xvc2UocG11 KTsKKworCXJldHVybiBwbXUgPj0gMDsKK30KKworLyoKKyAqIFZlcmlmeSB0aGF0IGludmFsaWQg ZW5naW5lcyBhcmUgcmVqZWN0ZWQgYW5kIHZhbGlkIG9uZXMgYXJlIGFjY2VwdGVkLgorICovCitz dGF0aWMgdm9pZCB0ZXN0X2VuZ2luZXMoaW50IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbV9zc2V1IHNzZXUgPSB7IH07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X3BhcmFtIGFyZyA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1NTRVUsCisJ CS5jdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpLAorCQkuc2l6ZSA9IHNpemVvZihzc2V1 KSwKKwkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzc2V1KQorCX07CisJdW5zaWduZWQgaW50 IGNsYXNzLCBpbnN0YW5jZTsKKwlpbnQgbGFzdF93aXRoX2VuZ2luZXM7CisKKwkvKiBnZXRfcGFy YW0gKi8KKworCXNzZXUuZW5naW5lX2luc3RhbmNlID0gLTE7IC8qIEFzc3VtZWQgaW52YWxpZC4g Ki8KKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJ TlZBTCk7CisKKwlzc2V1LmVuZ2luZV9jbGFzcyA9IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQ7 IC8qIEJvdGggaW52YWxpZC4gKi8KKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3Bh cmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwlzc2V1LmVuZ2luZV9pbnN0YW5jZSA9IDA7IC8q IENsYXNzIGludmFsaWQuICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJh bShmZCwgJmFyZyksIC1FSU5WQUwpOworCXNzZXUuZW5naW5lX2NsYXNzID0gSTkxNV9FTkdJTkVf Q0xBU1NfUkVOREVSOworCisJbGFzdF93aXRoX2VuZ2luZXMgPSAtMTsKKwlmb3IgKGNsYXNzID0g MDsgY2xhc3MgPCB+MDsgY2xhc3MrKykgeworCQlmb3IgKGluc3RhbmNlID0gMDsgaW5zdGFuY2Ug PCB+MDsgaW5zdGFuY2UrKykgeworCQkJaW50IHJldDsKKworCQkJc3NldS5lbmdpbmVfY2xhc3Mg PSBjbGFzczsKKwkJCXNzZXUuZW5naW5lX2luc3RhbmNlID0gaW5zdGFuY2U7CisKKwkJCXJldCA9 IF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKTsKKworCQkJaWYgKGhhc19lbmdpbmUo ZmQsIGNsYXNzLCBpbnN0YW5jZSkpIHsKKwkJCQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7CisJCQkJ bGFzdF93aXRoX2VuZ2luZXMgPSBjbGFzczsKKwkJCX0gZWxzZSB7CisJCQkJaWd0X2Fzc2VydF9l cShyZXQsIC1FSU5WQUwpOworCQkJCWlmIChpbnN0YW5jZSA+IDgpIC8qIFNraXAgb3ZlciBzb21l IGluc3RhbmNlIGhvbGVzLiAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChjbGFz cyAtIGxhc3Rfd2l0aF9lbmdpbmVzID4gOCkgLyogU2tpcCBvdmVyIHNvbWUgY2xhc3MgaG9sZXMu ICovCisJCQlicmVhazsKKwl9CisKKwkvKgorCSAqIEdldCBzb21lIHByb3BlciB2YWx1ZXMgYmVm b3JlIHRyeWluZyB0byByZXByb2dyYW0gdGhlbSBvbnRvCisJICogYW4gaW52YWxpZCBlbmdpbmUu CisJICovCisJc3NldS5lbmdpbmVfY2xhc3MgPSAwOworCXNzZXUuZW5naW5lX2luc3RhbmNlID0g MDsKKwlnZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpOworCisJLyogc2V0X3BhcmFtICov CisKKwlzc2V1LmVuZ2luZV9pbnN0YW5jZSA9IC0xOyAvKiBBc3N1bWVkIGludmFsaWQuICovCisJ aWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwp OworCisJc3NldS5lbmdpbmVfY2xhc3MgPSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEOyAvKiBC b3RoIGludmFsaWQuICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShm ZCwgJmFyZyksIC1FSU5WQUwpOworCisJc3NldS5lbmdpbmVfaW5zdGFuY2UgPSAwOyAvKiBDbGFz cyBpbnZhbGlkLiAqLworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQs ICZhcmcpLCAtRUlOVkFMKTsKKworCWxhc3Rfd2l0aF9lbmdpbmVzID0gLTE7CisJZm9yIChjbGFz cyA9IDA7IGNsYXNzIDwgfjA7IGNsYXNzKyspIHsKKwkJZm9yIChpbnN0YW5jZSA9IDA7IGluc3Rh bmNlIDwgfjA7IGluc3RhbmNlKyspIHsKKwkJCWludCByZXQ7CisKKwkJCXNzZXUuZW5naW5lX2Ns YXNzID0gY2xhc3M7CisJCQlzc2V1LmVuZ2luZV9pbnN0YW5jZSA9IGluc3RhbmNlOworCisJCQly ZXQgPSBfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyk7CisKKwkJCWlmIChoYXNfZW5n aW5lKGZkLCBjbGFzcywgaW5zdGFuY2UpKSB7CisJCQkJaWd0X2Fzc2VydChyZXQgPT0gMCB8fCBy ZXQgPT0gLUVOT0RFVik7CisJCQkJbGFzdF93aXRoX2VuZ2luZXMgPSBjbGFzczsKKwkJCX0gZWxz ZSB7CisJCQkJaWd0X2Fzc2VydF9lcShyZXQsIC1FSU5WQUwpOworCQkJCWlmIChpbnN0YW5jZSA+ IDgpIC8qIFNraXAgb3ZlciBzb21lIGluc3RhbmNlIGhvbGVzLiAqLworCQkJCQlicmVhazsKKwkJ CX0KKwkJfQorCisJCWlmIChjbGFzcyAtIGxhc3Rfd2l0aF9lbmdpbmVzID4gOCkgLyogU2tpcCBv dmVyIHNvbWUgY2xhc3MgaG9sZXMuICovCisJCQlicmVhazsKKwl9CisKKwlnZW1fY29udGV4dF9k ZXN0cm95KGZkLCBhcmcuY3R4X2lkKTsKK30KKworLyoKKyAqIFZlcmlmeSB0aGF0IGludmFsaWQg YXJndW1lbnRzIGFyZSByZWplY3RlZC4KKyAqLworc3RhdGljIHZvaWQKK3Rlc3RfaW52YWxpZF9h cmdzKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gYXJnID0g eworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVSwKKwkJLmN0eF9pZCA9IGdlbV9j b250ZXh0X2NyZWF0ZShmZCksCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFy YW1fc3NldSBzc2V1ID0geyB9OworCXVuc2lnbmVkIGNoYXIgKnBhZ2VbMl07CisJdW5zaWduZWQg Y2hhciAqYWRkcjsKKwl1bnNpZ25lZCBpbnQgc3o7CisKKwkvKiBnZXQgcGFyYW0gKi8KKworCS8q IEludmFsaWQgc2l6ZS4gKi8KKwlhcmcuc2l6ZSA9IDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9j b250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJLyogUXVlcnkgc2l6ZS4g Ki8KKwlhcmcuc2l6ZSA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJh bShmZCwgJmFyZyksIDApOworCXN6ID0gYXJnLnNpemU7CisKKwkvKiBCYWQgcG9pbnRlcnMuICov CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1FRkFV TFQpOworCWFyZy52YWx1ZSA9IC0xOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRf cGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwlhcmcudmFsdWUgPSAxOworCWlndF9hc3NlcnRf ZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKworCS8qIFVu bWFwcGVkLiAqLworCXBhZ2VbMF0gPSBtbWFwKDAsIDQwOTYsIFBST1RfV1JJVEUsIE1BUF9QUklW QVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxF RCk7CisJbWVtc2V0KHBhZ2VbMF0sIDAsIHNpemVvZihzc2V1KSk7CisJbXVubWFwKHBhZ2VbMF0s IDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihwYWdlWzBdKTsKKwlpZ3RfYXNz ZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisKKwkv KiBTdHJhZGRsZSBpbnRvIHVubWFwcGVkIGFyZWEuICovCisJcGFnZVswXSA9IG1tYXAoMCwgODE5 MiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3Nl cnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwltdW5tYXAocGFnZVswXSwgODE5Mik7CisJcGFn ZVswXSA9IG1tYXAocGFnZVswXSwgNDA5NiwKKwkJICAgICAgIFBST1RfV1JJVEUsIE1BUF9QUklW QVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0g IT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMF0sIDAsIHNpemVvZihzc2V1KSk7CisJcGFn ZVsxXSA9IG1tYXAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpcGFnZVswXSArIDQwOTYpLCA0MDk2 LAorCQkgICAgICAgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiB8IE1BUF9GSVhF RCwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVsxXSAhPSBNQVBfRkFJTEVEKTsKKwltZW1zZXQo cGFnZVsxXSwgMCwgc2l6ZW9mKHNzZXUpKTsKKwltdW5tYXAocGFnZVsxXSwgNDA5Nik7CisJYXJn LnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKHBhZ2VbMV0pIC0KKwkJICAgIHNpemVvZihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSkgKyA0OworCWlndF9hc3NlcnRfZXEoX19n ZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwltdW5tYXAocGFnZVsw XSwgNDA5Nik7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHJlYWQtb25seSBhcmVhLiAqLworCXBhZ2Vb MF0gPSBtbWFwKDAsIDgxOTIsIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0x LCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJbXVubWFwKHBhZ2Vb MF0sIDgxOTIpOworCXBhZ2VbMF0gPSBtbWFwKHBhZ2VbMF0sIDQwOTYsCisJCSAgICAgICBQUk9U X1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OIHwgTUFQX0ZJWEVELCAtMSwgMCk7CisJaWd0 X2Fzc2VydChwYWdlWzBdICE9IE1BUF9GQUlMRUQpOworCW1lbXNldChwYWdlWzBdLCAwLCBzaXpl b2Yoc3NldSkpOworCXBhZ2VbMV0gPSBtbWFwKCh2b2lkICopKCh1bnNpZ25lZCBsb25nKXBhZ2Vb MF0gKyA0MDk2KSwgNDA5NiwKKwkJICAgICAgIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQ X0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMV0gIT0gTUFQX0ZB SUxFRCk7CisJbWVtc2V0KHBhZ2VbMV0sIDAsIHNpemVvZihzc2V1KSk7CisJaWd0X2Fzc2VydCht cHJvdGVjdChwYWdlWzFdLCA0MDk2LCBQUk9UX1JFQUQpID09IDApOworCWFyZy52YWx1ZSA9IHRv X3VzZXJfcG9pbnRlcihwYWdlWzFdIC0gc2l6ZW9mKHNzZXUpICsgNCk7CisJaWd0X2Fzc2VydF9l cShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCW11bm1hcChw YWdlWzBdLCA0MDk2KTsKKwltdW5tYXAocGFnZVsxXSwgNDA5Nik7CisKKwkvKiBzZXQgcGFyYW0g Ki8KKworCS8qIEludmFsaWQgc2l6ZXMuICovCisJYXJnLnNpemUgPSAxOworCWlndF9hc3NlcnRf ZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCWFyZy5z aXplID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJn KSwgLUVJTlZBTCk7CisJYXJnLnNpemUgPSBzejsKKworCS8qIEJhZCBwb2ludGVycy4gKi8KKwlh cmcudmFsdWUgPSAwOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQs ICZhcmcpLCAtRUZBVUxUKTsKKwlhcmcudmFsdWUgPSAtMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2Vt X2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisJYXJnLnZhbHVlID0gMTsK KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVM VCk7CisKKwkvKiBHZXQgdmFsaWQgU1NFVS4gKi8KKwlhcmcudmFsdWUgPSB0b191c2VyX3BvaW50 ZXIoJnNzZXUpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZh cmcpLCAwKTsKKworCS8qIEludmFsaWQgTUJaLiAqLworCXNzZXUuZmxhZ3MgPSAtMTsKKwlpZ3Rf YXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisJ c3NldS5yc3ZkID0gLTE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShm ZCwgJmFyZyksIC1FSU5WQUwpOworCXNzZXUuZmxhZ3MgPSAwOworCWlndF9hc3NlcnRfZXEoX19n ZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwlzc2V1LnJzdmQgPSAw OworCisJLyogVW5tYXBwZWQuICovCisJcGFnZVswXSA9IG1tYXAoMCwgNDA5NiwgUFJPVF9XUklU RSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAh PSBNQVBfRkFJTEVEKTsKKwltZW1jcHkocGFnZVswXSwgJnNzZXUsIHNpemVvZihzc2V1KSk7CisJ bXVubWFwKHBhZ2VbMF0sIDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihwYWdl WzBdKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwg LUVGQVVMVCk7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHVubWFwcGVkIGFyZWEuICovCisJcGFnZVsw XSA9IG1tYXAoMCwgODE5MiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEs IDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwltdW5tYXAocGFnZVsw XSwgODE5Mik7CisJcGFnZVswXSA9IG1tYXAocGFnZVswXSwgNDA5NiwKKwkJICAgICAgIFBST1Rf V1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlpZ3Rf YXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJcGFnZVsxXSA9IG1tYXAoKHZvaWQgKiko KHVuc2lnbmVkIGxvbmcpcGFnZVswXSArIDQwOTYpLCA0MDk2LAorCQkgICAgICAgUFJPVF9XUklU RSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiB8IE1BUF9GSVhFRCwgLTEsIDApOworCWlndF9hc3Nl cnQocGFnZVsxXSAhPSBNQVBfRkFJTEVEKTsKKwlhZGRyID0gcGFnZVsxXSAtIHNpemVvZihzc2V1 KSArIDQ7CisJbWVtY3B5KGFkZHIsICZzc2V1LCBzaXplb2Yoc3NldSkpOworCW11bm1hcChwYWdl WzFdLCA0MDk2KTsKKwlhcmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoYWRkcik7CisJaWd0X2Fz c2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCW11 bm1hcChwYWdlWzBdLCA0MDk2KTsKKworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGFyZy5jdHhf aWQpOworfQorCisvKgorICogVmVyaWZ5IHRoYXQgZ2d0dCBtYXBwZWQgYXJlYSBjYW4gYmUgdXNl ZCBhcyB0aGUgc3NldSBwb2ludGVyLgorICovCitzdGF0aWMgdm9pZAordGVzdF9nZ3R0X2FyZ3Mo aW50IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1ICpzc2V1 OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9 IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRl KGZkKSwKKwkJLnNpemUgPSBzaXplb2YoKnNzZXUpLAorCX07CisJdWludDMyX3QgYm87CisKKwli byA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihn ZW1fbW1hcF9fZ3R0KGZkLCBibywgNDA5NiwKKwkJCQkJCSAgUFJPVF9SRUFEIHwgUFJPVF9XUklU RSkpOworCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyks IDApOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAw KTsKKworCW11bm1hcCgodm9pZCAqKWFyZy52YWx1ZSwgNDA5Nik7CisJZ2VtX2Nsb3NlKGZkLCBi byk7CisJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgYXJnLmN0eF9pZCk7Cit9CisKKy8qCisgKiBW ZXJpZnkgdGhhdCBpbnZhbGlkIFNTRVUgdmFsdWVzIGFyZSByZWplY3RlZC4KKyAqLworc3RhdGlj IHZvaWQKK3Rlc3RfaW52YWxpZF9zc2V1KGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW1fc3NldSBkZXZpY2Vfc3NldSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VV LAorCQkuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKSwKKwkJLnNpemUgPSBzaXplb2Yo c3NldSksCisJfTsKKwl1bnNpZ25lZCBpbnQgaTsKKworCS8qIEZldGNoIHRoZSBkZXZpY2UgZGVm YXVsdHMuICovCisJYXJnLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZkZXZpY2Vfc3NldSk7CisJ Z2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKTsKKworCWFyZy52YWx1ZSA9IHRvX3VzZXJf cG9pbnRlcigmc3NldSk7CisKKwkvKiBUcnkgYWxsIHNsaWNlIG1hc2tzIGtub3duIHRvIGJlIGlu dmFsaWQuICovCisJc3NldSA9IGRldmljZV9zc2V1OworCWZvciAoaSA9IDE7IGkgPD0gKDggLSBf X3NsaWNlX2NvdW50X18pOyBpKyspIHsKKwkJc3NldS5zbGljZV9tYXNrID0gbWFza19wbHVzKF9f c2xpY2VfbWFza19fLCBpKTsKKwkJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJh bShmZCwgJmFyZyksIC1FSU5WQUwpOworCX0KKworCS8qIDAgc2xpY2VzLiAqLworCXNzZXUuc2xp Y2VfbWFzayA9IDA7CisJaWd0X2Fzc2VydF9lcSgtRUlOVkFMLCBfX2dlbV9jb250ZXh0X3NldF9w YXJhbShmZCwgJmFyZykpOworCisJLyogVHJ5IGFsbCBzdWJzbGljZSBtYXNrcyBrbm93biB0byBi ZSBpbnZhbGlkLiAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlmb3IgKGkgPSAxOyBpIDw9ICg4 IC0gX19zdWJzbGljZV9jb3VudF9fKTsgaSsrKSB7CisJCXNzZXUuc3Vic2xpY2VfbWFzayA9IG1h c2tfcGx1cyhfX3N1YnNsaWNlX21hc2tfXywgaSk7CisJCWlndF9hc3NlcnRfZXEoX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwl9CisKKwkvKiAwIHN1YnNsaWNl cy4gKi8KKwlzc2V1LnN1YnNsaWNlX21hc2sgPSAwOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29u dGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCS8qIFRyeSBudW1iZXIgb2Yg RVVzIHN1cGVyaW9yIHRvIHRoZSBtYXggYXZhaWxhYmxlLiAqLworCXNzZXUgPSBkZXZpY2Vfc3Nl dTsKKwlzc2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gZGV2aWNlX3NzZXUubWF4X2V1c19wZXJf c3Vic2xpY2UgKyAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQs ICZhcmcpLCAtRUlOVkFMKTsKKworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlzc2V1Lm1heF9ldXNf cGVyX3N1YnNsaWNlID0gZGV2aWNlX3NzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgKyAxOworCWln dF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsK KworCS8qIFRyeSB0byBwcm9ncmFtIDAgbWF4IEVVcy4gKi8KKwlzc2V1ID0gZGV2aWNlX3NzZXU7 CisJc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9j b250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJLyogTWluID4gbWF4ICov CisJc3NldSA9IGRldmljZV9zc2V1OworCXNzZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBzc2V1 Lm1heF9ldXNfcGVyX3N1YnNsaWNlOworCXNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPSAxOwor CWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFM KTsKKworCWlmIChfX2ludGVsX2dlbl9fICE9IDExKQorCQlnb3RvIG91dDsKKworCS8qIFN1YnNl dCBvZiBzdWJzbGljZXMgYnV0IHNsaWNlIG1hc2sgZ3JlYXRlciB0aGFuIG9uZS4gKi8KKwlpZiAo X19zbGljZV9jb3VudF9fID4gMSkgeworCQlzc2V1ID0gZGV2aWNlX3NzZXU7CisJCXNzZXUuc3Vi c2xpY2VfbWFzayA9IG1hc2tfbWludXNfb25lKHNzZXUuc3Vic2xpY2VfbWFzayk7CisJCWlndF9h c3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwl9 CisKKwkvKiBPZGQgc3Vic2xpY2VzIGFib3ZlIGZvdXIuICovCisJc3NldSA9IGRldmljZV9zc2V1 OworCXNzZXUuc2xpY2VfbWFzayA9IDB4MTsKKwlzc2V1LnN1YnNsaWNlX21hc2sgPSBtYXNrX21p bnVzX29uZShzc2V1LnN1YnNsaWNlX21hc2spOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4 dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKworCS8qIE1vcmUgdGhhbiBoYWxmIHN1 YnNsaWNlcyB3aXRoIG9uZSBzbGljZS4gKi8KKwlzc2V1ID0gZGV2aWNlX3NzZXU7CisJc3NldS5z bGljZV9tYXNrID0gMHgxOworCXNzZXUuc3Vic2xpY2VfbWFzayA9IG1hc2tfbWludXMoc3NldS5z dWJzbGljZV9tYXNrLAorCQkJCQlfX3N1YnNsaWNlX2NvdW50X18gLyAyIC0gMSk7CisJaWd0X2Fz c2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJ LyogVk1FICovCisKKwkvKiBTbGljZSBjb3VudCBiZXR3ZWVuIG9uZSBhbmQgbWF4LiAqLworCWlm IChfX3NsaWNlX2NvdW50X18gPiAyKSB7CisJCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwkJc3NldS5z bGljZV9tYXNrID0gbWFza19taW51c19vbmUoc3NldS5zbGljZV9tYXNrKTsKKwkJaWd0X2Fzc2Vy dF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCX0KKwor CS8qIExlc3MgdGhhbiBoYWxmIHN1YnNsaWNlcyB3aXRoIG9uZSBzbGljZS4gKi8KKwlzc2V1ID0g ZGV2aWNlX3NzZXU7CisJc3NldS5zbGljZV9tYXNrID0gMHgxOworCXNzZXUuc3Vic2xpY2VfbWFz ayA9IG1hc2tfbWludXMoc3NldS5zdWJzbGljZV9tYXNrLAorCQkJCQlfX3N1YnNsaWNlX2NvdW50 X18gLyAyICsgMSk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwg JmFyZyksIC1FSU5WQUwpOworCitvdXQ6CisJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgYXJnLmN0 eF9pZCk7Cit9CisKK2lndF9tYWluCit7CisJaW50IGZkOworCisJaWd0X2ZpeHR1cmUgeworCQlm ZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlpZ3RfcmVxdWlyZV9nZW0oZmQp OworCisJCV9faW50ZWxfZGV2aWRfXyA9IGludGVsX2dldF9kcm1fZGV2aWQoZmQpOworCQlfX2lu dGVsX2dlbl9fID0gaW50ZWxfZ2VuKF9faW50ZWxfZGV2aWRfXyk7CisKKwkJaWd0X3JlcXVpcmUo a2VybmVsX2hhc19wZXJfY29udGV4dF9zc2V1X3N1cHBvcnQoZmQpKTsKKwl9CisKKwlpZ3Rfc3Vi dGVzdF9ncm91cCB7CisJCWlndF9maXh0dXJlIHsKKwkJCWRybV9pOTE1X2dldHBhcmFtX3QgZ3A7 CisKKwkJCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9TTElDRV9NQVNLOworCQkJZ3AudmFsdWUgPSAo aW50ICopICZfX3NsaWNlX21hc2tfXzsKKwkJCWRvX2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9H RVRQQVJBTSwgJmdwKTsKKwkJCV9fc2xpY2VfY291bnRfXyA9IF9fYnVpbHRpbl9wb3Bjb3VudChf X3NsaWNlX21hc2tfXyk7CisKKwkJCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNL OworCQkJZ3AudmFsdWUgPSAoaW50ICopICZfX3N1YnNsaWNlX21hc2tfXzsKKwkJCWRvX2lvY3Rs KGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKKwkJCV9fc3Vic2xpY2VfY291bnRf XyA9CisJCQkJX19idWlsdGluX3BvcGNvdW50KF9fc3Vic2xpY2VfbWFza19fKTsKKwkJfQorCisJ CWlndF9zdWJ0ZXN0KCJpbnZhbGlkLWFyZ3MiKQorCQkJdGVzdF9pbnZhbGlkX2FyZ3MoZmQpOwor CisJCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLXNzZXUiKQorCQkJdGVzdF9pbnZhbGlkX3NzZXUoZmQp OworCisJCWlndF9zdWJ0ZXN0KCJnZ3R0LWFyZ3MiKQorCQkJdGVzdF9nZ3R0X2FyZ3MoZmQpOwor CisJCWlndF9zdWJ0ZXN0KCJlbmdpbmVzIikKKwkJCXRlc3RfZW5naW5lcyhmZCk7CisJfQorCisJ aWd0X2ZpeHR1cmUgeworCQljbG9zZShmZCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVz b24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCBiOGE2ZTYxYjM0MDQuLmY0MWY3MjRh ZjhhZiAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVp bGQKQEAgLTI4OCw2ICsyODgsMTQgQEAgZm9yZWFjaCBwcm9nIDogZ2VtX3Byb2dzICsgZ2VuM19w cm9ncwogCXRlc3RfbGlzdCArPSBwcm9nCiBlbmRmb3JlYWNoCiAKK3Rlc3RfZXhlY3V0YWJsZXMg Kz0gZXhlY3V0YWJsZSgnZ2VtX2N0eF9zc2V1JywKKwkgICBqb2luX3BhdGhzKCdpOTE1JywgJ2dl bV9jdHhfc3NldS5jJyksCisJICAgZGVwZW5kZW5jaWVzIDogdGVzdF9kZXBzICsgWyBsaWJfaWd0 X3BlcmYgXSwKKwkgICBpbnN0YWxsX2RpciA6IGxpYmV4ZWNkaXIsCisJICAgaW5zdGFsbF9ycGF0 aCA6IGxpYmV4ZWNkaXJfcnBhdGhkaXIsCisJICAgaW5zdGFsbCA6IHRydWUpCit0ZXN0X3Byb2dz ICs9ICdnZW1fY3R4X3NzZXUnCisKIHRlc3RfZXhlY3V0YWJsZXMgKz0gZXhlY3V0YWJsZSgnZ2Vt X2VpbycsCiAJICAgam9pbl9wYXRocygnaTkxNScsICdnZW1fZWlvLmMnKSwKIAkgICBkZXBlbmRl bmNpZXMgOiB0ZXN0X2RlcHMgKyBbIHJlYWx0aW1lIF0sCi0tIAoyLjE5LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=