From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: =?utf-8?q?=5BPATCH=5D_tests=3A_basic_ring=3C-=3Ecpu_a?= =?utf-8?q?nd_ring=3C-=3Ering_tests?= Date: Thu, 8 Sep 2011 14:04:41 +0200 Message-ID: <1315483481-2367-1-git-send-email-daniel.vetter@ffwll.ch> References: <20110908075236.GA2884@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ww0-f43.google.com (mail-ww0-f43.google.com [74.125.82.43]) by gabe.freedesktop.org (Postfix) with ESMTP id 9E4179F327 for ; Thu, 8 Sep 2011 06:04:40 -0700 (PDT) Received: by wwe32 with SMTP id 32so683808wwe.12 for ; Thu, 08 Sep 2011 06:04:39 -0700 (PDT) In-Reply-To: <20110908075236.GA2884@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter , Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org VXNpbmcgYSBkdW1teSByZWxvYyB0aGF0IGRvZXNuJ3QgbWF0dGVyIHRvIHRyaWNrIHRoZSBrZXJu ZWwgaW50bwpzeW5jaHJvaXppbmcgdGhlIHJpbmdzLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZl dHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KLS0tCkhpIEJlbiwKClRoaXMgaXMgdGhlIHRl c3QgSSd2ZSBoYWQgaW4gbWluZC4gVW5mb3J0dW5hdGVseSB0aGlzIGtpbGxzIG15IHNuYiBtYWNo aW5lCmJvdGggd2l0aCBzZW1hcGhvcmVzPTAgYW5kIHNlbWFwaG9yZXM9MS4gVGhlIHJpbmc8LT5j cHUgc3luYyB0ZXN0cyB0aGF0CmVtcGxveSB0aGUgZXhhY3Qgc2FtZSBiYXRjaGJ1ZmZlciBjb21t YW5kcyB3b3JrIGZsYXdsZXNzLgoKLURhbmllbAogbGliL2ludGVsX2NoaXBzZXQuaCAgICAgICAg ICB8ICAgIDQgKwogdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgICB8ICAgIDIgKwogdGVzdHMv Z2VtX2R1bW15X3JlbG9jX2xvb3AuYyB8ICAxNTIgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiB0ZXN0cy9nZW1fcmluZ19zeW5jX2xvb3AuYyAgIHwgIDEzOCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyOTYg aW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9n ZW1fZHVtbXlfcmVsb2NfbG9vcC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZ2VtX3Jpbmdf c3luY19sb29wLmMKCmRpZmYgLS1naXQgYS9saWIvaW50ZWxfY2hpcHNldC5oIGIvbGliL2ludGVs X2NoaXBzZXQuaAppbmRleCBhMzhmNjYxLi4zNWVkYWY3IDEwMDc1NQotLS0gYS9saWIvaW50ZWxf Y2hpcHNldC5oCisrKyBiL2xpYi9pbnRlbF9jaGlwc2V0LmgKQEAgLTE2OSw2ICsxNjksMTAgQEAK ICNkZWZpbmUgSEFTX0JMVF9SSU5HKGRldmlkKQkoSVNfR0VONihkZXZpZCkgfHwgXAogCQkJCSBJ U19HRU43KGRldmlkKSkKIAorI2RlZmluZSBIQVNfQlNEX1JJTkcoZGV2aWQpCShJU19HRU41KGRl dmlkKSB8fCBcCisJCQkJIElTX0dFTjYoZGV2aWQpIHx8IFwKKwkJCQkgSVNfR0VONyhkZXZpZCkp CisKICNkZWZpbmUgSVNfQlJPQURXQVRFUihkZXZpZCkJKGRldmlkID09IFBDSV9DSElQX0k5NDZf R1ogfHwgXAogCQkJCSBkZXZpZCA9PSBQQ0lfQ0hJUF9JOTY1X0dfMSB8fCBcCiAJCQkJIGRldmlk ID09IFBDSV9DSElQX0k5NjVfUSB8fCBcCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBi L3Rlc3RzL01ha2VmaWxlLmFtCmluZGV4IDhjNTI0NTQuLjQ2ZWM2OTYgMTAwNjQ0Ci0tLSBhL3Rl c3RzL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCkBAIC00Nyw2ICs0Nyw4IEBA IFRFU1RTID0gZ2V0dmVyc2lvbiBcCiAJZ2VtX3N0b3JlZHdfbG9vcF9ic2QgXAogCWdlbV9zdG9y ZWR3X2JhdGNoZXNfbG9vcCBcCiAJZ2VtX3BpcGVfY29udHJvbF9zdG9yZV9sb29wIFwKKwlnZW1f ZHVtbXlfcmVsb2NfbG9vcCBcCisJZ2VtX3Jpbmdfc3luY19sb29wIFwKIAkkKE5VTEwpCiAKIEhB TkcgPSBcCmRpZmYgLS1naXQgYS90ZXN0cy9nZW1fZHVtbXlfcmVsb2NfbG9vcC5jIGIvdGVzdHMv Z2VtX2R1bW15X3JlbG9jX2xvb3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5lMGI2ODAzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZ2VtX2R1bW15X3JlbG9jX2xvb3Au YwpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDExIEludGVsIENvcnBv cmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl CisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoK KyAqIEF1dGhvcnM6CisgKiAgICBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNo PiAoYmFzZWQgb24gZ2VtX3N0b3JlZHdfKi5jKQorICoKKyAqLworCisjaW5jbHVkZSA8c3RkbGli Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxh c3NlcnQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5j bHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90aW1l Lmg+CisjaW5jbHVkZSAiZHJtLmgiCisjaW5jbHVkZSAiaTkxNV9kcm0uaCIKKyNpbmNsdWRlICJk cm10ZXN0LmgiCisjaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgiCisjaW5jbHVkZSAiaW50ZWxfYmF0 Y2hidWZmZXIuaCIKKyNpbmNsdWRlICJpbnRlbF9ncHVfdG9vbHMuaCIKKyNpbmNsdWRlICJpODMw X3JlZy5oIgorCitzdGF0aWMgZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOworc3RydWN0IGludGVs X2JhdGNoYnVmZmVyICpiYXRjaDsKK3N0YXRpYyBkcm1faW50ZWxfYm8gKnRhcmdldF9idWZmZXI7 CisKKy8qCisgKiBUZXN0Y2FzZTogQmFzaWMgY2hlY2sgb2YgcmluZzwtPmNwdSBzeW5jIHVzaW5n IGEgZHVtbXkgcmVsb2MKKyAqLworCisjZGVmaW5lIEdGWF9PUF9QSVBFX0NPTlRST0wJKCgweDM8 PDI5KXwoMHgzPDwyNyl8KDB4Mjw8MjQpfDIpCisjZGVmaW5lICAgUElQRV9DT05UUk9MX1dDX0ZM VVNICSgxPDwxMikKKworc3RhdGljIHZvaWQKK2R1bW15X3JlbG9jX2xvb3AoaW50IHJpbmcpCit7 CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMHgxMDAwMDA7IGkrKykgeworCQlpZiAocmlu ZyA9PSBJOTE1X0VYRUNfUkVOREVSKSB7CisJCQlCRUdJTl9CQVRDSCg0KTsKKwkJCU9VVF9CQVRD SChHRlhfT1BfUElQRV9DT05UUk9MIHwgUElQRV9DT05UUk9MX1dDX0ZMVVNIKTsKKwkJCU9VVF9C QVRDSCgwKTsKKwkJCU9VVF9SRUxPQyh0YXJnZXRfYnVmZmVyLCBJOTE1X0dFTV9ET01BSU5fUkVO REVSLAorCQkJCQlJOTE1X0dFTV9ET01BSU5fUkVOREVSLCAwKTsKKwkJCU9VVF9CQVRDSCgwKTsK KwkJCUFEVkFOQ0VfQkFUQ0goKTsKKwkJfSBlbHNlIHsKKwkJCUJFR0lOX0JBVENIKDQpOworCQkJ T1VUX0JBVENIKE1JX0ZMVVNIX0RXIHwgMik7CisJCQlPVVRfQkFUQ0goMCk7IC8qIHJlc2VydmVk ICovCisJCQlPVVRfUkVMT0ModGFyZ2V0X2J1ZmZlciwgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwK KwkJCQkJSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCk7CisJCQlPVVRfQkFUQ0goMCk7CisJCQlB RFZBTkNFX0JBVENIKCk7CisJCX0KKwkJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfb25fcmluZyhi YXRjaCwgcmluZyk7CisJfQorCisJZHJtX2ludGVsX2JvX21hcCh0YXJnZXRfYnVmZmVyLCAwKTsK KwkvLyBtYXAgdG8gZm9yY2UgY29tcGxldGlvbgorCWRybV9pbnRlbF9ib191bm1hcCh0YXJnZXRf YnVmZmVyKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludCBm ZDsKKwlpbnQgZGV2aWQ7CisKKwlpZiAoYXJnYyAhPSAxKSB7CisJCWZwcmludGYoc3RkZXJyLCAi dXNhZ2U6ICVzXG4iLCBhcmd2WzBdKTsKKwkJZXhpdCgtMSk7CisJfQorCisJZmQgPSBkcm1fb3Bl bl9hbnkoKTsKKwlkZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZmQpOworCWlmICghSEFTX0JM VF9SSU5HKGRldmlkKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIm5vdCAoeWV0KSBpbXBsZW1lbnRl ZCBmb3IgcHJlLXNuYlxuIik7CisJCWdvdG8gb3V0OworCX0KKworCWJ1Zm1nciA9IGRybV9pbnRl bF9idWZtZ3JfZ2VtX2luaXQoZmQsIDQwOTYpOworCWlmICghYnVmbWdyKSB7CisJCWZwcmludGYo c3RkZXJyLCAiZmFpbGVkIHRvIGluaXQgbGliZHJtXG4iKTsKKwkJZXhpdCgtMSk7CisJfQorCWRy bV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShidWZtZ3IpOworCisJYmF0Y2ggPSBpbnRl bF9iYXRjaGJ1ZmZlcl9hbGxvYyhidWZtZ3IsIGRldmlkKTsKKwlpZiAoIWJhdGNoKSB7CisJCWZw cmludGYoc3RkZXJyLCAiZmFpbGVkIHRvIGNyZWF0ZSBiYXRjaCBidWZmZXJcbiIpOworCQlleGl0 KC0xKTsKKwl9CisKKwl0YXJnZXRfYnVmZmVyID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwg InRhcmdldCBibyIsIDQwOTYsIDQwOTYpOworCWlmICghdGFyZ2V0X2J1ZmZlcikgeworCQlmcHJp bnRmKHN0ZGVyciwgImZhaWxlZCB0byBhbGxvYyB0YXJnZXQgYnVmZmVyXG4iKTsKKwkJZXhpdCgt MSk7CisJfQorCisJZnByaW50ZihzdGRlcnIsICJydW5uaW5nIGR1bW15IGxvb3Agb24gcmVuZGVy XG4iKTsKKwlkdW1teV9yZWxvY19sb29wKEk5MTVfRVhFQ19SRU5ERVIpOworCWZwcmludGYoc3Rk ZXJyLCAiZHVtbXkgbG9vcCBydW4gb24gcmVuZGVyIGNvbXBsZXRlZFxuIik7CisKKwlpZiAoIUhB U19CU0RfUklORyhkZXZpZCkpCisJCWdvdG8gc2tpcDsKKworCXNsZWVwKDIpOworCWZwcmludGYo c3RkZXJyLCAicnVubmluZyBkdW1teSBsb29wIG9uIGJzZFxuIik7CisJZHVtbXlfcmVsb2NfbG9v cChJOTE1X0VYRUNfQlNEKTsKKwlmcHJpbnRmKHN0ZGVyciwgImR1bW15IGxvb3AgcnVuIG9uIGJz ZCBjb21wbGV0ZWRcbiIpOworCisJaWYgKCFIQVNfQkxUX1JJTkcoZGV2aWQpKQorCQlnb3RvIHNr aXA7CisKKwlzbGVlcCgyKTsKKwlmcHJpbnRmKHN0ZGVyciwgInJ1bm5pbmcgZHVtbXkgbG9vcCBv biBibHRcbiIpOworCWR1bW15X3JlbG9jX2xvb3AoSTkxNV9FWEVDX0JMVCk7CisJZnByaW50Zihz dGRlcnIsICJkdW1teSBsb29wIHJ1biBvbiBibHQgY29tcGxldGVkXG4iKTsKKworc2tpcDoKKwlk cm1faW50ZWxfYm9fdW5yZWZlcmVuY2UodGFyZ2V0X2J1ZmZlcik7CisJaW50ZWxfYmF0Y2hidWZm ZXJfZnJlZShiYXRjaCk7CisJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7CisKK291 dDoKKwljbG9zZShmZCk7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9y aW5nX3N5bmNfbG9vcC5jIGIvdGVzdHMvZ2VtX3Jpbmdfc3luY19sb29wLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY4OGExZAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Rz L2dlbV9yaW5nX3N5bmNfbG9vcC5jCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0 IMKpIDIwMTEgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQK KyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJ TiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIERhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+IChiYXNlZCBvbiBnZW1fc3RvcmVkd18qLmMpCisgKgorICov CisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0 cmluZy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVk ZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+ CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlICJkcm0uaCIKKyNpbmNsdWRlICJpOTE1 X2RybS5oIgorI2luY2x1ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIK KyNpbmNsdWRlICJpbnRlbF9iYXRjaGJ1ZmZlci5oIgorI2luY2x1ZGUgImludGVsX2dwdV90b29s cy5oIgorI2luY2x1ZGUgImk4MzBfcmVnLmgiCisKK3N0YXRpYyBkcm1faW50ZWxfYnVmbWdyICpi dWZtZ3I7CitzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOworc3RhdGljIGRybV9pbnRl bF9ibyAqdGFyZ2V0X2J1ZmZlcjsKKworLyoKKyAqIFRlc3RjYXNlOiBCYXNpYyBjaGVjayBvZiBy aW5nPC0+cmluZyBzeW5jIHVzaW5nIGEgZHVtbXkgcmVsb2MKKyAqLworCisjZGVmaW5lIEdGWF9P UF9QSVBFX0NPTlRST0wJKCgweDM8PDI5KXwoMHgzPDwyNyl8KDB4Mjw8MjQpfDIpCisjZGVmaW5l ICAgUElQRV9DT05UUk9MX1dDX0ZMVVNICSgxPDwxMikKKworc3RhdGljIHZvaWQKK3N0b3JlX2R3 b3JkX2xvb3AoaW50IHJpbmcpCit7CisJaW50IGk7CisKKwlzcmFuZG9tKDB4ZGVhZGJlZWYpOwor CisJZm9yIChpID0gMDsgaSA8IDB4MTAwOyBpKyspIHsKKwkJaW50IHJpbmcgPSByYW5kb20oKSAl IDM7CisKKwkJaWYgKHJpbmcgPT0gSTkxNV9FWEVDX1JFTkRFUikgeworCQkJQkVHSU5fQkFUQ0go NCk7CisJCQlPVVRfQkFUQ0goR0ZYX09QX1BJUEVfQ09OVFJPTCB8IFBJUEVfQ09OVFJPTF9XQ19G TFVTSCk7CisJCQlPVVRfQkFUQ0goMCk7CisJCQlPVVRfUkVMT0ModGFyZ2V0X2J1ZmZlciwgSTkx NV9HRU1fRE9NQUlOX1JFTkRFUiwKKwkJCQkJSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCk7CisJ CQlPVVRfQkFUQ0goMCk7CisJCQlBRFZBTkNFX0JBVENIKCk7CisJCX0gZWxzZSB7CisJCQlCRUdJ Tl9CQVRDSCg0KTsKKwkJCU9VVF9CQVRDSChNSV9GTFVTSF9EVyB8IDIpOworCQkJT1VUX0JBVENI KDApOyAvKiByZXNlcnZlZCAqLworCQkJT1VUX1JFTE9DKHRhcmdldF9idWZmZXIsIEk5MTVfR0VN X0RPTUFJTl9SRU5ERVIsCisJCQkJCUk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsIDApOworCQkJT1VU X0JBVENIKDApOworCQkJQURWQU5DRV9CQVRDSCgpOworCQl9CisJCWludGVsX2JhdGNoYnVmZmVy X2ZsdXNoX29uX3JpbmcoYmF0Y2gsIHJpbmcpOworCisJCWRybV9pbnRlbF9ib19tYXAodGFyZ2V0 X2J1ZmZlciwgMCk7CisJCS8vIG1hcCB0byBmb3JjZSB3YWl0aW5nIG9uIHJlbmRlcmluZworCQlk cm1faW50ZWxfYm9fdW5tYXAodGFyZ2V0X2J1ZmZlcik7CisJfQorfQorCitpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50IGZkOworCWludCBkZXZpZDsKKworCWlmIChhcmdj ICE9IDEpIHsKKwkJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXNcbiIsIGFyZ3ZbMF0pOworCQll eGl0KC0xKTsKKwl9CisKKwlmZCA9IGRybV9vcGVuX2FueSgpOworCWRldmlkID0gaW50ZWxfZ2V0 X2RybV9kZXZpZChmZCk7CisJaWYgKCFIQVNfQkxUX1JJTkcoZGV2aWQpKSB7CisJCWZwcmludGYo c3RkZXJyLCAiaW50ZXIgcmluZyBjaGVjayBuZWVkcyBnZW42K1xuIik7CisJCWdvdG8gb3V0Owor CX0KKworCisJYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7CisJ aWYgKCFidWZtZ3IpIHsKKwkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8gaW5pdCBsaWJkcm1c biIpOworCQlleGl0KC0xKTsKKwl9CisJZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNl KGJ1Zm1ncik7CisKKwliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJ1Zm1nciwgZGV2 aWQpOworCWlmICghYmF0Y2gpIHsKKwkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8gY3JlYXRl IGJhdGNoIGJ1ZmZlclxuIik7CisJCWV4aXQoLTEpOworCX0KKworCXRhcmdldF9idWZmZXIgPSBk cm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAidGFyZ2V0IGJvIiwgNDA5NiwgNDA5Nik7CisJaWYg KCF0YXJnZXRfYnVmZmVyKSB7CisJCWZwcmludGYoc3RkZXJyLCAiZmFpbGVkIHRvIGFsbG9jIHRh cmdldCBidWZmZXJcbiIpOworCQlleGl0KC0xKTsKKwl9CisKKwlzdG9yZV9kd29yZF9sb29wKEk5 MTVfRVhFQ19SRU5ERVIpOworCisJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKHRhcmdldF9idWZm ZXIpOworCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOworCWRybV9pbnRlbF9idWZtZ3Jf ZGVzdHJveShidWZtZ3IpOworCitvdXQ6CisJY2xvc2UoZmQpOworCisJcmV0dXJuIDA7Cit9Ci0t IAoxLjcuNgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK