From mboxrd@z Thu Jan 1 00:00:00 1970 From: arun.siluvery@linux.intel.com Subject: [RFC] tests/gem_bo_falloc: New igt for testing gem_fallocate() ioctl Date: Fri, 25 Apr 2014 13:50:32 +0100 Message-ID: <1398430232-2957-1-git-send-email-arun.siluvery@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 717E86E188 for ; Fri, 25 Apr 2014 05:50:42 -0700 (PDT) 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 RnJvbTogIlNpbHV2ZXJ5LCBBcnVuIiA8YXJ1bi5zaWx1dmVyeUBpbnRlbC5jb20+CgpUaGlzIGlv Y3RsIGFsbG93cyB2YXJ5IHRoZSBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgZ2VtIG9iamVjdC4KVXNl ciBjYW4gbWFyayBjZXJ0YWluIHJhbmdlIGluIG9iamVjdCBzcGFjZSBhcyBzY3JhdGNoIHRodXMK ZWZmZWN0aXZlbHkgbW9kaWZ5aW5nIHRoZSBzaXplIHVzZWQuCgpTaWduZWQtb2ZmLWJ5OiBTaWx1 dmVyeSwgQXJ1biA8YXJ1bi5zaWx1dmVyeUBpbnRlbC5jb20+Ci0tLQogdGVzdHMvTWFrZWZpbGUu c291cmNlcyB8ICAgMSArCiB0ZXN0cy9nZW1fYm9fZmFsbG9jLmMgIHwgNDY5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwg NDcwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9nZW1fYm9fZmFsbG9j LmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUu c291cmNlcwppbmRleCA4ODg2NmFjLi4yNWMwMTBlIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmls ZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTEyMCw2ICsxMjAsNyBA QCBURVNUU19wcm9ncyA9IFwKIAlnZW1fdW5yZWZfYWN0aXZlX2J1ZmZlcnMgXAogCWdlbV92bWFw X2JsaXRzIFwKIAlnZW1fd2FpdF9yZW5kZXJfdGltZW91dCBcCisJZ2VtX2JvX2ZhbGxvYyBcCiAJ Z2VuM19taXhlZF9ibGl0cyBcCiAJZ2VuM19yZW5kZXJfbGluZWFyX2JsaXRzIFwKIAlnZW4zX3Jl bmRlcl9taXhlZF9ibGl0cyBcCmRpZmYgLS1naXQgYS90ZXN0cy9nZW1fYm9fZmFsbG9jLmMgYi90 ZXN0cy9nZW1fYm9fZmFsbG9jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MmQ5N2Q4MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2dlbV9ib19mYWxsb2MuYwpAQCAtMCww ICsxLDQ2OSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwor ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqCisgKi8K KworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0 ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRl IDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4K KyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlICJkcm0uaCIKKyNpbmNsdWRlICJpOTE1 X2RybS5oIgorI2luY2x1ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJpbnRlbF9jaGlwc2V0Lmgi CisjaW5jbHVkZSAiaW50ZWxfZ3B1X3Rvb2xzLmgiCisKKyNkZWZpbmUgT0JKRUNUX1NJWkUgICAg ICAgICAgICAgKDggKiBQQUdFX1NJWkUpCisjZGVmaW5lIENPUFlfQkxUX0NNRAkJKDI8PDI5fDB4 NTM8PDIyfDB4NikKKyNkZWZpbmUgQkxUX1dSSVRFX0FMUEhBCQkoMTw8MjEpCisjZGVmaW5lIEJM VF9XUklURV9SR0IJCSgxPDwyMCkKKyNkZWZpbmUgQkxUX1NSQ19USUxFRAkJKDE8PDE1KQorI2Rl ZmluZSBCTFRfRFNUX1RJTEVECQkoMTw8MTEpCisKK3N0YXRpYyB1aW50OF90IGJ1ZltPQkpFQ1Rf U0laRV07CisKK3N0YXRpYyB1aW50MzJfdCBjcmVhdGVfYm8oaW50IGZkKQoreworCWludCBpOwor CXVpbnQzMl90IHBhZ2VfY291bnQ7CisJdWludDMyX3QgaGFuZGxlOworCisJaGFuZGxlID0gZ2Vt X2NyZWF0ZShmZCwgc2l6ZW9mKGJ1ZikpOworCXBhZ2VfY291bnQgPSBzaXplb2YoYnVmKSAvIFBB R0VfU0laRTsKKworCWZvciAoaSA9IDA7IGkgPCBwYWdlX2NvdW50OyArK2kpCisJCW1lbXNldChi dWYgKyAoaSAqIFBBR0VfU0laRSksIGkrMSwgUEFHRV9TSVpFKTsKKworCWdlbV93cml0ZShmZCwg aGFuZGxlLCAwLCBidWYsIHNpemVvZihidWYpKTsKKwlyZXR1cm4gaGFuZGxlOworfQorCitzdGF0 aWMgaW50IGdlbV9saW5lYXJfYmx0KGludCBmZCwKKwkJCSAgdWludDMyX3QgKmJhdGNoLAorCQkJ ICB1aW50MzJfdCBzcmMsCisJCQkgIHVpbnQzMl90IGRzdCwKKwkJCSAgdWludDMyX3QgbGVuZ3Ro LAorCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jKQorewor CXVpbnQzMl90ICpiID0gYmF0Y2g7CisJaW50IGhlaWdodCA9IGxlbmd0aCAvICgxNiAqIDEwMjQp OworCisJaWd0X2Fzc2VydChoZWlnaHQgPD0gMTw8MTYpOworCisJaWYgKGhlaWdodCkgeworCQlp bnQgaSA9IDA7CisJCWJbaSsrXSA9IENPUFlfQkxUX0NNRCB8IEJMVF9XUklURV9BTFBIQSB8IEJM VF9XUklURV9SR0I7CisJCWlmIChpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpID49 IDgpCisJCQliW2ktMV0rPTI7CisJCWJbaSsrXSA9IDB4Y2MgPDwgMTYgfCAxIDw8IDI1IHwgMSA8 PCAyNCB8ICgxNioxMDI0KTsKKwkJYltpKytdID0gMDsKKwkJYltpKytdID0gaGVpZ2h0IDw8IDE2 IHwgKDQqMTAyNCk7CisJCWJbaSsrXSA9IDA7CisJCXJlbG9jLT5vZmZzZXQgPSAoYi1iYXRjaCs0 KSAqIHNpemVvZih1aW50MzJfdCk7CisJCXJlbG9jLT5kZWx0YSA9IDA7CisJCXJlbG9jLT50YXJn ZXRfaGFuZGxlID0gZHN0OworCQlyZWxvYy0+cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlO X1JFTkRFUjsKKwkJcmVsb2MtPndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7 CisJCXJlbG9jLT5wcmVzdW1lZF9vZmZzZXQgPSAwOworCQlyZWxvYysrOworCQlpZiAoaW50ZWxf Z2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA+PSA4KQorCQkJYltpKytdID0gMDsgLyogRklY TUUgKi8KKworCQliW2krK10gPSAwOworCQliW2krK10gPSAxNioxMDI0OworCQliW2krK10gPSAw OworCQlyZWxvYy0+b2Zmc2V0ID0gKGItYmF0Y2grNykgKiBzaXplb2YodWludDMyX3QpOworCQlp ZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA+PSA4KQorCQkJcmVsb2MtPm9m ZnNldCArPSBzaXplb2YodWludDMyX3QpOworCQlyZWxvYy0+ZGVsdGEgPSAwOworCQlyZWxvYy0+ dGFyZ2V0X2hhbmRsZSA9IHNyYzsKKwkJcmVsb2MtPnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RP TUFJTl9SRU5ERVI7CisJCXJlbG9jLT53cml0ZV9kb21haW4gPSAwOworCQlyZWxvYy0+cHJlc3Vt ZWRfb2Zmc2V0ID0gMDsKKwkJcmVsb2MrKzsKKwkJaWYgKGludGVsX2dlbihpbnRlbF9nZXRfZHJt X2RldmlkKGZkKSkgPj0gOCkKKwkJCWJbaSsrXSA9IDA7IC8qIEZJWE1FICovCisKKwkJYiArPSBp OworCQlsZW5ndGggLT0gaGVpZ2h0ICogMTYqMTAyNDsKKwl9CisKKwlpZiAobGVuZ3RoKSB7CisJ CWludCBpID0gMDsKKwkJYltpKytdID0gQ09QWV9CTFRfQ01EIHwgQkxUX1dSSVRFX0FMUEhBIHwg QkxUX1dSSVRFX1JHQjsKKwkJaWYgKGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSkg Pj0gOCkKKwkJCWJbaS0xXSs9MjsKKwkJYltpKytdID0gMHhjYyA8PCAxNiB8IDEgPDwgMjUgfCAx IDw8IDI0IHwgKDE2KjEwMjQpOworCQliW2krK10gPSBoZWlnaHQgPDwgMTY7CisJCWJbaSsrXSA9 ICgxK2hlaWdodCkgPDwgMTYgfCAobGVuZ3RoIC8gNCk7CisJCWJbaSsrXSA9IDA7CisJCXJlbG9j LT5vZmZzZXQgPSAoYi1iYXRjaCs0KSAqIHNpemVvZih1aW50MzJfdCk7CisJCXJlbG9jLT5kZWx0 YSA9IDA7CisJCXJlbG9jLT50YXJnZXRfaGFuZGxlID0gZHN0OworCQlyZWxvYy0+cmVhZF9kb21h aW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKKwkJcmVsb2MtPndyaXRlX2RvbWFpbiA9IEk5 MTVfR0VNX0RPTUFJTl9SRU5ERVI7CisJCXJlbG9jLT5wcmVzdW1lZF9vZmZzZXQgPSAwOworCQly ZWxvYysrOworCQlpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA+PSA4KQor CQkJYltpKytdID0gMDsgLyogRklYTUUgKi8KKworCQliW2krK10gPSBoZWlnaHQgPDwgMTY7CisJ CWJbaSsrXSA9IDE2KjEwMjQ7CisJCWJbaSsrXSA9IDA7CisJCXJlbG9jLT5vZmZzZXQgPSAoYi1i YXRjaCs3KSAqIHNpemVvZih1aW50MzJfdCk7CisJCWlmIChpbnRlbF9nZW4oaW50ZWxfZ2V0X2Ry bV9kZXZpZChmZCkpID49IDgpCisJCQlyZWxvYy0+b2Zmc2V0ICs9IHNpemVvZih1aW50MzJfdCk7 CisJCXJlbG9jLT5kZWx0YSA9IDA7CisJCXJlbG9jLT50YXJnZXRfaGFuZGxlID0gc3JjOworCQly ZWxvYy0+cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKKwkJcmVsb2MtPndy aXRlX2RvbWFpbiA9IDA7CisJCXJlbG9jLT5wcmVzdW1lZF9vZmZzZXQgPSAwOworCQlyZWxvYysr OworCQlpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA+PSA4KQorCQkJYltp KytdID0gMDsgLyogRklYTUUgKi8KKworCQliICs9IGk7CisJfQorCisJYlswXSA9IE1JX0JBVENI X0JVRkZFUl9FTkQ7CisJYlsxXSA9IDA7CisKKwlyZXR1cm4gKGIrMiAtIGJhdGNoKSAqIHNpemVv Zih1aW50MzJfdCk7Cit9CisKK3N0YXRpYyB2b2lkIGRvX2JsaXQoaW50IGZkLCB1aW50MzJfdCBz cmMsIHVpbnQzMl90IGRzdCwgdWludDMyX3QgbGVuZ3RoKQoreworCWludCBsZW47CisJaW50IHJp bmc7CisJdWludDMyX3QgaGFuZGxlOworCXVpbnQzMl90IGJ1ZlsyMF07CisJc3RydWN0IGRybV9p OTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyIGV4ZWNbM107CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJl bG9jWzRdOworCisJaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisKKwlsZW4gPSBnZW1f bGluZWFyX2JsdChmZCwgYnVmLCBzcmMsIGRzdCwgbGVuZ3RoLCByZWxvYyk7CisKKwlnZW1fd3Jp dGUoZmQsIGhhbmRsZSwgMCwgYnVmLCBsZW4pOworCisJZXhlY1swXS5oYW5kbGUgPSBzcmM7CisJ ZXhlY1swXS5yZWxvY2F0aW9uX2NvdW50ID0gMDsKKwlleGVjWzBdLnJlbG9jc19wdHIgPSAwOwor CWV4ZWNbMF0uYWxpZ25tZW50ID0gMDsKKwlleGVjWzBdLm9mZnNldCA9IDA7CisJZXhlY1swXS5m bGFncyA9IDA7CisJZXhlY1swXS5yc3ZkMSA9IDA7CisJZXhlY1swXS5yc3ZkMiA9IDA7CisKKwll eGVjWzFdLmhhbmRsZSA9IGRzdDsKKwlleGVjWzFdLnJlbG9jYXRpb25fY291bnQgPSAwOworCWV4 ZWNbMV0ucmVsb2NzX3B0ciA9IDA7CisJZXhlY1sxXS5hbGlnbm1lbnQgPSAwOworCWV4ZWNbMV0u b2Zmc2V0ID0gMDsKKwlleGVjWzFdLmZsYWdzID0gMDsKKwlleGVjWzFdLnJzdmQxID0gMDsKKwll eGVjWzFdLnJzdmQyID0gMDsKKworCWV4ZWNbMl0uaGFuZGxlID0gaGFuZGxlOworCWlmIChpbnRl bF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpID49IDgpCisJCWV4ZWNbMl0ucmVsb2NhdGlv bl9jb3VudCA9IGxlbiA+IDU2ID8gNCA6IDI7CisJZWxzZQorCQlleGVjWzJdLnJlbG9jYXRpb25f Y291bnQgPSBsZW4gPiA0MCA/IDQgOiAyOworCWV4ZWNbMl0ucmVsb2NzX3B0ciA9ICh1aW50cHRy X3QpcmVsb2M7CisJZXhlY1syXS5hbGlnbm1lbnQgPSAwOworCWV4ZWNbMl0ub2Zmc2V0ID0gMDsK KwlleGVjWzJdLmZsYWdzID0gMDsKKwlleGVjWzJdLnJzdmQxID0gMDsKKwlleGVjWzJdLnJzdmQy ID0gMDsKKworCXJpbmcgPSAwOworCWlmIChIQVNfQkxUX1JJTkcoaW50ZWxfZ2V0X2RybV9kZXZp ZChmZCkpKQorCQlyaW5nID0gSTkxNV9FWEVDX0JMVDsKKworCWV4ZWNidWYuYnVmZmVyc19wdHIg PSAodWludHB0cl90KWV4ZWM7CisJZXhlY2J1Zi5idWZmZXJfY291bnQgPSAzOworCWV4ZWNidWYu YmF0Y2hfc3RhcnRfb2Zmc2V0ID0gMDsKKwlleGVjYnVmLmJhdGNoX2xlbiA9IGxlbjsKKwlleGVj YnVmLmNsaXByZWN0c19wdHIgPSAwOworCWV4ZWNidWYubnVtX2NsaXByZWN0cyA9IDA7CisJZXhl Y2J1Zi5EUjEgPSAwOworCWV4ZWNidWYuRFI0ID0gMDsKKwlleGVjYnVmLmZsYWdzID0gcmluZzsK KwlpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250ZXh0X2lkKGV4ZWNidWYsIDApOworCWV4ZWNidWYu cnN2ZDIgPSAwOworCisJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKKworCWdlbV9zeW5jKGZk LCBoYW5kbGUpOworCisJZmZsdXNoKHN0ZG91dCk7CisJZ2VtX2Nsb3NlKGZkLCBoYW5kbGUpOwor fQorCitzdGF0aWMgaW50IGRvX2ZhbGxvYyhpbnQgZmQsIGludCBoYW5kbGUsCisJCSAgICAgdWlu dDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGxlbmd0aCkKK3sKKwlpbnQgcmV0 OworCXN0cnVjdCBkcm1faTkxNV9nZW1fZmFsbG9jYXRlIGdlbV9ibzsKKwlnZW1fYm8uaGFuZGxl ID0gaGFuZGxlOworCWdlbV9iby5zdGFydCA9IHN0YXJ0OworCWdlbV9iby5sZW5ndGggPSBsZW5n dGg7CisJZ2VtX2JvLm1vZGUgPSBtb2RlOworCXJldCA9IGlvY3RsKGZkLCBEUk1fSU9DVExfSTkx NV9HRU1fRkFMTE9DQVRFLCAmZ2VtX2JvKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9p ZCB0ZXN0X2dlbV9mYWxsb2NfYXJndW1lbnRzX3ZhbGlkYXRpb24oaW50IGZkKQoreworCWludCBy ZXQ7CisJdWludDMyX3QgaGFuZGxlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZmFsbG9jYXRlIGdl bV9ibzsKKworCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIE9CSkVDVF9TSVpFKTsKKwkvKiBpbnZh bGlkIG1vZGUgKi8KKwlyZXQgPSBkb19mYWxsb2MoZmQsIGhhbmRsZSwgfjAsIDAsIE9CSkVDVF9T SVpFID4+IDEpOworCWlndF9hc3NlcnQocmV0ICE9IDApOworCisJcmV0ID0gZG9fZmFsbG9jKGZk LCBoYW5kbGUsIDAsIDAsIE9CSkVDVF9TSVpFID4+IDEpOworCWlndF9hc3NlcnQocmV0ICE9IDAp OworCisJLyogaW52YWxpZCBzdGFydCAqLworCXJldCA9IGRvX2ZhbGxvYyhmZCwgaGFuZGxlLCBJ OTE1X0dFTV9GQUxMT0NfTUFSS19TQ1JBVENILAorCQkJT0JKRUNUX1NJWkUgKyAoT0JKRUNUX1NJ WkUgPj4gMSksCisJCQlPQkpFQ1RfU0laRSA+PiAxKTsKKwlpZ3RfYXNzZXJ0KHJldCAhPSAwKTsK KworCS8qIGludmFsaWQgbGVuZ3RoICovCisJcmV0ID0gZG9fZmFsbG9jKGZkLCBoYW5kbGUsIEk5 MTVfR0VNX0ZBTExPQ19NQVJLX1NDUkFUQ0gsCisJCQlPQkpFQ1RfU0laRSA+PiAxLCB+MCk7CisJ aWd0X2Fzc2VydChyZXQgIT0gMCk7CisKKwkvKiBtYXJrZWQgcmVnaW9uIG92ZXJmbG93aW5nIG9i aiByYW5nZSAqLworCXJldCA9IGRvX2ZhbGxvYyhmZCwgaGFuZGxlLCBJOTE1X0dFTV9GQUxMT0Nf TUFSS19TQ1JBVENILAorCQkJT0JKRUNUX1NJWkUgPj4gMSwgT0JKRUNUX1NJWkUpOworCWlndF9h c3NlcnQocmV0ICE9IDApOworCisJZ2VtX2Nsb3NlKGZkLCBoYW5kbGUpOworfQorCitzdGF0aWMg dm9pZCB0ZXN0X2dlbV9mYWxsb2NfcmFuZG9tX3VzYWdlKGludCBmZCkKK3sKKwlpbnQgcmV0Owor CXVpbnQzMl90IHNyYywgZHN0OworCXVpbnQ4X3QgKnNyY19hZGRyLCAqZHN0X2FkZHI7CisJc3Ry dWN0IGRybV9pOTE1X2dlbV9mYWxsb2NhdGUgZ2VtX2JvOworCXVpbnQ4X3QgYnVmW09CSkVDVF9T SVpFXTsKKworCXNyYyA9IGNyZWF0ZV9ibyhmZCk7CisJZHN0ID0gZ2VtX2NyZWF0ZShmZCwgT0JK RUNUX1NJWkUpOworCisJZ2VtX3JlYWQoZmQsIHNyYywgMCwgYnVmLCBPQkpFQ1RfU0laRSk7CisJ ZG9fYmxpdChmZCwgc3JjLCBkc3QsIE9CSkVDVF9TSVpFKTsKKworCXNyY19hZGRyID0gZ2VtX21t YXBfX2d0dChmZCwgc3JjLCBPQkpFQ1RfU0laRSwgUFJPVF9XUklURSB8IFBST1RfUkVBRCk7CisJ ZHN0X2FkZHIgPSBnZW1fbW1hcF9fZ3R0KGZkLCBkc3QsIE9CSkVDVF9TSVpFLCBQUk9UX1dSSVRF IHwgUFJPVF9SRUFEKTsKKwlpZ3RfYXNzZXJ0KG1lbWNtcChkc3RfYWRkciwgc3JjX2FkZHIsIE9C SkVDVF9TSVpFKSA9PSAwKTsKKworCS8qIG1hcmsgd2hvbGUgb2JqZWN0IGFzIHNjcmF0Y2ggKi8K KwlyZXQgPSBkb19mYWxsb2MoZmQsIGRzdCwgSTkxNV9HRU1fRkFMTE9DX01BUktfU0NSQVRDSCwK KwkJCTAsIE9CSkVDVF9TSVpFKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKKwlpZ3RfYXNzZXJ0 KG1lbWNtcChkc3RfYWRkciwgc3JjX2FkZHIsIE9CSkVDVF9TSVpFKSAhPSAwKTsKKworCisJLyog dW5tYXJrIHdob2xlIG9iamVjdCAqLworCXJldCA9IGRvX2ZhbGxvYyhmZCwgZHN0LCBJOTE1X0dF TV9GQUxMT0NfVU5NQVJLX1NDUkFUQ0gsCisJCQkwLCBPQkpFQ1RfU0laRSk7CisJaWd0X2Fzc2Vy dChyZXQgPT0gMCk7CisKKwlnZW1fd3JpdGUoZmQsIGRzdCwgMCwgYnVmLCBPQkpFQ1RfU0laRSk7 CisKKwltZW1zZXQoYnVmLCAweDAwLCBPQkpFQ1RfU0laRSk7CisJZ2VtX3JlYWQoZmQsIGRzdCwg MCwgYnVmLCBPQkpFQ1RfU0laRSk7CisJaWd0X2Fzc2VydChtZW1jbXAoYnVmLCBzcmNfYWRkciwg T0JKRUNUX1NJWkUpID09IDApOworCisJbXVubWFwKHNyY19hZGRyLCBPQkpFQ1RfU0laRSk7CisJ bXVubWFwKGRzdF9hZGRyLCBPQkpFQ1RfU0laRSk7CisJZ2VtX2Nsb3NlKGZkLCBzcmMpOworCWdl bV9jbG9zZShmZCwgZHN0KTsKK30KKworc3RhdGljIHZvaWQgdGVzdF9nZW1fZmFsbG9jX3B3cml0 ZShpbnQgZmQpCit7CisJaW50IHJldDsKKwl1aW50MzJfdCBvZmZzZXQ7CisJdWludDMyX3Qgc3Jj LCBkc3Q7CisJdWludDhfdCAqc3JjX2FkZHIsICpkc3RfYWRkcjsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2ZhbGxvY2F0ZSBnZW1fYm87CisJdWludDhfdCBzcmNfYnVmW09CSkVDVF9TSVpFXTsKKwl1 aW50OF90IGRzdF9idWZbT0JKRUNUX1NJWkVdOworCisJc3JjID0gY3JlYXRlX2JvKGZkKTsKKwlk c3QgPSBjcmVhdGVfYm8oZmQpOworCisJcmV0ID0gZG9fZmFsbG9jKGZkLCBkc3QsIEk5MTVfR0VN X0ZBTExPQ19NQVJLX1NDUkFUQ0gsCisJCQlPQkpFQ1RfU0laRSA+PiAxLCBPQkpFQ1RfU0laRSA+ PiAxKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKKworCWdlbV9yZWFkKGZkLCBzcmMsIDAsIHNy Y19idWYsIE9CSkVDVF9TSVpFKTsKKwlnZW1fcmVhZChmZCwgZHN0LCAwLCBkc3RfYnVmLCBPQkpF Q1RfU0laRSk7CisJaWd0X2Fzc2VydChtZW1jbXAoc3JjX2J1ZiwgZHN0X2J1ZiwgT0JKRUNUX1NJ WkUpICE9IDApOworCisJcmV0ID0gZG9fZmFsbG9jKGZkLCBkc3QsIEk5MTVfR0VNX0ZBTExPQ19V Tk1BUktfU0NSQVRDSCwKKwkJCU9CSkVDVF9TSVpFID4+IDEsIE9CSkVDVF9TSVpFID4+IDEpOwor CWlndF9hc3NlcnQocmV0ID09IDApOworCW9mZnNldCA9IE9CSkVDVF9TSVpFID4+IDE7CisJZ2Vt X3dyaXRlKGZkLCBkc3QsIG9mZnNldCwgc3JjX2J1ZiArIG9mZnNldCwgT0JKRUNUX1NJWkUgPj4g MSk7CisKKwltZW1zZXQoZHN0X2J1ZiwgMHgwMCwgT0JKRUNUX1NJWkUpOworCWdlbV9yZWFkKGZk LCBkc3QsIDAsIGRzdF9idWYsIE9CSkVDVF9TSVpFKTsKKwlpZ3RfYXNzZXJ0KG1lbWNtcChzcmNf YnVmLCBkc3RfYnVmLCBPQkpFQ1RfU0laRSkgPT0gMCk7CisKKwlnZW1fY2xvc2UoZmQsIHNyYyk7 CisJZ2VtX2Nsb3NlKGZkLCBkc3QpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2dlbV9mYWxsb2Nf bXVsdGlwbGVfcmVnaW9ucyhpbnQgZmQpCit7CisJaW50IGk7CisJaW50IHJldCwgbGVuOworCXVp bnQzMl90IGhhbmRsZSwgc3JjLCBkc3Q7CisJdWludDMyX3QgZmFsbG9jX3N0YXJ0LCBmYWxsb2Nf bGVuOworCXVpbnQ4X3QgKnNyY19hZGRyLCAqZHN0X2FkZHI7CisKKwlwcmludGYoIkdFTSBvYmpl Y3QgZmFsbG9jIG9mIG11bHRpcGxlIHJlZ2lvbnMgdGVzdFxuIik7CisKKwlzcmMgPSBjcmVhdGVf Ym8oZmQpOworCWRzdCA9IGdlbV9jcmVhdGUoZmQsIE9CSkVDVF9TSVpFKTsKKworCWRvX2JsaXQo ZmQsIHNyYywgZHN0LCBPQkpFQ1RfU0laRSk7CisKKwlzcmNfYWRkciA9IGdlbV9tbWFwX19ndHQo ZmQsIHNyYywgT0JKRUNUX1NJWkUsIFBST1RfV1JJVEUgfCBQUk9UX1JFQUQpOworCWRzdF9hZGRy ID0gZ2VtX21tYXBfX2d0dChmZCwgZHN0LCBPQkpFQ1RfU0laRSwgUFJPVF9XUklURSB8IFBST1Rf UkVBRCk7CisJaWd0X2Fzc2VydChtZW1jbXAoZHN0X2FkZHIsIHNyY19hZGRyLCBPQkpFQ1RfU0la RSkgPT0gMCk7CisKKwkvKiBtYXJrIG11bHRpcGxlIHJhbmdlcyB3aXRob3V0IG92ZXJsYXAgKi8K KwlmYWxsb2Nfc3RhcnQgPSBPQkpFQ1RfU0laRSA+PiAyOworCWZhbGxvY19sZW4gPSBPQkpFQ1Rf U0laRSA+PiAyOworCXJldCA9IGRvX2ZhbGxvYyhmZCwgZHN0LCBJOTE1X0dFTV9GQUxMT0NfTUFS S19TQ1JBVENILAorCQkJZmFsbG9jX3N0YXJ0LCBmYWxsb2NfbGVuKTsKKwlpZ3RfYXNzZXJ0KHJl dCA9PSAwKTsKKworCWZhbGxvY19zdGFydCA9IChPQkpFQ1RfU0laRSA+PiAxKSArIChPQkpFQ1Rf U0laRSA+PiAyKTsKKwlyZXQgPSBkb19mYWxsb2MoZmQsIGRzdCwgSTkxNV9HRU1fRkFMTE9DX01B UktfU0NSQVRDSCwKKwkJCWZhbGxvY19zdGFydCwgZmFsbG9jX2xlbik7CisJaWd0X2Fzc2VydChy ZXQgPT0gMCk7CisKKwkvKiBkbyBzb21lIG9wZXJhdGlvbiAqLworCWRvX2JsaXQoZmQsIHNyYywg ZHN0LCBPQkpFQ1RfU0laRSk7CisJaWd0X2Fzc2VydChtZW1jbXAoZHN0X2FkZHIsIHNyY19hZGRy LCBPQkpFQ1RfU0laRSkgIT0gMCk7CisKKwkvKiB1bm1hcmsgbXVsdGlwbGUgcmFuZ2VzIHdpdGhv dXQgb3ZlcmxhcCAqLworCWZhbGxvY19zdGFydCA9IE9CSkVDVF9TSVpFID4+IDI7CisJZmFsbG9j X2xlbiA9IE9CSkVDVF9TSVpFID4+IDI7CisJcmV0ID0gZG9fZmFsbG9jKGZkLCBkc3QsIEk5MTVf R0VNX0ZBTExPQ19VTk1BUktfU0NSQVRDSCwKKwkJCWZhbGxvY19zdGFydCwgZmFsbG9jX2xlbik7 CisJaWd0X2Fzc2VydChyZXQgPT0gMCk7CisKKwlmYWxsb2Nfc3RhcnQgPSAoT0JKRUNUX1NJWkUg Pj4gMSkgKyAoT0JKRUNUX1NJWkUgPj4gMik7CisJZmFsbG9jX2xlbiA9IE9CSkVDVF9TSVpFID4+ IDI7CisJcmV0ID0gZG9fZmFsbG9jKGZkLCBkc3QsIEk5MTVfR0VNX0ZBTExPQ19VTk1BUktfU0NS QVRDSCwKKwkJCWZhbGxvY19zdGFydCwgZmFsbG9jX2xlbik7CisJaWd0X2Fzc2VydChyZXQgPT0g MCk7CisKKwltdW5tYXAoZHN0X2FkZHIsIE9CSkVDVF9TSVpFKTsKKwlkc3RfYWRkciA9IGdlbV9t bWFwX19ndHQoZmQsIGRzdCwgT0JKRUNUX1NJWkUsIFBST1RfV1JJVEUgfCBQUk9UX1JFQUQpOwor CisJLyogYmx0IHdob2xlIG9iaiB0byBlbnN1cmUgdW5tYXJraW5nIGlzIG9rICovCisJZG9fYmxp dChmZCwgc3JjLCBkc3QsIE9CSkVDVF9TSVpFKTsKKworCWlndF9hc3NlcnQobWVtY21wKGRzdF9h ZGRyLCBzcmNfYWRkciwgT0JKRUNUX1NJWkUpID09IDApOworCisKKwkvKiBtYXJrIG11bHRpcGxl IHJhbmdlcyB3aXRoIG92ZXJsYXAgKi8KKwlmYWxsb2Nfc3RhcnQgPSBPQkpFQ1RfU0laRSA+PiAy OworCWZhbGxvY19sZW4gPSBPQkpFQ1RfU0laRSA+PiAyOworCXJldCA9IGRvX2ZhbGxvYyhmZCwg ZHN0LCBJOTE1X0dFTV9GQUxMT0NfTUFSS19TQ1JBVENILAorCQkgIGZhbGxvY19zdGFydCwgZmFs bG9jX2xlbik7CisJaWd0X2Fzc2VydChyZXQgPT0gMCk7CisKKwlmYWxsb2NfbGVuID0gT0JKRUNU X1NJWkUgPj4gMTsKKwlyZXQgPSBkb19mYWxsb2MoZmQsIGRzdCwgSTkxNV9HRU1fRkFMTE9DX01B UktfU0NSQVRDSCwKKwkJICBmYWxsb2Nfc3RhcnQsIGZhbGxvY19sZW4pOworCWlndF9hc3NlcnQo cmV0ID09IDApOworCisJLyogZG8gc29tZSBvcGVyYXRpb24gKi8KKwlkb19ibGl0KGZkLCBzcmMs IGRzdCwgT0JKRUNUX1NJWkUpOworCWlndF9hc3NlcnQobWVtY21wKGRzdF9hZGRyLCBzcmNfYWRk ciwgT0JKRUNUX1NJWkUpICE9IDApOworCisJLyogdW5tYXJrIHRoZSB3aG9sZSByZWdpb24gKi8K KwlmYWxsb2Nfc3RhcnQgPSBPQkpFQ1RfU0laRSA+PiAyOworCWZhbGxvY19sZW4gPSBPQkpFQ1Rf U0laRSA+PiAxOworCXJldCA9IGRvX2ZhbGxvYyhmZCwgZHN0LCBJOTE1X0dFTV9GQUxMT0NfVU5N QVJLX1NDUkFUQ0gsCisJCSAgZmFsbG9jX3N0YXJ0LCBmYWxsb2NfbGVuKTsKKwlpZ3RfYXNzZXJ0 KHJldCA9PSAwKTsKKworCW11bm1hcChkc3RfYWRkciwgT0JKRUNUX1NJWkUpOworCWRzdF9hZGRy ID0gZ2VtX21tYXBfX2d0dChmZCwgZHN0LCBPQkpFQ1RfU0laRSwgUFJPVF9XUklURSB8IFBST1Rf UkVBRCk7CisKKwkvKiBibHQgd2hvbGUgb2JqIHRvIGVuc3VyZSB1bm1hcmtpbmcgaXMgb2sgKi8K Kwlkb19ibGl0KGZkLCBzcmMsIGRzdCwgT0JKRUNUX1NJWkUpOworCisJaWd0X2Fzc2VydChtZW1j bXAoZHN0X2FkZHIsIHNyY19hZGRyLCBPQkpFQ1RfU0laRSkgPT0gMCk7CisKKwltdW5tYXAoc3Jj X2FkZHIsIE9CSkVDVF9TSVpFKTsKKwltdW5tYXAoZHN0X2FkZHIsIE9CSkVDVF9TSVpFKTsKKwln ZW1fY2xvc2UoZmQsIHNyYyk7CisJZ2VtX2Nsb3NlKGZkLCBkc3QpOworfQorCitpbnQgZmQ7CisK K2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpZ3Rfc3VidGVzdF9pbml0KGFy Z2MsIGFyZ3YpOworCisJaWd0X2ZpeHR1cmUKKwkJZmQgPSBkcm1fb3Blbl9hbnkoKTsKKworCWln dF9zdWJ0ZXN0KCJnZW1fZmFsbG9jIGFyZ3VtZW50cyB2YWxpZGF0aW9uIikKKwkJdGVzdF9nZW1f ZmFsbG9jX2FyZ3VtZW50c192YWxpZGF0aW9uKGZkKTsKKworCWlndF9zdWJ0ZXN0KCJnZW1fZmFs bG9jIHJhbmRvbSB1c2FnZSIpCisJCXRlc3RfZ2VtX2ZhbGxvY19yYW5kb21fdXNhZ2UoZmQpOwor CisJaWd0X3N1YnRlc3QoImdlbV9mYWxsb2Mgd2l0aCBwd3JpdGUvcHJlYWQiKQorCQl0ZXN0X2dl bV9mYWxsb2NfcHdyaXRlKGZkKTsKKworCWlndF9zdWJ0ZXN0KCJnZW1fZmFsbG9jIG11bHRpcGxl IHJlZ2lvbnMiKQorCQl0ZXN0X2dlbV9mYWxsb2NfbXVsdGlwbGVfcmVnaW9ucyhmZCk7CisKKwlj bG9zZShmZCk7CisJaWd0X2V4aXQoKTsKK30KLS0gCjEuOS4yCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=