From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Packard Subject: [PATCH] Add tests for VK_EXT_calibrated_timestamps [v2] Date: Mon, 15 Oct 2018 14:15:15 -0700 Message-ID: <20181015211515.31787-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: mesa-dev@lists.freedesktop.org Cc: Keith Packard , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org Rml2ZSB0ZXN0czoKCiAxKSBDaGVjayBmb3Igbm9uLW51bGwgZnVuY3Rpb24gcG9pbnRlcnMKIDIp IENoZWNrIGZvciBpbi1yYW5nZSB0aW1lIGRvbWFpbnMKIDMpIENoZWNrIG1vbm90b25pYyBkb21h aW5zIGZvciBjb3JyZWN0IHZhbHVlcwogNCkgQ2hlY2sgY29ycmVsYXRpb24gYmV0d2VlbiBtb25v dG9uaWMgYW5kIGRldmljZSBkb21haW5zCiA1KSBDaGVjayB0byBtYWtlIHN1cmUgdGltZXMgaW4g ZGV2aWNlIGRvbWFpbiBtYXRjaCBxdWV1ZSB0aW1lcwoKU2lnbmVkLW9mZi1ieTogS2VpdGggUGFj a2FyZCA8a2VpdGhwQGtlaXRocC5jb20+Ci0tLQogTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3RzL2Z1bmMvY2FsaWJyYXRlZC10aW1lc3RhbXBz LmMgfCA0NDIgKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0NDMg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0cy9mdW5jL2NhbGlicmF0 ZWQtdGltZXN0YW1wcy5jCgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQpp bmRleCAwY2EzNWJkLi5iYTk4YzYwIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5hbQorKysgYi9NYWtl ZmlsZS5hbQpAQCAtMTEzLDYgKzExMyw3IEBAIGJpbl9jcnVjaWJsZV9TT1VSQ0VTID0gXAogCXNy Yy90ZXN0cy9zdHJlc3MvbG90cy1vZi1zdXJmYWNlLXN0YXRlLmMgXAogCXNyYy90ZXN0cy9zdHJl c3MvYnVmZmVyX2xpbWl0LmMgXAogCXNyYy90ZXN0cy9zZWxmL2NvbmN1cnJlbnQtb3V0cHV0LmMg XAorCXNyYy90ZXN0cy9mdW5jL2NhbGlicmF0ZWQtdGltZXN0YW1wcy5jIFwKIAlzcmMvdXRpbC9j cnVfY2xlYW51cC5jIFwKIAlzcmMvdXRpbC9jcnVfZm9ybWF0LmMgXAogCXNyYy91dGlsL2NydV9p bWFnZS5jIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9mdW5jL2NhbGlicmF0ZWQtdGltZXN0YW1w cy5jIGIvc3JjL3Rlc3RzL2Z1bmMvY2FsaWJyYXRlZC10aW1lc3RhbXBzLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk4MTUwYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0cy9mdW5jL2NhbGlicmF0ZWQtdGltZXN0YW1wcy5jCkBAIC0wLDAgKzEsNDQyIEBACisvKgor ICogQ29weXJpZ2h0IMKpIDIwMTggS2VpdGggUGFja2FyZCA8a2VpdGhwQGtlaXRocC5jb20+Cisg KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisgKiBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor ICovCisKKyNpbmNsdWRlICJ0YXBpL3QuaCIKKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8 bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNkZWZpbmUgR0VUX0RFVklDRV9GVU5DVElP Tl9QVFIobmFtZSkgXAorICAgIFBGTl92ayMjbmFtZSBuYW1lID0gKFBGTl92ayMjbmFtZSl2a0dl dERldmljZVByb2NBZGRyKHRfZGV2aWNlLCAidmsiI25hbWUpCisKKyNkZWZpbmUgR0VUX0lOU1RB TkNFX0ZVTkNUSU9OX1BUUihuYW1lKSBcCisgICAgUEZOX3ZrIyNuYW1lIG5hbWUgPSAoUEZOX3Zr IyNuYW1lKXZrR2V0SW5zdGFuY2VQcm9jQWRkcih0X2luc3RhbmNlLCAidmsiI25hbWUpCisKKy8q IFRlc3QgMTogTWFrZSBzdXJlIHRoZSBmdW5jdGlvbiBwb2ludGVycyBwcm9taXNlZCBieSB0aGUg ZXh0ZW5zaW9uCisgKiBhcmUgdmFsaWQKKyAqLworc3RhdGljIHZvaWQKK3Rlc3RfZnVuY3Modm9p ZCkKK3sKKyAgICB0X3JlcXVpcmVfZXh0KCJWS19FWFRfY2FsaWJyYXRlZF90aW1lc3RhbXBzIik7 CisKKyAgICBHRVRfSU5TVEFOQ0VfRlVOQ1RJT05fUFRSKEdldFBoeXNpY2FsRGV2aWNlQ2FsaWJy YXRlYWJsZVRpbWVEb21haW5zRVhUKTsKKyAgICBHRVRfREVWSUNFX0ZVTkNUSU9OX1BUUihHZXRD YWxpYnJhdGVkVGltZXN0YW1wc0VYVCk7CisKKyAgICB0X2Fzc2VydChHZXRQaHlzaWNhbERldmlj ZUNhbGlicmF0ZWFibGVUaW1lRG9tYWluc0VYVCAhPSBOVUxMKTsKKyAgICB0X2Fzc2VydChHZXRD YWxpYnJhdGVkVGltZXN0YW1wc0VYVCAhPSBOVUxMKTsKK30KKwordGVzdF9kZWZpbmUgeworICAg IC5uYW1lID0gImZ1bmMuY2FsaWJyYXRlZC10aW1lc3RhbXBzLmZ1bmNzIiwKKyAgICAuc3RhcnQg PSB0ZXN0X2Z1bmNzLAorICAgIC5ub19pbWFnZSA9IHRydWUsCit9OworCisvKiBUZXN0IDI6IE1h a2Ugc3VyZSBhbGwgb2YgdGhlIGRvbWFpbnMgb2ZmZXJlZCBieSB0aGUgZHJpdmVyIGFyZSBpbiBy YW5nZQorICovCitzdGF0aWMgdm9pZAordGVzdF9kb21haW5zKHZvaWQpCit7CisgICAgdF9yZXF1 aXJlX2V4dCgiVktfRVhUX2NhbGlicmF0ZWRfdGltZXN0YW1wcyIpOworCisgICAgR0VUX0lOU1RB TkNFX0ZVTkNUSU9OX1BUUihHZXRQaHlzaWNhbERldmljZUNhbGlicmF0ZWFibGVUaW1lRG9tYWlu c0VYVCk7CisgICAgR0VUX0RFVklDRV9GVU5DVElPTl9QVFIoR2V0Q2FsaWJyYXRlZFRpbWVzdGFt cHNFWFQpOworCisgICAgdF9hc3NlcnQoR2V0UGh5c2ljYWxEZXZpY2VDYWxpYnJhdGVhYmxlVGlt ZURvbWFpbnNFWFQgIT0gTlVMTCk7CisgICAgdF9hc3NlcnQoR2V0Q2FsaWJyYXRlZFRpbWVzdGFt cHNFWFQgIT0gTlVMTCk7CisKKyAgICBWa1Jlc3VsdCByZXN1bHQ7CisKKyAgICB1aW50MzJfdCB0 aW1lRG9tYWluQ291bnQ7CisgICAgcmVzdWx0ID0gR2V0UGh5c2ljYWxEZXZpY2VDYWxpYnJhdGVh YmxlVGltZURvbWFpbnNFWFQoCisgICAgICAgIHRfcGh5c2ljYWxfZGV2LAorICAgICAgICAmdGlt ZURvbWFpbkNvdW50LAorICAgICAgICBOVUxMKTsKKyAgICB0X2Fzc2VydChyZXN1bHQgPT0gVktf U1VDQ0VTUyk7CisgICAgdF9hc3NlcnQodGltZURvbWFpbkNvdW50ID4gMCk7CisKKyAgICBWa1Rp bWVEb21haW5FWFQgKnRpbWVEb21haW5zID0gY2FsbG9jKHRpbWVEb21haW5Db3VudCwgc2l6ZW9m IChWa1RpbWVEb21haW5FWFQpKTsKKyAgICB0X2Fzc2VydCh0aW1lRG9tYWlucyAhPSBOVUxMKTsK KworICAgIHJlc3VsdCA9IEdldFBoeXNpY2FsRGV2aWNlQ2FsaWJyYXRlYWJsZVRpbWVEb21haW5z RVhUKAorICAgICAgICB0X3BoeXNpY2FsX2RldiwKKyAgICAgICAgJnRpbWVEb21haW5Db3VudCwK KyAgICAgICAgdGltZURvbWFpbnMpOworCisgICAgdF9hc3NlcnQocmVzdWx0ID09IFZLX1NVQ0NF U1MpOworCisgICAgLyogTWFrZSBzdXJlIGFsbCByZXBvcnRlZCBkb21haW5zIGFyZSB2YWxpZCAq LworICAgIGZvciAodWludDMyX3QgZCA9IDA7IGQgPCB0aW1lRG9tYWluQ291bnQ7IGQrKykgewor ICAgICAgICB0X2Fzc2VydChWS19USU1FX0RPTUFJTl9CRUdJTl9SQU5HRV9FWFQgPD0gdGltZURv bWFpbnNbZF0gJiYKKyAgICAgICAgICAgICAgICAgdGltZURvbWFpbnNbZF0gPD0gVktfVElNRV9E T01BSU5fRU5EX1JBTkdFX0VYVCk7CisgICAgfQorfQorCit0ZXN0X2RlZmluZSB7CisgICAgLm5h bWUgPSAiZnVuYy5jYWxpYnJhdGVkLXRpbWVzdGFtcHMuZG9tYWlucyIsCisgICAgLnN0YXJ0ID0g dGVzdF9kb21haW5zLAorICAgIC5ub19pbWFnZSA9IHRydWUsCit9OworCitzdGF0aWMgdWludDY0 X3QKK2NydWNpYmxlX2Nsb2NrX2dldHRpbWUoVmtUaW1lRG9tYWluRVhUIGRvbWFpbikKK3sKKyAg ICBzdHJ1Y3QgdGltZXNwZWMgY3VycmVudDsKKyAgICBpbnQgcmV0OworICAgIGNsb2NraWRfdCBj bG9ja19pZDsKKworICAgIHN3aXRjaCAoZG9tYWluKSB7CisgICAgY2FzZSBWS19USU1FX0RPTUFJ Tl9DTE9DS19NT05PVE9OSUNfRVhUOgorICAgICAgICBjbG9ja19pZCA9IENMT0NLX01PTk9UT05J QzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWS19USU1FX0RPTUFJTl9DTE9DS19NT05PVE9O SUNfUkFXX0VYVDoKKyAgICAgICAgY2xvY2tfaWQgPSBDTE9DS19NT05PVE9OSUNfUkFXOworICAg ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICB0X2Fzc2VydCgwKTsKKyAgICAgICAg cmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0ID0gY2xvY2tfZ2V0dGltZShjbG9ja19pZCwgJmN1 cnJlbnQpOworICAgIHRfYXNzZXJ0IChyZXQgPj0gMCk7CisgICAgaWYgKHJldCA8IDApCisgICAg ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuICh1aW50NjRfdCkgY3VycmVudC50dl9zZWMgKiAx MDAwMDAwMDAwVUxMICsgY3VycmVudC50dl9uc2VjOworfQorCisvKiBUZXN0IDM6IE1ha2Ugc3Vy ZSBhbnkgbW9ub3RvbmljIGRvbWFpbnMgcmV0dXJuIGFjY3VyYXRlIGRhdGEKKyAqLworc3RhdGlj IHZvaWQKK3Rlc3RfbW9ub3RvbmljKHZvaWQpCit7CisgICAgdF9yZXF1aXJlX2V4dCgiVktfRVhU X2NhbGlicmF0ZWRfdGltZXN0YW1wcyIpOworCisgICAgR0VUX0lOU1RBTkNFX0ZVTkNUSU9OX1BU UihHZXRQaHlzaWNhbERldmljZUNhbGlicmF0ZWFibGVUaW1lRG9tYWluc0VYVCk7CisgICAgR0VU X0RFVklDRV9GVU5DVElPTl9QVFIoR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQpOworCisgICAg dF9hc3NlcnQoR2V0UGh5c2ljYWxEZXZpY2VDYWxpYnJhdGVhYmxlVGltZURvbWFpbnNFWFQgIT0g TlVMTCk7CisgICAgdF9hc3NlcnQoR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQgIT0gTlVMTCk7 CisKKyAgICBWa1Jlc3VsdCByZXN1bHQ7CisKKyAgICB1aW50MzJfdCB0aW1lRG9tYWluQ291bnQ7 CisgICAgcmVzdWx0ID0gR2V0UGh5c2ljYWxEZXZpY2VDYWxpYnJhdGVhYmxlVGltZURvbWFpbnNF WFQoCisgICAgICAgIHRfcGh5c2ljYWxfZGV2LAorICAgICAgICAmdGltZURvbWFpbkNvdW50LAor ICAgICAgICBOVUxMKTsKKyAgICB0X2Fzc2VydChyZXN1bHQgPT0gVktfU1VDQ0VTUyk7CisgICAg dF9hc3NlcnQodGltZURvbWFpbkNvdW50ID4gMCk7CisKKyAgICBWa1RpbWVEb21haW5FWFQgKnRp bWVEb21haW5zID0gY2FsbG9jKHRpbWVEb21haW5Db3VudCwgc2l6ZW9mIChWa1RpbWVEb21haW5F WFQpKTsKKyAgICB0X2Fzc2VydCh0aW1lRG9tYWlucyAhPSBOVUxMKTsKKworICAgIHJlc3VsdCA9 IEdldFBoeXNpY2FsRGV2aWNlQ2FsaWJyYXRlYWJsZVRpbWVEb21haW5zRVhUKAorICAgICAgICB0 X3BoeXNpY2FsX2RldiwKKyAgICAgICAgJnRpbWVEb21haW5Db3VudCwKKyAgICAgICAgdGltZURv bWFpbnMpOworCisgICAgdF9hc3NlcnQocmVzdWx0ID09IFZLX1NVQ0NFU1MpOworCisgICAgLyog VGVzdCBhbGwgbW9ub3RvbmljIGNsb2NrcyAqLworCisgICAgVmtDYWxpYnJhdGVkVGltZXN0YW1w SW5mb0VYVCAgICAgICAgKnRpbWVzdGFtcEluZm8gPQorICAgICAgICBjYWxsb2ModGltZURvbWFp bkNvdW50LCBzaXplb2YgKFZrQ2FsaWJyYXRlZFRpbWVzdGFtcEluZm9FWFQpKTsKKyAgICB0X2Fz c2VydCh0aW1lc3RhbXBJbmZvICE9IE5VTEwpOworCisgICAgdWludDY0X3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKnRpbWVzdGFtcHMgPQorICAgICAgICBjYWxsb2ModGltZURvbWFpbkNv dW50LCBzaXplb2YgKHVpbnQ2NF90KSk7CisgICAgdF9hc3NlcnQodGltZXN0YW1wcyAhPSBOVUxM KTsKKworICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heERldmlhdGlv bjsKKworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAgICAgIGZv ciAodWludDMyX3QgZCA9IDA7IGQgPCB0aW1lRG9tYWluQ291bnQ7IGQrKykgeworICAgICAgICAg ICAgdWludDY0X3QgICAgICAgIGJlZm9yZSwgYWZ0ZXI7CisKKyAgICAgICAgICAgIHN3aXRjaCAo dGltZURvbWFpbnNbZF0pIHsKKyAgICAgICAgICAgIGNhc2UgVktfVElNRV9ET01BSU5fQ0xPQ0tf TU9OT1RPTklDX0VYVDoKKyAgICAgICAgICAgIGNhc2UgVktfVElNRV9ET01BSU5fQ0xPQ0tfTU9O T1RPTklDX1JBV19FWFQ6CisgICAgICAgICAgICAgICAgdGltZXN0YW1wSW5mb1swXSA9IChWa0Nh bGlicmF0ZWRUaW1lc3RhbXBJbmZvRVhUKSB7CisgICAgICAgICAgICAgICAgICAgIC5zVHlwZSA9 IFZLX1NUUlVDVFVSRV9UWVBFX0NBTElCUkFURURfVElNRVNUQU1QX0lORk9fRVhULAorICAgICAg ICAgICAgICAgICAgICAucE5leHQgPSBOVUxMLAorICAgICAgICAgICAgICAgICAgICAudGltZURv bWFpbiA9IHRpbWVEb21haW5zW2RdCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg ICBiZWZvcmUgPSBjcnVjaWJsZV9jbG9ja19nZXR0aW1lKHRpbWVEb21haW5zW2RdKTsKKyAgICAg ICAgICAgICAgICByZXN1bHQgPSBHZXRDYWxpYnJhdGVkVGltZXN0YW1wc0VYVCgKKyAgICAgICAg ICAgICAgICAgICAgdF9kZXZpY2UsCisgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAg ICAgICAgICAgIHRpbWVzdGFtcEluZm8sCisgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcHMs CisgICAgICAgICAgICAgICAgICAgICZtYXhEZXZpYXRpb24KKyAgICAgICAgICAgICAgICAgICAg KTsKKyAgICAgICAgICAgICAgICB0X2Fzc2VydChyZXN1bHQgPT0gVktfU1VDQ0VTUyk7CisgICAg ICAgICAgICAgICAgYWZ0ZXIgPSBjcnVjaWJsZV9jbG9ja19nZXR0aW1lKHRpbWVEb21haW5zW2Rd KTsKKyAgICAgICAgICAgICAgICB0X2Fzc2VydChiZWZvcmUgPD0gdGltZXN0YW1wc1swXSk7Cisg ICAgICAgICAgICAgICAgdF9hc3NlcnQodGltZXN0YW1wc1swXSA8PSBhZnRlcik7CisgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc3RydWN0IHRpbWVzcGVj IHJlcSA9IHsKKyAgICAgICAgICAgIC50dl9zZWMgPSAwLAorICAgICAgICAgICAgLnR2X25zZWMg PSAxMDAwMDAwMDBVTAorICAgICAgICB9OworICAgICAgICBuYW5vc2xlZXAoJnJlcSwgTlVMTCk7 CisgICAgfQorfQorCit0ZXN0X2RlZmluZSB7CisgICAgLm5hbWUgPSAiZnVuYy5jYWxpYnJhdGVk LXRpbWVzdGFtcHMubW9ub3RvbmljIiwKKyAgICAuc3RhcnQgPSB0ZXN0X21vbm90b25pYywKKyAg ICAubm9faW1hZ2UgPSB0cnVlLAorfTsKKworCitzdGF0aWMgdWludDY0X3QKK2RldmljZV90aW1l X3RvX25zKHVpbnQ2NF90IGRldmljZV90aW1lKQoreworICAgIGZsb2F0IHRpbWVzdGFtcF9wZXJp b2QgPSB0X3BoeXNpY2FsX2Rldl9wcm9wcy0+bGltaXRzLnRpbWVzdGFtcFBlcmlvZDsKKyAgICBs b25nIGRvdWJsZSBkdF9sZCA9IChsb25nIGRvdWJsZSkgZGV2aWNlX3RpbWU7CisgICAgbG9uZyBk b3VibGUgdHBfbGQgPSAobG9uZyBkb3VibGUpIHRpbWVzdGFtcF9wZXJpb2Q7CisgICAgbG9uZyBk b3VibGUgbnMgPSBkdF9sZCAqIHRwX2xkOworCisgICAgd2hpbGUgKG5zID49IFVJTlQ2NF9NQVgp CisgICAgICAgIG5zIC09IFVJTlQ2NF9NQVg7CisKKyAgICByZXR1cm4gKHVpbnQ2NF90KSBmbG9v cmwobnMgKyAwLjUpOworfQorCisvKiBUZXN0IDQ6IE1ha2Ugc3VyZSB0aGUgRGV2aWNlIGRvbWFp biBkb2Vzbid0IGRyaWZ0IHJlbGF0aXZlIHRvIGEKKyAqIG1vbm90b25pYyBkb21haW4KKyAqLwor c3RhdGljIHZvaWQKK3Rlc3RfZGV2aWNlKHZvaWQpCit7CisgICAgdF9yZXF1aXJlX2V4dCgiVktf RVhUX2NhbGlicmF0ZWRfdGltZXN0YW1wcyIpOworCisgICAgR0VUX0lOU1RBTkNFX0ZVTkNUSU9O X1BUUihHZXRQaHlzaWNhbERldmljZUNhbGlicmF0ZWFibGVUaW1lRG9tYWluc0VYVCk7CisgICAg R0VUX0RFVklDRV9GVU5DVElPTl9QVFIoR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQpOworCisg ICAgdF9hc3NlcnQoR2V0UGh5c2ljYWxEZXZpY2VDYWxpYnJhdGVhYmxlVGltZURvbWFpbnNFWFQg IT0gTlVMTCk7CisgICAgdF9hc3NlcnQoR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQgIT0gTlVM TCk7CisKKyAgICBWa1Jlc3VsdCByZXN1bHQ7CisKKyAgICB1aW50MzJfdCB0aW1lRG9tYWluQ291 bnQ7CisgICAgcmVzdWx0ID0gR2V0UGh5c2ljYWxEZXZpY2VDYWxpYnJhdGVhYmxlVGltZURvbWFp bnNFWFQoCisgICAgICAgIHRfcGh5c2ljYWxfZGV2LAorICAgICAgICAmdGltZURvbWFpbkNvdW50 LAorICAgICAgICBOVUxMKTsKKyAgICB0X2Fzc2VydChyZXN1bHQgPT0gVktfU1VDQ0VTUyk7Cisg ICAgdF9hc3NlcnQodGltZURvbWFpbkNvdW50ID4gMCk7CisKKyAgICBWa1RpbWVEb21haW5FWFQg KnRpbWVEb21haW5zID0gY2FsbG9jKHRpbWVEb21haW5Db3VudCwgc2l6ZW9mIChWa1RpbWVEb21h aW5FWFQpKTsKKyAgICB0X2Fzc2VydCh0aW1lRG9tYWlucyAhPSBOVUxMKTsKKworICAgIHJlc3Vs dCA9IEdldFBoeXNpY2FsRGV2aWNlQ2FsaWJyYXRlYWJsZVRpbWVEb21haW5zRVhUKAorICAgICAg ICB0X3BoeXNpY2FsX2RldiwKKyAgICAgICAgJnRpbWVEb21haW5Db3VudCwKKyAgICAgICAgdGlt ZURvbWFpbnMpOworCisgICAgdF9hc3NlcnQocmVzdWx0ID09IFZLX1NVQ0NFU1MpOworCisgICAg LyogVGVzdCBkZXZpY2UgY2xvY2sgKi8KKworCisgICAgLyogUGljayBhIG1vbm90b25pYyBkb21h aW4gdG8gdGVzdCBhZ2FpbnN0LiBQcmVmZXIgTU9OT1RPTklDX1JBVyAqLworICAgIFZrVGltZURv bWFpbkVYVCAgICAgbW9ub3RvbmljRG9tYWluID0gVktfVElNRV9ET01BSU5fTUFYX0VOVU1fRVhU OworICAgIGJvb2wgICAgICAgICAgICAgICAgZm91bmREZXZpY2VEb21haW4gPSBmYWxzZTsKKwor ICAgIGZvciAodWludDMyX3QgZCA9IDA7IGQgPCB0aW1lRG9tYWluQ291bnQ7IGQrKykgeworICAg ICAgICBzd2l0Y2ggKHRpbWVEb21haW5zW2RdKSB7CisgICAgICAgIGNhc2UgVktfVElNRV9ET01B SU5fQ0xPQ0tfTU9OT1RPTklDX0VYVDoKKyAgICAgICAgICAgIGlmIChtb25vdG9uaWNEb21haW4g PT0gVktfVElNRV9ET01BSU5fTUFYX0VOVU1fRVhUKQorICAgICAgICAgICAgICAgIG1vbm90b25p Y0RvbWFpbiA9IHRpbWVEb21haW5zW2RdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh c2UgVktfVElNRV9ET01BSU5fQ0xPQ0tfTU9OT1RPTklDX1JBV19FWFQ6CisgICAgICAgICAgICBt b25vdG9uaWNEb21haW4gPSB0aW1lRG9tYWluc1tkXTsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICBjYXNlIFZLX1RJTUVfRE9NQUlOX0RFVklDRV9FWFQ6CisgICAgICAgICAgICBmb3VuZERl dmljZURvbWFpbiA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgdF9hc3NlcnQoZm91 bmREZXZpY2VEb21haW4pOworICAgIHRfYXNzZXJ0KG1vbm90b25pY0RvbWFpbiAhPSBWS19USU1F X0RPTUFJTl9NQVhfRU5VTV9FWFQpOworCisgICAgVmtDYWxpYnJhdGVkVGltZXN0YW1wSW5mb0VY VCAgICAgICAgdGltZXN0YW1wSW5mb1syXSA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgLnNU eXBlID0gVktfU1RSVUNUVVJFX1RZUEVfQ0FMSUJSQVRFRF9USU1FU1RBTVBfSU5GT19FWFQsCisg ICAgICAgICAgICAucE5leHQgPSBOVUxMLAorICAgICAgICAgICAgLnRpbWVEb21haW4gPSBWS19U SU1FX0RPTUFJTl9ERVZJQ0VfRVhUCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAg IC5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NBTElCUkFURURfVElNRVNUQU1QX0lORk9fRVhU LAorICAgICAgICAgICAgLnBOZXh0ID0gTlVMTCwKKyAgICAgICAgICAgIC50aW1lRG9tYWluID0g bW9ub3RvbmljRG9tYWluLAorICAgICAgICB9CisgICAgfTsKKyAgICB1aW50NjRfdCAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBzX3N0YXJ0WzJdOworICAgIHVpbnQ2NF90ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZV90aW1lX3N0YXJ0OworICAgIHVpbnQ2NF90 ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcHNbMl07CisgICAgdWludDY0X3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX3RpbWU7CisgICAgdWludDY0X3QgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2RldmlhdGlvbl9zdGFydDsKKyAgICB1aW50NjRf dCAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZGV2aWF0aW9uOworCisgICAgcmVzdWx0 ID0gR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQoCisgICAgICAgIHRfZGV2aWNlLAorICAgICAg ICAyLAorICAgICAgICB0aW1lc3RhbXBJbmZvLAorICAgICAgICB0aW1lc3RhbXBzX3N0YXJ0LAor ICAgICAgICAmbWF4X2RldmlhdGlvbl9zdGFydAorICAgICAgICApOworICAgIHRfYXNzZXJ0KHJl c3VsdCA9PSBWS19TVUNDRVNTKTsKKworICAgIGRldmljZV90aW1lX3N0YXJ0ID0gZGV2aWNlX3Rp bWVfdG9fbnModGltZXN0YW1wc19zdGFydFswXSk7CisKKyAgICAvKiBNYWtlIHN1cmUgZGV2aWNl IHRpbWUgZG9lc24ndCBkcmlmdCByZWxhdGl2ZSB0byBtb25vdG9uaWMgdGltZSBieSBtb3JlIHRo YW4KKyAgICAgKiB0aGF0IHByb21pc2VkIGJ5IHRoZSBkcml2ZXIKKyAgICAgKi8KKyAgICBmb3Ig KHVpbnQzMl90IGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgICByZXN1bHQgPSBHZXRDYWxp YnJhdGVkVGltZXN0YW1wc0VYVCgKKyAgICAgICAgICAgIHRfZGV2aWNlLAorICAgICAgICAgICAg MiwKKyAgICAgICAgICAgIHRpbWVzdGFtcEluZm8sCisgICAgICAgICAgICB0aW1lc3RhbXBzLAor ICAgICAgICAgICAgJm1heF9kZXZpYXRpb24KKyAgICAgICAgICAgICk7CisKKyAgICAgICAgdF9h c3NlcnQocmVzdWx0ID09IFZLX1NVQ0NFU1MpOworCisgICAgICAgIGRldmljZV90aW1lID0gZGV2 aWNlX3RpbWVfdG9fbnModGltZXN0YW1wc1swXSk7CisKKyAgICAgICAgdWludDY0X3QgICAgICAg IGRldmljZV9kZWx0YSA9IGRldmljZV90aW1lIC0gZGV2aWNlX3RpbWVfc3RhcnQ7CisgICAgICAg IHVpbnQ2NF90ICAgICAgICBtb25vX2RlbHRhID0gdGltZXN0YW1wc1sxXSAtIHRpbWVzdGFtcHNf c3RhcnRbMV07CisKKyAgICAgICAgdWludDY0X3QgICAgICAgIGRpZmZlcmVuY2UgPSBkZXZpY2Vf ZGVsdGEgPiBtb25vX2RlbHRhID8gZGV2aWNlX2RlbHRhIC0gbW9ub19kZWx0YSA6IG1vbm9fZGVs dGEgLSBkZXZpY2VfZGVsdGE7CisKKyAgICAgICAgdF9hc3NlcnQgKGRpZmZlcmVuY2UgPD0gbWF4 X2RldmlhdGlvbl9zdGFydCArIG1heF9kZXZpYXRpb24pOworCisgICAgICAgIHN0cnVjdCB0aW1l c3BlYyByZXEgPSB7CisgICAgICAgICAgICAudHZfc2VjID0gMCwKKyAgICAgICAgICAgIC50dl9u c2VjID0gMTAwMDAwMDAwVUwKKyAgICAgICAgfTsKKyAgICAgICAgbmFub3NsZWVwKCZyZXEsIE5V TEwpOworICAgIH0KK30KKwordGVzdF9kZWZpbmUgeworICAgIC5uYW1lID0gImZ1bmMuY2FsaWJy YXRlZC10aW1lc3RhbXBzLmRldmljZSIsCisgICAgLnN0YXJ0ID0gdGVzdF9kZXZpY2UsCisgICAg Lm5vX2ltYWdlID0gdHJ1ZSwKK307CisKK3N0YXRpYyB1aW50NjRfdAorZ2V0X3RpbWVzdGFtcHMo dm9pZCkKK3sKKyAgICBWa1F1ZXJ5UG9vbCBwb29sID0gcW9DcmVhdGVRdWVyeVBvb2wodF9kZXZp Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVR5cGUg PSBWS19RVUVSWV9UWVBFX1RJTUVTVEFNUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnF1ZXJ5Q291bnQgPSAxKTsKKworICAgIFZrQ29tbWFuZEJ1ZmZlciBjbWRC dWZmZXIgPSBxb0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcih0X2RldmljZSwgdF9jbWRfcG9vbCk7Cisg ICAgcW9CZWdpbkNvbW1hbmRCdWZmZXIoY21kQnVmZmVyKTsKKyAgICB2a0NtZFdyaXRlVGltZXN0 YW1wKGNtZEJ1ZmZlciwgVktfUElQRUxJTkVfU1RBR0VfVE9QX09GX1BJUEVfQklULCBwb29sLCAw KTsKKyAgICBxb0VuZENvbW1hbmRCdWZmZXIoY21kQnVmZmVyKTsKKworICAgIHFvUXVldWVTdWJt aXQodF9xdWV1ZSwgMSwgJmNtZEJ1ZmZlciwgVktfTlVMTF9IQU5ETEUpOworCisgICAgcW9RdWV1 ZVdhaXRJZGxlKHRfcXVldWUpOworCisgICAgdWludDY0X3QgcmVzdWx0c1sxXTsKKyAgICB2a0dl dFF1ZXJ5UG9vbFJlc3VsdHModF9kZXZpY2UsIHBvb2wsIDAsIDEsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVvZihyZXN1bHRzKSwgcmVzdWx0cywgc2l6ZW9mIChyZXN1bHRzWzBdKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgVktfUVVFUllfUkVTVUxUXzY0X0JJVCk7CisgICAg cmV0dXJuIHJlc3VsdHNbMF07Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X2NvbW1hbmQodm9pZCkK K3sKKyAgICB0X3JlcXVpcmVfZXh0KCJWS19FWFRfY2FsaWJyYXRlZF90aW1lc3RhbXBzIik7CisK KyAgICBHRVRfSU5TVEFOQ0VfRlVOQ1RJT05fUFRSKEdldFBoeXNpY2FsRGV2aWNlQ2FsaWJyYXRl YWJsZVRpbWVEb21haW5zRVhUKTsKKyAgICBHRVRfREVWSUNFX0ZVTkNUSU9OX1BUUihHZXRDYWxp YnJhdGVkVGltZXN0YW1wc0VYVCk7CisKKyAgICB0X2Fzc2VydChHZXRQaHlzaWNhbERldmljZUNh bGlicmF0ZWFibGVUaW1lRG9tYWluc0VYVCAhPSBOVUxMKTsKKyAgICB0X2Fzc2VydChHZXRDYWxp YnJhdGVkVGltZXN0YW1wc0VYVCAhPSBOVUxMKTsKKworICAgIFZrUmVzdWx0IHJlc3VsdDsKKwor ICAgIFZrQ2FsaWJyYXRlZFRpbWVzdGFtcEluZm9FWFQgICAgICAgIHRpbWVzdGFtcEluZm9bMV0g PSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIC5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NB TElCUkFURURfVElNRVNUQU1QX0lORk9fRVhULAorICAgICAgICAgICAgLnBOZXh0ID0gTlVMTCwK KyAgICAgICAgICAgIC50aW1lRG9tYWluID0gVktfVElNRV9ET01BSU5fREVWSUNFX0VYVAorICAg ICAgICB9LAorICAgIH07CisKKyAgICBmb3IgKHVpbnQzMl90IHQgPSAwOyB0IDwgMTA7IHQrKykg eworICAgICAgICB1aW50NjRfdCAgICBkZXZpY2VfdGltZV9iZWZvcmU7CisgICAgICAgIHVpbnQ2 NF90ICAgIGRldmljZV90aW1lX2FmdGVyOworICAgICAgICB1aW50NjRfdCAgICBtYXhfZGV2aWF0 aW9uOworCisgICAgICAgIHJlc3VsdCA9IEdldENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUKAorICAg ICAgICAgICAgdF9kZXZpY2UsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgdGltZXN0YW1w SW5mbywKKyAgICAgICAgICAgICZkZXZpY2VfdGltZV9iZWZvcmUsCisgICAgICAgICAgICAmbWF4 X2RldmlhdGlvbik7CisgICAgICAgIHRfYXNzZXJ0IChyZXN1bHQgPT0gVktfU1VDQ0VTUyk7CisK KyAgICAgICAgdWludDY0X3QgICAgcXVldWVfdGltZTsKKworICAgICAgICBxdWV1ZV90aW1lID0g Z2V0X3RpbWVzdGFtcHMoKTsKKworICAgICAgICByZXN1bHQgPSBHZXRDYWxpYnJhdGVkVGltZXN0 YW1wc0VYVCgKKyAgICAgICAgICAgIHRfZGV2aWNlLAorICAgICAgICAgICAgMSwKKyAgICAgICAg ICAgIHRpbWVzdGFtcEluZm8sCisgICAgICAgICAgICAmZGV2aWNlX3RpbWVfYWZ0ZXIsCisgICAg ICAgICAgICAmbWF4X2RldmlhdGlvbik7CisgICAgICAgIHRfYXNzZXJ0IChyZXN1bHQgPT0gVktf U1VDQ0VTUyk7CisKKyAgICAgICAgcHJpbnRmKCJiZWZvcmUgJWx1IHF1ZXVlICVsdSAoJWxkKSBh ZnRlciAlbHUgKCVsZClcbiIsCisgICAgICAgICAgICAgICBkZXZpY2VfdGltZV90b19ucyhkZXZp Y2VfdGltZV9iZWZvcmUpLAorICAgICAgICAgICAgICAgZGV2aWNlX3RpbWVfdG9fbnMocXVldWVf dGltZSksCisgICAgICAgICAgICAgICAoaW50NjRfdCkgKGRldmljZV90aW1lX3RvX25zKHF1ZXVl X3RpbWUpIC0gZGV2aWNlX3RpbWVfdG9fbnMoZGV2aWNlX3RpbWVfYmVmb3JlKSksCisgICAgICAg ICAgICAgICBkZXZpY2VfdGltZV90b19ucyhkZXZpY2VfdGltZV9hZnRlciksCisgICAgICAgICAg ICAgICAoaW50NjRfdCkgKGRldmljZV90aW1lX3RvX25zKGRldmljZV90aW1lX2FmdGVyKSAtIGRl dmljZV90aW1lX3RvX25zKGRldmljZV90aW1lX2JlZm9yZSkpKTsKKworICAgICAgICB0X2Fzc2Vy dChkZXZpY2VfdGltZV9iZWZvcmUgPD0gcXVldWVfdGltZSk7CisgICAgICAgIHRfYXNzZXJ0KHF1 ZXVlX3RpbWUgPD0gZGV2aWNlX3RpbWVfYWZ0ZXIpOworICAgICAgICBzdHJ1Y3QgdGltZXNwZWMg cmVxID0geworICAgICAgICAgICAgLnR2X3NlYyA9IDAsCisgICAgICAgICAgICAudHZfbnNlYyA9 IDEwMDAwMDAwMFVMCisgICAgICAgIH07CisgICAgICAgIG5hbm9zbGVlcCgmcmVxLCBOVUxMKTsK KyAgICB9Cit9CisKK3Rlc3RfZGVmaW5lIHsKKyAgICAubmFtZSA9ICJmdW5jLmNhbGlicmF0ZWQt dGltZXN0YW1wcy5jb21tYW5kIiwKKyAgICAuc3RhcnQgPSB0ZXN0X2NvbW1hbmQsCisgICAgLm5v X2ltYWdlID0gdHJ1ZSwKK307Ci0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=