From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: [PATCH i-g-t] test/gem_mocs_settings: Testing MOCS register settings Date: Mon, 4 Apr 2016 14:43:08 +0100 Message-ID: <1459777388-17211-1-git-send-email-peter.antoine@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 461636E5D9 for ; Mon, 4 Apr 2016 13:43:17 +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 List-Id: intel-gfx@lists.freedesktop.org VGhlIE1PQ1MgcmVnaXN0ZXJzIHdlcmUgYWRkZWQgaW4gR2VuOSBhbmQgZGVmaW5lIHRoZSBjYWNo aW5nIHBvbGljeS4KVGhlIHJlZ2lzdGVycyBhcmUgc3BsaXQgaW50byB0d28gc2V0cy4gVGhlIGZp cnN0IHNldCBjb250cm9scyB0aGUKRURSQU0gcG9saWN5IGFuZCBoYXZlIGEgc2V0IGZvciBlYWNo IGVuZ2luZSwgdGhlIHNlY29uZCBzZXQgY29udHJvbHMKdGhlIEwzIHBvbGljeS4gVGhlIHR3byBz ZXRzIHVzZSB0aGUgc2FtZSBpbmRleC4KClRoZSBSQ1MgcmVnaXN0ZXJzIGFuZCB0aGUgTDNDQyBy ZWdpc3RlcnMgYXJlIHN0b3JlZCBpbiB0aGUgUkNTIGNvbnRleHQuCgpUaGUgdGVzdCBjaGVja3Mg dGhhdCB0aGUgcmVnaXN0ZXJzIGFyZSBjb3JyZWN0IGJ5IGNoZWNraW5nIHRoZSB2YWx1ZXMgYnkK ZGlyZWN0bHkgcmVhZGluZyB0aGVtIHZpYSBNTUlPLCB0aGVuIGFnYWluIGl0IHRlc3RzIHRoZW0g YnkgcmVhZGluZyB0aGVtCmZyb20gd2l0aGluIGEgYmF0Y2ggYnVmZmVyLiBSQ1MgZW5naW5lIGlz IHRlc3RlZCBsYXN0IGFzIGl0IHByb2dyYW1zIHRoZQpyZWdpc3RlcnMgdmlhIGEgYmF0Y2ggYnVm ZmVyIGFuZCB0aGlzIHdpbGwgaW52YWxpZGF0ZSB0aGUgdGVzdCBmb3IKd29ya2xvYWRzIHRoYXQg ZG9uJ3QgdXNlIHRoZSByZW5kZXIgcmluZyBvciBkb24ndCBydW4gYSByZW5kZXIgYmF0Y2gKZmly c3QuCgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVsLmNv bT4KLS0tCiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzICAgIHwgICAxICsKIHRlc3RzL2dlbV9tb2Nz X3NldHRpbmdzLmMgfCA0MDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0MDkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRlc3RzL2dlbV9tb2NzX3NldHRpbmdzLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtl ZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCA0M2YyMzJmLi5kNDgz YzllIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2Vm aWxlLnNvdXJjZXMKQEAgLTE0OCw2ICsxNDgsNyBAQCBURVNUU19wcm9ncyA9IFwKIAlnZW1fbHV0 X2hhbmRsZSBcCiAJZ2VtX21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24gXAogCWdlbV9tZWRpYV9maWxs IFwKKwlnZW1fbW9jc19zZXR0aW5ncyBcCiAJZ2VtX2dwZ3B1X2ZpbGwgXAogCWdlbV9waW4gXAog CWdlbV9yZWdfcmVhZCBcCmRpZmYgLS1naXQgYS90ZXN0cy9nZW1fbW9jc19zZXR0aW5ncy5jIGIv dGVzdHMvZ2VtX21vY3Nfc2V0dGluZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi43ZGI2NGMxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZ2VtX21vY3Nfc2V0dGluZ3Mu YwpAQCAtMCwwICsxLDQwOCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBv cmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl CisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoK KyAqLworCisvKiogQGZpbGUgZ2VtX21vY3Nfc2V0dGluZ3MuYworICoKKyAqIENoZWNrIHRoYXQg dGhlIE1PQ3MgY2FjaGUgc2V0dGluZ3MgYXJlIHZhbGlkLgorICovCisKKyNpbmNsdWRlICJpZ3Qu aCIKKyNpbmNsdWRlICJpZ3RfZ3QuaCIKKworI2RlZmluZSBNQVhfTlVNQkVSX01PQ1NfUkVHSVNU RVJTCSg2NCkKKworZW51bSB7CisJTk9ORSwKKwlSRVNFVCwKKwlTVVNQRU5ELAorCUhJQkVSTkFU RQorfTsKKworI2RlZmluZSBHRU45X0xOQ0ZDTU9DUzAJCSgweEIwMjApCS8qIEwzIENhY2hlIENv bnRyb2wgYmFzZSAqLworI2RlZmluZSBHRU45X0dGWF9NT0NTXzAJCSgweGM4MDApCS8qIEdyYXBo aWNzIE1PQ1MgYmFzZSByZWdpc3RlciovCisjZGVmaW5lIEdFTjlfTUZYMF9NT0NTXzAJKDB4Yzkw MCkJLyogTWVkaWEgMCBNT0NTIGJhc2UgcmVnaXN0ZXIqLworI2RlZmluZSBHRU45X01GWDFfTU9D U18wCSgweGNBMDApCS8qIE1lZGlhIDEgTU9DUyBiYXNlIHJlZ2lzdGVyKi8KKyNkZWZpbmUgR0VO OV9WRUJPWF9NT0NTXzAJKDB4Y0IwMCkJLyogVmlkZW8gTU9DUyBiYXNlIHJlZ2lzdGVyKi8KKyNk ZWZpbmUgR0VOOV9CTFRfTU9DU18wCQkoMHhjYzAwKQkvKiBCbGl0dGVyIE1PQ1MgYmFzZSByZWdp c3RlciovCisKKyNkZWZpbmUgRU5HSU5FX0dGWAkoSTkxNV9FWEVDX1JFTkRFUikKKyNkZWZpbmUg RU5HSU5FX01GWDAJKEk5MTVfRVhFQ19CU0QpCisjZGVmaW5lIEVOR0lORV9NRlgwX0FMVAkoSTkx NV9FWEVDX0JTRCB8IDEgPDwgMTMpCisjZGVmaW5lIEVOR0lORV9NRlgxCShJOTE1X0VYRUNfQlNE IHwgMiA8PCAxMykKKyNkZWZpbmUgRU5HSU5FX0JMVAkoSTkxNV9FWEVDX0JMVCkKKyNkZWZpbmUg RU5HSU5FX1ZFQk9YCShJOTE1X0VYRUNfVkVCT1gpCisKK3N0cnVjdCBtb2NzX2VudHJ5IHsKKwl1 aW50MzJfdAljb250cm9sX3ZhbHVlOworCXVpbnQxNl90CWwzY2NfdmFsdWU7Cit9OworCitzdHJ1 Y3QgbW9jc190YWJsZSB7CisJdWludDMyX3QJCXNpemU7CisJY29uc3Qgc3RydWN0IG1vY3NfZW50 cnkJKnRhYmxlOworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBtb2NzX2VudHJ5IHNreWxha2Vf bW9jc190YWJsZVtdID0geworCXsgMHgwMDAwMDAwOSwgMHgwMDEwIH0sCisJeyAweDAwMDAwMDM4 LCAweDAwMzAgfSwKKwl7IDB4MDAwMDAwM2IsIDB4MDAzMCB9LAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBtb2NzX2VudHJ5IGJyb3h0b25fbW9jc190YWJsZVtdID0geworCXsgMHgwMDAwMDAw OSwgMHgwMDEwIH0sCisJeyAweDAwMDAwMDM4LCAweDAwMzAgfSwKKwl7IDB4MDAwMDAwM2IsIDB4 MDAzMCB9LAorfTsKKworc3RhdGljIGJvb2wgZ2V0X21vY3Nfc2V0dGluZ3ModWludDMyX3QgZGV2 aWQsIHN0cnVjdCBtb2NzX3RhYmxlICp0YWJsZSkKK3sKKwlib29sIHJlc3VsdCA9IGZhbHNlOwor CisJaWYgKElTX1NLWUxBS0UoZGV2aWQpIHx8IElTX0tBQllMQUtFKGRldmlkKSkgeworCQl0YWJs ZS0+c2l6ZSAgPSBBUlJBWV9TSVpFKHNreWxha2VfbW9jc190YWJsZSk7CisJCXRhYmxlLT50YWJs ZSA9IHNreWxha2VfbW9jc190YWJsZTsKKwkJcmVzdWx0ID0gdHJ1ZTsKKwl9IGVsc2UgaWYgKElT X0JST1hUT04oZGV2aWQpKSB7CisJCXRhYmxlLT5zaXplICA9IEFSUkFZX1NJWkUoYnJveHRvbl9t b2NzX3RhYmxlKTsKKwkJdGFibGUtPnRhYmxlID0gYnJveHRvbl9tb2NzX3RhYmxlOworCQlyZXN1 bHQgPSB0cnVlOworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBn ZXRfZW5naW5lX2Jhc2UodWludDMyX3QgZW5naW5lKQoreworCXVpbnQzMl90IHJlc3VsdCA9IDA7 CisKKwlzd2l0Y2goZW5naW5lKSB7CisJY2FzZSBFTkdJTkVfTUZYMDoKKwljYXNlIEVOR0lORV9N RlgwX0FMVDoJcmVzdWx0ID0gR0VOOV9NRlgwX01PQ1NfMDsJYnJlYWs7CisJY2FzZSBFTkdJTkVf R0ZYOiAJcmVzdWx0ID0gR0VOOV9HRlhfTU9DU18wOwlicmVhazsKKwljYXNlIEVOR0lORV9NRlgx OiAJcmVzdWx0ID0gR0VOOV9NRlgxX01PQ1NfMDsJYnJlYWs7CisJY2FzZSBFTkdJTkVfQkxUOgly ZXN1bHQgPSBHRU45X0JMVF9NT0NTXzA7CWJyZWFrOworCWNhc2UgRU5HSU5FX1ZFQk9YOglyZXN1 bHQgPSBHRU45X1ZFQk9YX01PQ1NfMDsJYnJlYWs7CisJZGVmYXVsdDoKKwkJaWd0X2ZhaWwoLTEp OworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBnZXRfbW9jc19y ZWdpc3Rlcl92YWx1ZShpbnQgZmQsIHVpbnQ2NF90IG9mZnNldCwgdWludDMyX3QgaW5kZXgpCit7 CisJdWludDMyX3QgcmVnaWQgPSBvZmZzZXQgKyAoaW5kZXggKiA0KTsKKworCWlndF9hc3NlcnQo aW5kZXggPCBNQVhfTlVNQkVSX01PQ1NfUkVHSVNURVJTKTsKKworCXJldHVybiBpbnRlbF9yZWdp c3Rlcl9yZWFkKHJlZ2lkKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9tb2NzX2NvbnRyb2xfdmFs dWVzKGludCBmZCwgdWludDMyX3QgZW5naW5lKQoreworCWludCBpOworCXVpbnQzMl90IGRldmlk ID0gaW50ZWxfZ2V0X2RybV9kZXZpZChmZCk7CisJdWludDMyX3QgZW5naW5lX2Jhc2UgPSBnZXRf ZW5naW5lX2Jhc2UoZW5naW5lKTsKKwlzdHJ1Y3QgbW9jc190YWJsZSB0YWJsZTsKKworCWlndF9h c3NlcnQoZ2V0X21vY3Nfc2V0dGluZ3MoZGV2aWQsICZ0YWJsZSkpOworCisJZm9yIChpID0gMDsg aSA8IHRhYmxlLnNpemU7IGkrKykKKwkJaWd0X2Fzc2VydF9lcShnZXRfbW9jc19yZWdpc3Rlcl92 YWx1ZShmZCwgZW5naW5lX2Jhc2UsIGkpLAorCQkJCXRhYmxlLnRhYmxlW2ldLmNvbnRyb2xfdmFs dWUpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X21vY3NfbDNjY192YWx1ZXMoaW50IGZkKQorewor CWludCBpOworCXVpbnQzMl90IHJlZ192YWx1ZXNbTUFYX05VTUJFUl9NT0NTX1JFR0lTVEVSUy8y XTsKKwlzdHJ1Y3QgbW9jc190YWJsZSB0YWJsZTsKKworCWZvciAoaSA9IDA7IGkgPCBNQVhfTlVN QkVSX01PQ1NfUkVHSVNURVJTIC8gMjsgaSsrKQorCQlyZWdfdmFsdWVzW2ldID0gaW50ZWxfcmVn aXN0ZXJfcmVhZChHRU45X0xOQ0ZDTU9DUzAgKyAoaSAqIDQpKTsKKworCWlndF9hc3NlcnQoZ2V0 X21vY3Nfc2V0dGluZ3MoaW50ZWxfZ2V0X2RybV9kZXZpZChmZCksICZ0YWJsZSkpOworCisJZm9y IChpID0gMDsgaSA8IHRhYmxlLnNpemUgLyAyOyBpKyspIHsKKwkJaWd0X2Fzc2VydF9lcSgocmVn X3ZhbHVlc1tpXSAmIDB4ZmZmZiksCisJCQkJdGFibGUudGFibGVbaSAqIDJdLmwzY2NfdmFsdWUp OworCQlpZ3RfYXNzZXJ0X2VxKChyZWdfdmFsdWVzW2ldID4+IDE2KSwKKwkJCQl0YWJsZS50YWJs ZVtpICogMiArIDFdLmwzY2NfdmFsdWUpOworCX0KKworCWlmICh0YWJsZS5zaXplICYgMSkKKwkJ aWd0X2Fzc2VydF9lcSgocmVnX3ZhbHVlc1tpXSAmIDB4ZmZmZiksCisJCQkJdGFibGUudGFibGVb aSAqIDJdLmwzY2NfdmFsdWUpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X21vY3NfdmFsdWVzKGlu dCBmZCkKK3sKKwljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZSAqZTsKKworCWZv ciAoZSA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzOyBlLT5uYW1lOyBlKyspCisJCWlmIChlLT5l eGVjX2lkICE9IEk5MTVfRVhFQ19ERUZBVUxUICYmCisJCSAgICBnZW1faGFzX3JpbmcoZmQsIGUt PmV4ZWNfaWQgfCBlLT5mbGFncykpCisJCQl0ZXN0X21vY3NfY29udHJvbF92YWx1ZXMoZmQsIGUt PmV4ZWNfaWQgfCBlLT5mbGFncyk7CisKKwl0ZXN0X21vY3NfbDNjY192YWx1ZXMoZmQpOworfQor CisjZGVmaW5lIE1JX1NUT1JFX1JFR0lTVEVSX01FTV82NF9CSVRfQUREUgkoKDB4MjQgPDwgMjMp IHwgMikKKworc3RhdGljIGludCBjcmVhdGVfcmVhZF9iYXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlbG9jYXRpb25fZW50cnkgKnJlbG9jLAorCQkJICAgICB1aW50MzJfdCAqYmF0Y2gsCisJCQkg ICAgIHVpbnQzMl90IGRzdF9oYW5kbGUsCisJCQkgICAgIHVpbnQzMl90IHNpemUsCisJCQkgICAg IHVpbnQzMl90IHJlZ19iYXNlKQoreworCXVuc2lnbmVkIGludCBpbmRleDsKKwl1bnNpZ25lZCBp bnQgb2Zmc2V0ID0gMDsKKworCWZvciAoaW5kZXggPSAwLCBvZmZzZXQgPSAwOyBpbmRleCA8IHNp emU7IGluZGV4KyssIG9mZnNldCArPSA0KQorCXsKKwkJYmF0Y2hbb2Zmc2V0XSAgID0gTUlfU1RP UkVfUkVHSVNURVJfTUVNXzY0X0JJVF9BRERSOworCQliYXRjaFtvZmZzZXQrMV0gPSByZWdfYmFz ZSArIChpbmRleCAqIHNpemVvZih1aW50MzJfdCkpOworCQliYXRjaFtvZmZzZXQrMl0gPSBpbmRl eCAqIHNpemVvZih1aW50MzJfdCk7CS8qIHJlbG9jICovCisJCWJhdGNoW29mZnNldCszXSA9IDA7 CisKKwkJcmVsb2NbaW5kZXhdLm9mZnNldCA9IChvZmZzZXQgKyAyKSAqIHNpemVvZih1aW50MzJf dCk7CisJCXJlbG9jW2luZGV4XS5kZWx0YSA9IGluZGV4ICogc2l6ZW9mKHVpbnQzMl90KTsKKwkJ cmVsb2NbaW5kZXhdLnRhcmdldF9oYW5kbGUgPSBkc3RfaGFuZGxlOworCX0KKworCWJhdGNoW29m ZnNldCsrXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJYmF0Y2hbb2Zmc2V0KytdID0gMDsKKwor CXJldHVybiBvZmZzZXQgKiBzaXplb2YodWludDMyX3QpOworfQorCitzdGF0aWMgdm9pZCBkb19y ZWFkX3JlZ2lzdGVycyhpbnQgZmQsCisJCQkgICAgICB1aW50MzJfdCBjdHhfaWQsCisJCQkgICAg ICB1aW50MzJfdCBkc3RfaGFuZGxlLAorCQkJICAgICAgdWludDMyX3QgcmVnX2Jhc2UsCisJCQkg ICAgICB1aW50MzJfdCBzaXplLAorCQkJICAgICAgdWludDMyX3QgZW5naW5lX2lkKQoreworCXN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiBnZW1fZXhlY1syXTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9j YXRpb25fZW50cnkgcmVsb2NbTUFYX05VTUJFUl9NT0NTX1JFR0lTVEVSU107CisJdWludDMyX3Qg YmF0Y2hbTUFYX05VTUJFUl9NT0NTX1JFR0lTVEVSUyAqIDQgKyA0XTsKKwl1aW50MzJfdCBoYW5k bGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKworCW1lbXNldChyZWxvYywgMCwgc2l6ZW9mKHJl bG9jKSk7CisKKwltZW1zZXQoJmdlbV9leGVjLCAwLCBzaXplb2YoZ2VtX2V4ZWMpKTsKKwlnZW1f ZXhlY1swXS5oYW5kbGUgPSBkc3RfaGFuZGxlOworCWdlbV9zZXRfZG9tYWluKGZkLCBkc3RfaGFu ZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKKworCWdlbV9leGVjWzFdLmhhbmRsZSA9IGhh bmRsZTsKKwlnZW1fZXhlY1sxXS5yZWxvY2F0aW9uX2NvdW50ID0gc2l6ZTsKKwlnZW1fZXhlY1sx XS5yZWxvY3NfcHRyID0gKHVpbnRwdHJfdCkgcmVsb2M7CisKKwltZW1zZXQoJmV4ZWNidWYsIDAs IHNpemVvZihleGVjYnVmKSk7CisJZXhlY2J1Zi5idWZmZXJzX3B0ciA9ICh1aW50cHRyX3QpZ2Vt X2V4ZWM7CisJZXhlY2J1Zi5idWZmZXJfY291bnQgPSAyOworCisJZXhlY2J1Zi5iYXRjaF9sZW4g PSBjcmVhdGVfcmVhZF9iYXRjaChyZWxvYywKKwkJCQkJICAgICAgYmF0Y2gsCisJCQkJCSAgICAg IGRzdF9oYW5kbGUsCisJCQkJCSAgICAgIHNpemUsCisJCQkJCSAgICAgIHJlZ19iYXNlKTsKKwor CWdlbV93cml0ZShmZCwgaGFuZGxlLCAwLCBiYXRjaCwgZXhlY2J1Zi5iYXRjaF9sZW4pOworCisJ aWYgKGN0eF9pZCAhPSAwKQorCQlpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250ZXh0X2lkKGV4ZWNi dWYsIGN0eF9pZCk7CisKKwlleGVjYnVmLmZsYWdzID0gSTkxNV9FWEVDX1NFQ1VSRSB8IGVuZ2lu ZV9pZDsKKworCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7CisJZ2VtX3N5bmMoZmQsIGhhbmRs ZSk7CisKKwlnZW1fY2xvc2UoZmQsIGhhbmRsZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX2Nv bnRyb2xfcmVnaXN0ZXJzKGludCBmZCwKKwkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUgKmVuZ2luZSwKKwkJCQkgICAgdWludDMyX3QgY3R4X2lkLAorCQkJCSAgICBi b29sIHVzZV9kZWZhdWx0KQoreworCXVpbnQzMl90IGRzdF9oYW5kbGUgPSBnZW1fY3JlYXRlKGZk LCA0MDk2KTsKKwl1aW50MzJfdCByZWdfYmFzZSAgPSBnZXRfZW5naW5lX2Jhc2UoZW5naW5lLT5l eGVjX2lkIHwgZW5naW5lLT5mbGFncyk7CisJdWludDMyX3QgKnJlYWRfcmVnczsKKwlzdHJ1Y3Qg bW9jc190YWJsZSB0YWJsZTsKKwlpZ3RfYXNzZXJ0KGdldF9tb2NzX3NldHRpbmdzKGludGVsX2dl dF9kcm1fZGV2aWQoZmQpLCAmdGFibGUpKTsKKworCWlmIChyZWdfYmFzZSA9PSBHRU45X0dGWF9N T0NTXzAgJiYgIXVzZV9kZWZhdWx0KQorCQlkb19yZWFkX3JlZ2lzdGVycyhmZCwKKwkJCQkgIGN0 eF9pZCwKKwkJCQkgIGRzdF9oYW5kbGUsCisJCQkJICByZWdfYmFzZSwKKwkJCQkgIHRhYmxlLnNp emUsCisJCQkJICBlbmdpbmUtPmV4ZWNfaWQgfCBlbmdpbmUtPmZsYWdzKTsKKwllbHNlCisJCWRv X3JlYWRfcmVnaXN0ZXJzKGZkLAorCQkJCSAgMCwKKwkJCQkgIGRzdF9oYW5kbGUsCisJCQkJICBy ZWdfYmFzZSwKKwkJCQkgIHRhYmxlLnNpemUsCisJCQkJICBlbmdpbmUtPmV4ZWNfaWQgfCBlbmdp bmUtPmZsYWdzKTsKKworCXJlYWRfcmVncyA9IGdlbV9tbWFwX19ndHQoZmQsIGRzdF9oYW5kbGUs IDQwOTYsIFBST1RfUkVBRCk7CisKKwlmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgdGFibGUu c2l6ZTsgaW5kZXgrKykKKwkJaWd0X2Fzc2VydF9lcShyZWFkX3JlZ3NbaW5kZXhdLAorCQkJCXRh YmxlLnRhYmxlW2luZGV4XS5jb250cm9sX3ZhbHVlKTsKKworCWdlbV9jbG9zZShmZCwgZHN0X2hh bmRsZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX2wzY2NfcmVnaXN0ZXJzKGludCBmZCwKKwkJ CQkgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUgKmVuZ2luZSwKKwkJCQkgdWlu dDMyX3QgY3R4X2lkLAorCQkJCSBib29sIHVzZV9kZWZhdWx0KQoreworCXN0cnVjdCBtb2NzX3Rh YmxlIHRhYmxlOworCXVpbnQzMl90IGRzdF9oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK Kwl1aW50MzJfdCAqcmVhZF9yZWdzOworCWludCBpbmRleDsKKworCWlndF9hc3NlcnQoZ2V0X21v Y3Nfc2V0dGluZ3MoaW50ZWxfZ2V0X2RybV9kZXZpZChmZCksICZ0YWJsZSkpOworCisJaWYgKHVz ZV9kZWZhdWx0KQorCQlkb19yZWFkX3JlZ2lzdGVycyhmZCwKKwkJCQkgIDAsCisJCQkJICBkc3Rf aGFuZGxlLAorCQkJCSAgR0VOOV9MTkNGQ01PQ1MwLAorCQkJCSAgKHRhYmxlLnNpemUgKyAxKSAv IDIsCisJCQkJICBlbmdpbmUtPmV4ZWNfaWQgfCBlbmdpbmUtPmZsYWdzKTsKKwllbHNlCisJCWRv X3JlYWRfcmVnaXN0ZXJzKGZkLAorCQkJCSAgY3R4X2lkLAorCQkJCSAgZHN0X2hhbmRsZSwKKwkJ CQkgIEdFTjlfTE5DRkNNT0NTMCwKKwkJCQkgICh0YWJsZS5zaXplICsgMSkgLyAyLAorCQkJCSAg ZW5naW5lLT5leGVjX2lkIHwgZW5naW5lLT5mbGFncyk7CisKKwlyZWFkX3JlZ3MgPSBnZW1fbW1h cF9fZ3R0KGZkLCBkc3RfaGFuZGxlLCA0MDk2LCBQUk9UX1JFQUQpOworCisJZm9yIChpbmRleCA9 IDA7IGluZGV4IDwgdGFibGUuc2l6ZSAvIDI7IGluZGV4KyspIHsKKwkJaWd0X2Fzc2VydF9lcShy ZWFkX3JlZ3NbaW5kZXhdICYgMHhmZmZmLAorCQkJCXRhYmxlLnRhYmxlW2luZGV4ICogMl0ubDNj Y192YWx1ZSk7CisJCWlndF9hc3NlcnRfZXEocmVhZF9yZWdzW2luZGV4XSA+PiAxNiwKKwkJCQl0 YWJsZS50YWJsZVtpbmRleCAqIDIgKyAxXS5sM2NjX3ZhbHVlKTsKKwl9CisKKwlpZiAodGFibGUu c2l6ZSAmIDB4MDEpCisJCWlndF9hc3NlcnRfZXEocmVhZF9yZWdzW2luZGV4XSAmIDB4ZmZmZiwK KwkJCQl0YWJsZS50YWJsZVtpbmRleCAqIDJdLmwzY2NfdmFsdWUpOworCisJZ2VtX2Nsb3NlKGZk LCBkc3RfaGFuZGxlKTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9jb250ZXh0X21vY3NfdmFsdWVz KGludCBmZCwKKwkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZSAqZW5naW5l LAorCQkJCWJvb2wgdXNlX2RlZmF1bHQpCit7CisJdWludDMyX3QgY3R4X2lkID0gMDsKKworCWln dF9pbmZvKCJUZXN0aW5nIEVuZ2luZTogJXMlc1xuIiwKKwkJCWVuZ2luZS0+bmFtZSwKKwkJCXVz ZV9kZWZhdWx0ID8gIiAoZGVmYXVsdCBjb250ZXh0KSIgOiAiIik7CisKKwlpZiAoIXVzZV9kZWZh dWx0KQorCQljdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOworCisJY2hlY2tfY29udHJv bF9yZWdpc3RlcnMoZmQsIGVuZ2luZSwgY3R4X2lkLCB1c2VfZGVmYXVsdCk7CisJY2hlY2tfbDNj Y19yZWdpc3RlcnMoZmQsIGVuZ2luZSwgY3R4X2lkLCB1c2VfZGVmYXVsdCk7CisKKwlpZiAoIXVz ZV9kZWZhdWx0KQorCQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhfaWQpOworfQorCitzdGF0 aWMgdm9pZCBydW5fdGVzdChpbnQgZmQsIHVuc2lnbmVkIG1vZGUpCit7CisJY29uc3QgaW50IGdl biA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7CisJY29uc3Qgc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUgKmU7CisKKwlpZ3RfcmVxdWlyZShnZW4gPj0gOSk7CisKKwl0 ZXN0X21vY3NfdmFsdWVzKGZkKTsKKworCXN3aXRjaChtb2RlKSB7CisJY2FzZSBOT05FOglicmVh azsKKwljYXNlIFJFU0VUOglpZ3RfZm9yY2VfZ3B1X3Jlc2V0KCk7CWJyZWFrOworCWNhc2UgU1VT UEVORDoJaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUoKTsgYnJlYWs7CisJY2FzZSBISUJF Uk5BVEU6CWlndF9zeXN0ZW1faGliZXJuYXRlX2F1dG9yZXN1bWUoKTsgYnJlYWs7CisJfTsKKwor CS8qCisJICogRG8gcmVuZGVyIGFmdGVyIG90aGVyIGVuZ2luZXMgYXMgb2xkZXIgdmVyc2lvbnMg b2YgY29kZSB3aWxsCisJICogY2F1c2UgdGhlIFJDUyBjb250ZXh0IHRvIHByb2dyYW0gdGhlIHJl Z2lzdGVycyBhbmQgdGhlIHRlc3QKKwkgKiBiZWNvbWVzIGludmFsaWQKKwkgKi8KKwlmb3IgKGUg PSBpbnRlbF9leGVjdXRpb25fZW5naW5lczsgZS0+bmFtZTsgZSsrKQorCQlpZiAoZS0+ZXhlY19p ZCAhPSBJOTE1X0VYRUNfREVGQVVMVCAmJgorCQkgICAgZS0+ZXhlY19pZCAhPSBJOTE1X0VYRUNf UkVOREVSICYmCisJCSAgICBnZW1faGFzX3JpbmcoZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncykp CisJCQl0ZXN0X2NvbnRleHRfbW9jc192YWx1ZXMoZmQsIGUsIHRydWUpOworCisJZm9yIChlID0g aW50ZWxfZXhlY3V0aW9uX2VuZ2luZXM7IGUtPm5hbWU7IGUrKykKKwkJaWYgKGUtPmV4ZWNfaWQg PT0gSTkxNV9FWEVDX1JFTkRFUiAmJgorCQkgICAgZ2VtX2hhc19yaW5nKGZkLCBlLT5leGVjX2lk IHwgZS0+ZmxhZ3MpKSB7CisJCQl0ZXN0X2NvbnRleHRfbW9jc192YWx1ZXMoZmQsIGUsIHRydWUp OworCQkJdGVzdF9jb250ZXh0X21vY3NfdmFsdWVzKGZkLCBlLCBmYWxzZSk7CisJCX0KKworCXRl c3RfbW9jc192YWx1ZXMoZmQpOworfQorCitpZ3RfbWFpbgoreworCWludCBmZDsKKwlzdHJ1Y3Qg cGNpX2RldmljZSAqcGNpX2RldjsKKworCWlndF9maXh0dXJlIHsKKwkJZmQgPSBkcm1fb3Blbl9k cml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7CisJCXBjaV9kZXYgPSBpbnRlbF9nZXRfcGNpX2Rl dmljZSgpOworCQlpZ3RfcmVxdWlyZShwY2lfZGV2KTsKKworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfaW5pdChwY2lfZGV2LCAwKTsKKwl9CisKKwlpZ3Rfc3VidGVzdCgibW9jcy1zZXR0aW5ncyIp CisJCXJ1bl90ZXN0KGZkLCBOT05FKTsKKworCWlndF9zdWJ0ZXN0KCJtb2NzLXJlc2V0IikKKwkJ cnVuX3Rlc3QoZmQsIFJFU0VUKTsKKworCWlndF9zdWJ0ZXN0KCJtb2NzLXN1c3BlbmQiKQorCQly dW5fdGVzdChmZCwgU1VTUEVORCk7CisKKwlpZ3Rfc3VidGVzdCgibW9jcy1oaWJlcm5hdGUiKQor CQlydW5fdGVzdChmZCwgSElCRVJOQVRFKTsKKworCWlndF9maXh0dXJlCisJCWNsb3NlKGZkKTsK K30KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK