From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Liviu Dudau Date: Tue, 15 Jan 2019 17:47:43 +0000 Message-Id: <20190115174747.3138-3-liviu.dudau@arm.com> In-Reply-To: <20190115174747.3138-1-liviu.dudau@arm.com> References: <20190115174747.3138-1-liviu.dudau@arm.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v5 2/6] kms_writeback: Add initial writeback 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: Brian Starkey Cc: Boris Brezillon , Petri Latvala , Intel GFX ML , IGT GPU Tools , Daniel Vetter List-ID: RnJvbTogQnJpYW4gU3RhcmtleSA8YnJpYW4uc3RhcmtleUBhcm0uY29tPgoKQWRkIHRlc3RzIGZv ciB0aGUgV1JJVEVCQUNLX1BJWEVMX0ZPUk1BVFMsIFdSSVRFQkFDS19PVVRfRkVOQ0VfUFRSIGFu ZApXUklURUJBQ0tfRkJfSUQgcHJvcGVydGllcyBvbiB3cml0ZWJhY2sgY29ubmVjdG9ycywgZW5z dXJpbmcgdGhlaXIKYmVoYXZpb3VyIGlzIGNvcnJlY3QuCgpTaWduZWQtb2ZmLWJ5OiBCcmlhbiBT dGFya2V5IDxicmlhbi5zdGFya2V5QGFybS5jb20+CltyZWJhc2VkIGFuZCB1cGRhdGVkIGRvX3dy aXRlYmFja190ZXN0KCkgZnVuY3Rpb24gdG8gYWRkcmVzcyBmZWVkYmFja10KU2lnbmVkLW9mZi1i eTogTGl2aXUgRHVkYXUgPGxpdml1LmR1ZGF1QGFybS5jb20+Ci0tLQogdGVzdHMvTWFrZWZpbGUu c291cmNlcyB8ICAgMSArCiB0ZXN0cy9rbXNfd3JpdGViYWNrLmMgIHwgMzE0ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgIHwg ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgMzE2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCB0ZXN0cy9rbXNfd3JpdGViYWNrLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCA1MTllYWM3OTIuLjQ0MzhkMjE2 NSAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmls ZS5zb3VyY2VzCkBAIC05MCw2ICs5MCw3IEBAIFRFU1RTX3Byb2dzID0gXAogCWttc191bml2ZXJz YWxfcGxhbmUgXAogCWttc192YmxhbmsgXAogCWttc19zZXF1ZW5jZSBcCisJa21zX3dyaXRlYmFj ayBcCiAJbWV0YV90ZXN0IFwKIAlwZXJmIFwKIAlwZXJmX3BtdSBcCmRpZmYgLS1naXQgYS90ZXN0 cy9rbXNfd3JpdGViYWNrLmMgYi90ZXN0cy9rbXNfd3JpdGViYWNrLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwLi42NmVmNDhhNmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0 cy9rbXNfd3JpdGViYWNrLmMKQEAgLTAsMCArMSwzMTQgQEAKKy8qCisgKiAoQykgQ09QWVJJR0hU IDIwMTcgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSA8ZXJybm8u aD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxz dHJpbmcuaD4KKworI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUgImlndF9jb3JlLmgiCisjaW5j bHVkZSAiaWd0X2ZiLmgiCisKK3N0YXRpYyBkcm1Nb2RlUHJvcGVydHlCbG9iUmVzICpnZXRfd3Jp dGViYWNrX2Zvcm1hdHNfYmxvYihpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKK3sKKwlkcm1Nb2RlUHJv cGVydHlCbG9iUmVzICpibG9iID0gTlVMTDsKKwl1aW50NjRfdCBibG9iX2lkOworCWludCByZXQ7 CisKKwlyZXQgPSBrbXN0ZXN0X2dldF9wcm9wZXJ0eShvdXRwdXQtPmRpc3BsYXktPmRybV9mZCwK KwkJCQkgICBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3ItPmNvbm5lY3Rvcl9pZCwKKwkJCQkgICBE Uk1fTU9ERV9PQkpFQ1RfQ09OTkVDVE9SLAorCQkJCSAgIGlndF9jb25uZWN0b3JfcHJvcF9uYW1l c1tJR1RfQ09OTkVDVE9SX1dSSVRFQkFDS19QSVhFTF9GT1JNQVRTXSwKKwkJCQkgICBOVUxMLCAm YmxvYl9pZCwgTlVMTCk7CisJaWYgKHJldCkKKwkJYmxvYiA9IGRybU1vZGVHZXRQcm9wZXJ0eUJs b2Iob3V0cHV0LT5kaXNwbGF5LT5kcm1fZmQsIGJsb2JfaWQpOworCisJaWd0X2Fzc2VydChibG9i KTsKKworCXJldHVybiBibG9iOworfQorCitzdGF0aWMgYm9vbCBjaGVja193cml0ZWJhY2tfY29u ZmlnKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGlndF9vdXRwdXRfdCAqb3V0cHV0KQoreworCWln dF9mYl90IGlucHV0X2ZiLCBvdXRwdXRfZmI7CisJaWd0X3BsYW5lX3QgKnBsYW5lOworCXVpbnQz Ml90IHdyaXRlYmFja19mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4OworCXVpbnQ2NF90IHRp bGluZyA9IGlndF9mYl9tb2RfdG9fdGlsaW5nKDApOworCWludCB3aWR0aCwgaGVpZ2h0LCByZXQ7 CisJZHJtTW9kZU1vZGVJbmZvIG92ZXJyaWRlX21vZGUgPSB7CisJCS5jbG9jayA9IDI1MTc1LAor CQkuaGRpc3BsYXkgPSA2NDAsCisJCS5oc3luY19zdGFydCA9IDY1NiwKKwkJLmhzeW5jX2VuZCA9 IDc1MiwKKwkJLmh0b3RhbCA9IDgwMCwKKwkJLmhza2V3ID0gMCwKKwkJLnZkaXNwbGF5ID0gNDgw LAorCQkudnN5bmNfc3RhcnQgPSA0OTAsCisJCS52c3luY19lbmQgPSA0OTIsCisJCS52dG90YWwg PSA1MjUsCisJCS52c2NhbiA9IDAsCisJCS52cmVmcmVzaCA9IDYwLAorCQkuZmxhZ3MgPSBEUk1f TU9ERV9GTEFHX05IU1lOQyB8IERSTV9NT0RFX0ZMQUdfTlZTWU5DLAorCQkubmFtZSA9IHsiNjQw eDQ4MC02MCJ9LAorCX07CisJaWd0X291dHB1dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgJm92ZXJy aWRlX21vZGUpOworCisJd2lkdGggPSBvdmVycmlkZV9tb2RlLmhkaXNwbGF5OworCWhlaWdodCA9 IG92ZXJyaWRlX21vZGUudmRpc3BsYXk7CisKKwlyZXQgPSBpZ3RfY3JlYXRlX2ZiKGRpc3BsYXkt PmRybV9mZCwgd2lkdGgsIGhlaWdodCwgRFJNX0ZPUk1BVF9YUkdCODg4OCwgdGlsaW5nLCAmaW5w dXRfZmIpOworCWlndF9hc3NlcnQocmV0ID49IDApOworCisJcmV0ID0gaWd0X2NyZWF0ZV9mYihk aXNwbGF5LT5kcm1fZmQsIHdpZHRoLCBoZWlnaHQsIHdyaXRlYmFja19mb3JtYXQsIHRpbGluZywg Jm91dHB1dF9mYik7CisJaWd0X2Fzc2VydChyZXQgPj0gMCk7CisKKwlwbGFuZSA9IGlndF9vdXRw dXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlpZ3Rf cGxhbmVfc2V0X2ZiKHBsYW5lLCAmaW5wdXRfZmIpOworCWlndF9vdXRwdXRfc2V0X3dyaXRlYmFj a19mYihvdXRwdXQsICZvdXRwdXRfZmIpOworCisJcmV0ID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1p dF9hdG9taWMoZGlzcGxheSwgRFJNX01PREVfQVRPTUlDX1RFU1RfT05MWSB8CisJCQkJCSAgICBE Uk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7CisJaWd0X3BsYW5lX3NldF9mYihw bGFuZSwgTlVMTCk7CisJaWd0X3JlbW92ZV9mYihkaXNwbGF5LT5kcm1fZmQsICZpbnB1dF9mYik7 CisJaWd0X3JlbW92ZV9mYihkaXNwbGF5LT5kcm1fZmQsICZvdXRwdXRfZmIpOworCisJcmV0dXJu ICFyZXQ7Cit9CisKK3N0YXRpYyBpZ3Rfb3V0cHV0X3QgKmttc193cml0ZWJhY2tfZ2V0X291dHB1 dChpZ3RfZGlzcGxheV90ICpkaXNwbGF5KQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8 IGRpc3BsYXktPm5fb3V0cHV0czsgaSsrKSB7CisJCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gJmRp c3BsYXktPm91dHB1dHNbaV07CisJCWludCBqOworCisJCWlmIChvdXRwdXQtPmNvbmZpZy5jb25u ZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spCisJ CQljb250aW51ZTsKKworCQlrbXN0ZXN0X2ZvcmNlX2Nvbm5lY3RvcihkaXNwbGF5LT5kcm1fZmQs IG91dHB1dC0+Y29uZmlnLmNvbm5lY3RvciwgRk9SQ0VfQ09OTkVDVE9SX09OKTsKKworCQlmb3Ig KGogPSAwOyBqIDwgaWd0X2Rpc3BsYXlfZ2V0X25fcGlwZXMoZGlzcGxheSk7IGorKykgeworCQkJ aWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIGopOworCisJCQlpZiAoY2hlY2tfd3JpdGViYWNr X2NvbmZpZyhkaXNwbGF5LCBvdXRwdXQpKSB7CisJCQkJaWd0X2RlYnVnKCJVc2luZyBjb25uZWN0 b3IgJXU6JXMgb24gcGlwZSAlZFxuIiwKKwkJCQkJICBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3It PmNvbm5lY3Rvcl9pZCwKKwkJCQkJICBvdXRwdXQtPm5hbWUsIGopOworCQkJCXJldHVybiBvdXRw dXQ7CisJCQl9CisJCX0KKworCQkvKiBSZXN0b3JlIGFueSBjb25uZWN0b3JzIHdlIGRvbid0IHVz ZSwgc28gd2UgZG9uJ3QgdHJpcCBvbiB0aGVtIGxhdGVyICovCisJCWttc3Rlc3RfZm9yY2VfY29u bmVjdG9yKGRpc3BsYXktPmRybV9mZCwgb3V0cHV0LT5jb25maWcuY29ubmVjdG9yLCBGT1JDRV9D T05ORUNUT1JfVU5TUEVDSUZJRUQpOworCX0KKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMg dm9pZCBjaGVja193cml0ZWJhY2tfZmJfaWQoaWd0X291dHB1dF90ICpvdXRwdXQpCit7CisJdWlu dDY0X3QgY2hlY2tfZmJfaWQ7CisKKwljaGVja19mYl9pZCA9IGlndF9vdXRwdXRfZ2V0X3Byb3Ao b3V0cHV0LCBJR1RfQ09OTkVDVE9SX1dSSVRFQkFDS19GQl9JRCk7CisJaWd0X2Fzc2VydChjaGVj a19mYl9pZCA9PSAwKTsKK30KKworc3RhdGljIGludCBkb193cml0ZWJhY2tfdGVzdChpZ3Rfb3V0 cHV0X3QgKm91dHB1dCwgdWludDMyX3QgZmxhZ3MsCisJCQkgICAgICB1aW50MzJfdCBmYl9pZCwg aW50MzJfdCAqb3V0X2ZlbmNlX3B0ciwKKwkJCSAgICAgIGJvb2wgcHRyX3ZhbGlkKQoreworCWlu dCByZXQ7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91dHB1dC0+ZGlzcGxheTsKKwlzdHJ1 Y3Qga21zdGVzdF9jb25uZWN0b3JfY29uZmlnICpjb25maWcgPSAmb3V0cHV0LT5jb25maWc7CisK KwlpZ3Rfb3V0cHV0X3NldF9wcm9wX3ZhbHVlKG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9DUlRDX0lE LCBjb25maWctPmNydGMtPmNydGNfaWQpOworCWlndF9vdXRwdXRfc2V0X3Byb3BfdmFsdWUob3V0 cHV0LCBJR1RfQ09OTkVDVE9SX1dSSVRFQkFDS19GQl9JRCwgZmJfaWQpOworCWlndF9vdXRwdXRf c2V0X3Byb3BfdmFsdWUob3V0cHV0LCBJR1RfQ09OTkVDVE9SX1dSSVRFQkFDS19PVVRfRkVOQ0Vf UFRSLCAodWludDY0X3Qpb3V0X2ZlbmNlX3B0cik7CisKKwlpZiAocHRyX3ZhbGlkKQorCQkqb3V0 X2ZlbmNlX3B0ciA9IDA7CisKKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYyhk aXNwbGF5LCBmbGFncywgTlVMTCk7CisKKwlpZiAocHRyX3ZhbGlkKQorCQlpZ3RfYXNzZXJ0KCpv dXRfZmVuY2VfcHRyID09IC0xKTsKKworCS8qIFdSSVRFQkFDS19GQl9JRCBtdXN0IGFsd2F5cyBy ZWFkIGFzIHplcm8gKi8KKwljaGVja193cml0ZWJhY2tfZmJfaWQob3V0cHV0KTsKKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRfb3V0X2ZlbmNlKGlndF9vdXRwdXRfdCAq b3V0cHV0LCBpZ3RfZmJfdCAqdmFsaWRfZmIsIGlndF9mYl90ICppbnZhbGlkX2ZiKQoreworCWlu dCBpLCByZXQ7CisJaW50MzJfdCBvdXRfZmVuY2U7CisJc3RydWN0IHsKKwkJdWludDMyX3QgZmJf aWQ7CisJCWJvb2wgcHRyX3ZhbGlkOworCQlpbnQzMl90ICpvdXRfZmVuY2VfcHRyOworCX0gaW52 YWxpZF90ZXN0c1tdID0geworCQl7CisJCQkvKiBObyBvdXRwdXQgYnVmZmVyLCBidXQgdGhlIFdS SVRFQkFDS19PVVRfRkVOQ0VfUFRSIHNldC4gKi8KKwkJCS5mYl9pZCA9IDAsCisJCQkucHRyX3Zh bGlkID0gdHJ1ZSwKKwkJCS5vdXRfZmVuY2VfcHRyID0gJm91dF9mZW5jZSwKKwkJfSwKKwkJewor CQkJLyogSW52YWxpZCBvdXRwdXQgYnVmZmVyLiAqLworCQkJLmZiX2lkID0gaW52YWxpZF9mYi0+ ZmJfaWQsCisJCQkucHRyX3ZhbGlkID0gdHJ1ZSwKKwkJCS5vdXRfZmVuY2VfcHRyID0gJm91dF9m ZW5jZSwKKwkJfSwKKwkJeworCQkJLyogSW52YWxpZCBXUklURUJBQ0tfT1VUX0ZFTkNFX1BUUi4g Ki8KKwkJCS5mYl9pZCA9IHZhbGlkX2ZiLT5mYl9pZCwKKwkJCS5wdHJfdmFsaWQgPSBmYWxzZSwK KwkJCS5vdXRfZmVuY2VfcHRyID0gKGludDMyX3QgKikweDgsCisJCX0sCisJfTsKKworCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGludmFsaWRfdGVzdHMpOyBpKyspIHsKKwkJcmV0ID0gZG9f d3JpdGViYWNrX3Rlc3Qob3V0cHV0LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwKKwkJ CQkJaW52YWxpZF90ZXN0c1tpXS5mYl9pZCwKKwkJCQkJaW52YWxpZF90ZXN0c1tpXS5vdXRfZmVu Y2VfcHRyLAorCQkJCQlpbnZhbGlkX3Rlc3RzW2ldLnB0cl92YWxpZCk7CisJCWlndF9hc3NlcnQo cmV0ICE9IDApOworCX0KK30KKworc3RhdGljIHZvaWQgd3JpdGViYWNrX2ZiX2lkKGlndF9vdXRw dXRfdCAqb3V0cHV0LCBpZ3RfZmJfdCAqdmFsaWRfZmIsIGlndF9mYl90ICppbnZhbGlkX2ZiKQor eworCisJaW50IHJldDsKKworCS8qIFZhbGlkIG91dHB1dCBidWZmZXIgKi8KKwlyZXQgPSBkb193 cml0ZWJhY2tfdGVzdChvdXRwdXQsIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULAorCQkJ CXZhbGlkX2ZiLT5mYl9pZCwgTlVMTCwgZmFsc2UpOworCWlndF9hc3NlcnQocmV0ID09IDApOwor CisJLyogSW52YWxpZCBvYmplY3QgZm9yIFdSSVRFQkFDS19GQl9JRCAqLworCXJldCA9IGRvX3dy aXRlYmFja190ZXN0KG91dHB1dCwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsCisJCQkJ b3V0cHV0LT5pZCwgTlVMTCwgZmFsc2UpOworCWlndF9hc3NlcnQocmV0ID09IC1FSU5WQUwpOwor CisJLyogWmVybyBXUklURUJBQ0tfRkJfSUQgKi8KKwlyZXQgPSBkb193cml0ZWJhY2tfdGVzdChv dXRwdXQsIERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULAorCQkJCTAsIE5VTEwsIGZhbHNl KTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKK30KKworaWd0X21haW4KK3sKKwlpZ3RfZGlzcGxh eV90IGRpc3BsYXk7CisJaWd0X291dHB1dF90ICpvdXRwdXQ7CisJaWd0X3BsYW5lX3QgKnBsYW5l OworCWlndF9mYl90IGlucHV0X2ZiOworCWRybU1vZGVNb2RlSW5mbyBtb2RlOworCWludCByZXQ7 CisKKwltZW1zZXQoJmRpc3BsYXksIDAsIHNpemVvZihkaXNwbGF5KSk7CisKKwlpZ3RfZml4dHVy ZSB7CisJCWRpc3BsYXkuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfQU5Z KTsKKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZSgmZGlzcGxheSwgZGlzcGxheS5kcm1fZmQpOworCisJ CWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKKworCQlpZ3RfZGlzcGxheV9yZXF1aXJl KCZkaXNwbGF5LCBkaXNwbGF5LmRybV9mZCk7CisKKwkJaWd0X3JlcXVpcmUoZGlzcGxheS5pc19h dG9taWMpOworCisJCW91dHB1dCA9IGttc193cml0ZWJhY2tfZ2V0X291dHB1dCgmZGlzcGxheSk7 CisJCWlndF9yZXF1aXJlKG91dHB1dCk7CisKKwkJaWYgKG91dHB1dC0+dXNlX292ZXJyaWRlX21v ZGUpCisJCQltZW1jcHkoJm1vZGUsICZvdXRwdXQtPm92ZXJyaWRlX21vZGUsIHNpemVvZihtb2Rl KSk7CisJCWVsc2UKKwkJCW1lbWNweSgmbW9kZSwgJm91dHB1dC0+Y29uZmlnLmRlZmF1bHRfbW9k ZSwgc2l6ZW9mKG1vZGUpKTsKKworCQlwbGFuZSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUo b3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwkJaWd0X3JlcXVpcmUocGxhbmUpOwor CisJCXJldCA9IGlndF9jcmVhdGVfZmIoZGlzcGxheS5kcm1fZmQsIG1vZGUuaGRpc3BsYXksCisJ CQkJICAgIG1vZGUudmRpc3BsYXksCisJCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCisJCQkJ ICAgIGlndF9mYl9tb2RfdG9fdGlsaW5nKDApLAorCQkJCSAgICAmaW5wdXRfZmIpOworCQlpZ3Rf YXNzZXJ0KHJldCA+PSAwKTsKKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmlucHV0X2ZiKTsK Kwl9CisKKwlpZ3Rfc3VidGVzdCgid3JpdGViYWNrLXBpeGVsLWZvcm1hdHMiKSB7CisJCWRybU1v ZGVQcm9wZXJ0eUJsb2JSZXMgKmZvcm1hdHNfYmxvYiA9IGdldF93cml0ZWJhY2tfZm9ybWF0c19i bG9iKG91dHB1dCk7CisJCWNvbnN0IGNoYXIgKnZhbGlkX2NoYXJzID0gIjAxMjM0NTYgQUJDR05S VVZYWSI7CisJCXVuc2lnbmVkIGludCBpOworCQljaGFyICpjOworCisJCS8qCisJCSAqIFdlIGRv bid0IGhhdmUgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgZm9ybWF0cywgc28ganVzdCBjaGVjawor CQkgKiB0aGF0IHRoZSBibG9iIGxlbmd0aCBpcyBzZW5zaWJsZSBhbmQgdGhhdCBpdCBkb2Vzbid0 IGNvbnRhaW4KKwkJICogYW55IG91dGxhbmRpc2ggY2hhcmFjdGVycworCQkgKi8KKwkJaWd0X2Fz c2VydCghKGZvcm1hdHNfYmxvYi0+bGVuZ3RoICUgNCkpOworCQljID0gZm9ybWF0c19ibG9iLT5k YXRhOworCQlmb3IgKGkgPSAwOyBpIDwgZm9ybWF0c19ibG9iLT5sZW5ndGg7IGkrKykKKwkJCWln dF9hc3NlcnRfZihzdHJjaHIodmFsaWRfY2hhcnMsIGNbaV0pLAorCQkJCSAgICAgIlVuZXhwZWN0 ZWQgY2hhcmFjdGVyICVjXG4iLCBjW2ldKTsKKwl9CisKKwlpZ3Rfc3VidGVzdCgid3JpdGViYWNr LWludmFsaWQtb3V0LWZlbmNlIikgeworCQlpZ3RfZmJfdCBpbnZhbGlkX2ZiOworCQlyZXQgPSBp Z3RfY3JlYXRlX2ZiKGRpc3BsYXkuZHJtX2ZkLCBtb2RlLmhkaXNwbGF5IC8gMiwKKwkJCQkgICAg bW9kZS52ZGlzcGxheSAvIDIsCisJCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCisJCQkJICAg IGlndF9mYl9tb2RfdG9fdGlsaW5nKDApLAorCQkJCSAgICAmaW52YWxpZF9mYik7CisJCWlndF9y ZXF1aXJlKHJldCA+IDApOworCisJCWludmFsaWRfb3V0X2ZlbmNlKG91dHB1dCwgJmlucHV0X2Zi LCAmaW52YWxpZF9mYik7CisKKwkJaWd0X3JlbW92ZV9mYihkaXNwbGF5LmRybV9mZCwgJmludmFs aWRfZmIpOworCX0KKworCWlndF9zdWJ0ZXN0KCJ3cml0ZWJhY2stZmItaWQiKSB7CisJCWlndF9m Yl90IG91dHB1dF9mYjsKKwkJcmV0ID0gaWd0X2NyZWF0ZV9mYihkaXNwbGF5LmRybV9mZCwgbW9k ZS5oZGlzcGxheSwgbW9kZS52ZGlzcGxheSwKKwkJCQkgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwK KwkJCQkgICAgaWd0X2ZiX21vZF90b190aWxpbmcoMCksCisJCQkJICAgICZvdXRwdXRfZmIpOwor CQlpZ3RfcmVxdWlyZShyZXQgPiAwKTsKKworCQl3cml0ZWJhY2tfZmJfaWQob3V0cHV0LCAmaW5w dXRfZmIsICZvdXRwdXRfZmIpOworCisJCWlndF9yZW1vdmVfZmIoZGlzcGxheS5kcm1fZmQsICZv dXRwdXRfZmIpOworCX0KKworCWlndF9maXh0dXJlIHsKKwkJaWd0X3JlbW92ZV9mYihkaXNwbGF5 LmRybV9mZCwgJmlucHV0X2ZiKTsKKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGlzcGxheSk7CisJfQor fQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRl eCBlMTRhYjJiNDUuLjQxZTc4YjhlZSAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysr IGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTYwLDYgKzYwLDcgQEAgdGVzdF9wcm9ncyA9IFsKIAkn a21zX3R2X2xvYWRfZGV0ZWN0JywKIAkna21zX3VuaXZlcnNhbF9wbGFuZScsCiAJJ2ttc192Ymxh bmsnLAorCSdrbXNfd3JpdGViYWNrJywKIAknbWV0YV90ZXN0JywKIAkncGVyZicsCiAJJ3BtX2Jh Y2tsaWdodCcsCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldgo=