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: Mon, 28 Apr 2014 10:36:33 +0100 Message-ID: <1398677793-30168-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 mga03.intel.com (mga03.intel.com [143.182.124.21]) by gabe.freedesktop.org (Postfix) with ESMTP id 3DED86E7EA for ; Mon, 28 Apr 2014 02:36:43 -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 ZWZmZWN0aXZlbHkgbW9kaWZ5aW5nIHRoZSBzaXplIHVzZWQuCgp2MjogbW9kaWZ5IHN1YnRlc3Qg bmFtZXMgYW5kIGZ1bmN0aW9uIG5hbWVzIGFzIHBlciB0b29saW5nIGNvbnZlbnRpb24uCgpTaWdu ZWQtb2ZmLWJ5OiBTaWx1dmVyeSwgQXJ1biA8YXJ1bi5zaWx1dmVyeUBpbnRlbC5jb20+Ci0tLQog dGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCiB0ZXN0cy9nZW1fYm9fZmFsbG9jLmMgIHwg NDcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIg ZmlsZXMgY2hhbmdlZCwgNDcyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0 cy9nZW1fYm9fZmFsbG9jLmMKCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIv dGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCA4ODg2NmFjLi4yNWMwMTBlIDEwMDY0NAotLS0g YS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAg LTEyMCw2ICsxMjAsNyBAQCBURVNUU19wcm9ncyA9IFwKIAlnZW1fdW5yZWZfYWN0aXZlX2J1ZmZl cnMgXAogCWdlbV92bWFwX2JsaXRzIFwKIAlnZW1fd2FpdF9yZW5kZXJfdGltZW91dCBcCisJZ2Vt X2JvX2ZhbGxvYyBcCiAJZ2VuM19taXhlZF9ibGl0cyBcCiAJZ2VuM19yZW5kZXJfbGluZWFyX2Js aXRzIFwKIAlnZW4zX3JlbmRlcl9taXhlZF9ibGl0cyBcCmRpZmYgLS1naXQgYS90ZXN0cy9nZW1f Ym9fZmFsbG9jLmMgYi90ZXN0cy9nZW1fYm9fZmFsbG9jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZDZiN2YxMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2dlbV9ib19m YWxsb2MuYwpAQCAtMCwwICsxLDQ3MSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVs IENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICoKKyAqCisgKi8KKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5o PgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNu dGwuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVk ZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlICJkcm0uaCIK KyNpbmNsdWRlICJpOTE1X2RybS5oIgorI2luY2x1ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJp bnRlbF9jaGlwc2V0LmgiCisjaW5jbHVkZSAiaW50ZWxfZ3B1X3Rvb2xzLmgiCisKKyNkZWZpbmUg T0JKRUNUX1NJWkUgICAgICAgICAgICAgKDggKiBQQUdFX1NJWkUpCisjZGVmaW5lIENPUFlfQkxU X0NNRAkJKDI8PDI5fDB4NTM8PDIyfDB4NikKKyNkZWZpbmUgQkxUX1dSSVRFX0FMUEhBCQkoMTw8 MjEpCisjZGVmaW5lIEJMVF9XUklURV9SR0IJCSgxPDwyMCkKKyNkZWZpbmUgQkxUX1NSQ19USUxF RAkJKDE8PDE1KQorI2RlZmluZSBCTFRfRFNUX1RJTEVECQkoMTw8MTEpCisKK3N0YXRpYyB1aW50 OF90IGJ1ZltPQkpFQ1RfU0laRV07CisKK3N0YXRpYyB1aW50MzJfdCBjcmVhdGVfYm8oaW50IGZk KQoreworCWludCBpOworCXVpbnQzMl90IHBhZ2VfY291bnQ7CisJdWludDMyX3QgaGFuZGxlOwor CisJaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgc2l6ZW9mKGJ1ZikpOworCXBhZ2VfY291bnQgPSBz aXplb2YoYnVmKSAvIFBBR0VfU0laRTsKKworCWZvciAoaSA9IDA7IGkgPCBwYWdlX2NvdW50OyAr K2kpCisJCW1lbXNldChidWYgKyAoaSAqIFBBR0VfU0laRSksIGkrMSwgUEFHRV9TSVpFKTsKKwor CWdlbV93cml0ZShmZCwgaGFuZGxlLCAwLCBidWYsIHNpemVvZihidWYpKTsKKwlyZXR1cm4gaGFu ZGxlOworfQorCitzdGF0aWMgaW50IGdlbV9saW5lYXJfYmx0KGludCBmZCwKKwkJCSAgdWludDMy X3QgKmJhdGNoLAorCQkJICB1aW50MzJfdCBzcmMsCisJCQkgIHVpbnQzMl90IGRzdCwKKwkJCSAg dWludDMyX3QgbGVuZ3RoLAorCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50 cnkgKnJlbG9jKQoreworCXVpbnQzMl90ICpiID0gYmF0Y2g7CisJaW50IGhlaWdodCA9IGxlbmd0 aCAvICgxNiAqIDEwMjQpOworCisJaWd0X2Fzc2VydChoZWlnaHQgPD0gMTw8MTYpOworCisJaWYg KGhlaWdodCkgeworCQlpbnQgaSA9IDA7CisJCWJbaSsrXSA9IENPUFlfQkxUX0NNRCB8IEJMVF9X UklURV9BTFBIQSB8IEJMVF9XUklURV9SR0I7CisJCWlmIChpbnRlbF9nZW4oaW50ZWxfZ2V0X2Ry bV9kZXZpZChmZCkpID49IDgpCisJCQliW2ktMV0rPTI7CisJCWJbaSsrXSA9IDB4Y2MgPDwgMTYg fCAxIDw8IDI1IHwgMSA8PCAyNCB8ICgxNioxMDI0KTsKKwkJYltpKytdID0gMDsKKwkJYltpKytd ID0gaGVpZ2h0IDw8IDE2IHwgKDQqMTAyNCk7CisJCWJbaSsrXSA9IDA7CisJCXJlbG9jLT5vZmZz ZXQgPSAoYi1iYXRjaCs0KSAqIHNpemVvZih1aW50MzJfdCk7CisJCXJlbG9jLT5kZWx0YSA9IDA7 CisJCXJlbG9jLT50YXJnZXRfaGFuZGxlID0gZHN0OworCQlyZWxvYy0+cmVhZF9kb21haW5zID0g STkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKKwkJcmVsb2MtPndyaXRlX2RvbWFpbiA9IEk5MTVfR0VN X0RPTUFJTl9SRU5ERVI7CisJCXJlbG9jLT5wcmVzdW1lZF9vZmZzZXQgPSAwOworCQlyZWxvYysr OworCQlpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA+PSA4KQorCQkJYltp KytdID0gMDsgLyogRklYTUUgKi8KKworCQliW2krK10gPSAwOworCQliW2krK10gPSAxNioxMDI0 OworCQliW2krK10gPSAwOworCQlyZWxvYy0+b2Zmc2V0ID0gKGItYmF0Y2grNykgKiBzaXplb2Yo dWludDMyX3QpOworCQlpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA+PSA4 KQorCQkJcmVsb2MtPm9mZnNldCArPSBzaXplb2YodWludDMyX3QpOworCQlyZWxvYy0+ZGVsdGEg PSAwOworCQlyZWxvYy0+dGFyZ2V0X2hhbmRsZSA9IHNyYzsKKwkJcmVsb2MtPnJlYWRfZG9tYWlu cyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7CisJCXJlbG9jLT53cml0ZV9kb21haW4gPSAwOwor CQlyZWxvYy0+cHJlc3VtZWRfb2Zmc2V0ID0gMDsKKwkJcmVsb2MrKzsKKwkJaWYgKGludGVsX2dl bihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSkgPj0gOCkKKwkJCWJbaSsrXSA9IDA7IC8qIEZJWE1F ICovCisKKwkJYiArPSBpOworCQlsZW5ndGggLT0gaGVpZ2h0ICogMTYqMTAyNDsKKwl9CisKKwlp ZiAobGVuZ3RoKSB7CisJCWludCBpID0gMDsKKwkJYltpKytdID0gQ09QWV9CTFRfQ01EIHwgQkxU X1dSSVRFX0FMUEhBIHwgQkxUX1dSSVRFX1JHQjsKKwkJaWYgKGludGVsX2dlbihpbnRlbF9nZXRf ZHJtX2RldmlkKGZkKSkgPj0gOCkKKwkJCWJbaS0xXSs9MjsKKwkJYltpKytdID0gMHhjYyA8PCAx NiB8IDEgPDwgMjUgfCAxIDw8IDI0IHwgKDE2KjEwMjQpOworCQliW2krK10gPSBoZWlnaHQgPDwg MTY7CisJCWJbaSsrXSA9ICgxK2hlaWdodCkgPDwgMTYgfCAobGVuZ3RoIC8gNCk7CisJCWJbaSsr XSA9IDA7CisJCXJlbG9jLT5vZmZzZXQgPSAoYi1iYXRjaCs0KSAqIHNpemVvZih1aW50MzJfdCk7 CisJCXJlbG9jLT5kZWx0YSA9IDA7CisJCXJlbG9jLT50YXJnZXRfaGFuZGxlID0gZHN0OworCQly ZWxvYy0+cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKKwkJcmVsb2MtPndy aXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7CisJCXJlbG9jLT5wcmVzdW1lZF9v ZmZzZXQgPSAwOworCQlyZWxvYysrOworCQlpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2 aWQoZmQpKSA+PSA4KQorCQkJYltpKytdID0gMDsgLyogRklYTUUgKi8KKworCQliW2krK10gPSBo ZWlnaHQgPDwgMTY7CisJCWJbaSsrXSA9IDE2KjEwMjQ7CisJCWJbaSsrXSA9IDA7CisJCXJlbG9j LT5vZmZzZXQgPSAoYi1iYXRjaCs3KSAqIHNpemVvZih1aW50MzJfdCk7CisJCWlmIChpbnRlbF9n ZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpID49IDgpCisJCQlyZWxvYy0+b2Zmc2V0ICs9IHNp emVvZih1aW50MzJfdCk7CisJCXJlbG9jLT5kZWx0YSA9IDA7CisJCXJlbG9jLT50YXJnZXRfaGFu ZGxlID0gc3JjOworCQlyZWxvYy0+cmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRF UjsKKwkJcmVsb2MtPndyaXRlX2RvbWFpbiA9IDA7CisJCXJlbG9jLT5wcmVzdW1lZF9vZmZzZXQg PSAwOworCQlyZWxvYysrOworCQlpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQp KSA+PSA4KQorCQkJYltpKytdID0gMDsgLyogRklYTUUgKi8KKworCQliICs9IGk7CisJfQorCisJ YlswXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJYlsxXSA9IDA7CisKKwlyZXR1cm4gKGIrMiAt IGJhdGNoKSAqIHNpemVvZih1aW50MzJfdCk7Cit9CisKK3N0YXRpYyB2b2lkIGRvX2JsaXQoaW50 IGZkLCB1aW50MzJfdCBzcmMsIHVpbnQzMl90IGRzdCwgdWludDMyX3QgbGVuZ3RoKQoreworCWlu dCBsZW47CisJaW50IHJpbmc7CisJdWludDMyX3QgaGFuZGxlOworCXVpbnQzMl90IGJ1ZlsyMF07 CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOworCXN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY19vYmplY3QyIGV4ZWNbM107CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxv Y2F0aW9uX2VudHJ5IHJlbG9jWzRdOworCisJaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7 CisKKwlsZW4gPSBnZW1fbGluZWFyX2JsdChmZCwgYnVmLCBzcmMsIGRzdCwgbGVuZ3RoLCByZWxv Yyk7CisKKwlnZW1fd3JpdGUoZmQsIGhhbmRsZSwgMCwgYnVmLCBsZW4pOworCisJZXhlY1swXS5o YW5kbGUgPSBzcmM7CisJZXhlY1swXS5yZWxvY2F0aW9uX2NvdW50ID0gMDsKKwlleGVjWzBdLnJl bG9jc19wdHIgPSAwOworCWV4ZWNbMF0uYWxpZ25tZW50ID0gMDsKKwlleGVjWzBdLm9mZnNldCA9 IDA7CisJZXhlY1swXS5mbGFncyA9IDA7CisJZXhlY1swXS5yc3ZkMSA9IDA7CisJZXhlY1swXS5y c3ZkMiA9IDA7CisKKwlleGVjWzFdLmhhbmRsZSA9IGRzdDsKKwlleGVjWzFdLnJlbG9jYXRpb25f Y291bnQgPSAwOworCWV4ZWNbMV0ucmVsb2NzX3B0ciA9IDA7CisJZXhlY1sxXS5hbGlnbm1lbnQg PSAwOworCWV4ZWNbMV0ub2Zmc2V0ID0gMDsKKwlleGVjWzFdLmZsYWdzID0gMDsKKwlleGVjWzFd LnJzdmQxID0gMDsKKwlleGVjWzFdLnJzdmQyID0gMDsKKworCWV4ZWNbMl0uaGFuZGxlID0gaGFu ZGxlOworCWlmIChpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpID49IDgpCisJCWV4 ZWNbMl0ucmVsb2NhdGlvbl9jb3VudCA9IGxlbiA+IDU2ID8gNCA6IDI7CisJZWxzZQorCQlleGVj WzJdLnJlbG9jYXRpb25fY291bnQgPSBsZW4gPiA0MCA/IDQgOiAyOworCWV4ZWNbMl0ucmVsb2Nz X3B0ciA9ICh1aW50cHRyX3QpcmVsb2M7CisJZXhlY1syXS5hbGlnbm1lbnQgPSAwOworCWV4ZWNb Ml0ub2Zmc2V0ID0gMDsKKwlleGVjWzJdLmZsYWdzID0gMDsKKwlleGVjWzJdLnJzdmQxID0gMDsK KwlleGVjWzJdLnJzdmQyID0gMDsKKworCXJpbmcgPSAwOworCWlmIChIQVNfQkxUX1JJTkcoaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCkpKQorCQlyaW5nID0gSTkxNV9FWEVDX0JMVDsKKworCWV4ZWNi dWYuYnVmZmVyc19wdHIgPSAodWludHB0cl90KWV4ZWM7CisJZXhlY2J1Zi5idWZmZXJfY291bnQg PSAzOworCWV4ZWNidWYuYmF0Y2hfc3RhcnRfb2Zmc2V0ID0gMDsKKwlleGVjYnVmLmJhdGNoX2xl biA9IGxlbjsKKwlleGVjYnVmLmNsaXByZWN0c19wdHIgPSAwOworCWV4ZWNidWYubnVtX2NsaXBy ZWN0cyA9IDA7CisJZXhlY2J1Zi5EUjEgPSAwOworCWV4ZWNidWYuRFI0ID0gMDsKKwlleGVjYnVm LmZsYWdzID0gcmluZzsKKwlpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250ZXh0X2lkKGV4ZWNidWYs IDApOworCWV4ZWNidWYucnN2ZDIgPSAwOworCisJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsK KworCWdlbV9zeW5jKGZkLCBoYW5kbGUpOworCisJZmZsdXNoKHN0ZG91dCk7CisJZ2VtX2Nsb3Nl KGZkLCBoYW5kbGUpOworfQorCitzdGF0aWMgaW50IGRvX2ZhbGxvYyhpbnQgZmQsIGludCBoYW5k bGUsCisJCSAgICAgdWludDMyX3QgbW9kZSwgdWludDMyX3Qgc3RhcnQsIHVpbnQzMl90IGxlbmd0 aCkKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBkcm1faTkxNV9nZW1fZmFsbG9jYXRlIGdlbV9ibzsK KwlnZW1fYm8uaGFuZGxlID0gaGFuZGxlOworCWdlbV9iby5zdGFydCA9IHN0YXJ0OworCWdlbV9i by5sZW5ndGggPSBsZW5ndGg7CisJZ2VtX2JvLm1vZGUgPSBtb2RlOworCXJldCA9IGlvY3RsKGZk LCBEUk1fSU9DVExfSTkxNV9HRU1fRkFMTE9DQVRFLCAmZ2VtX2JvKTsKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgdm9pZCB0ZXN0X2FyZ3VtZW50c192YWxpZGF0aW9uKGludCBmZCkKK3sKKwlp bnQgcmV0OworCXVpbnQzMl90IGhhbmRsZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2ZhbGxvY2F0 ZSBnZW1fYm87CisKKwloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCBPQkpFQ1RfU0laRSk7CisJLyog aW52YWxpZCBtb2RlICovCisJcmV0ID0gZG9fZmFsbG9jKGZkLCBoYW5kbGUsIH4wLCAwLCBPQkpF Q1RfU0laRSA+PiAxKTsKKwlpZ3RfYXNzZXJ0KHJldCAhPSAwKTsKKworCXJldCA9IGRvX2ZhbGxv YyhmZCwgaGFuZGxlLCAwLCAwLCBPQkpFQ1RfU0laRSA+PiAxKTsKKwlpZ3RfYXNzZXJ0KHJldCAh PSAwKTsKKworCS8qIGludmFsaWQgc3RhcnQgKi8KKwlyZXQgPSBkb19mYWxsb2MoZmQsIGhhbmRs ZSwgSTkxNV9HRU1fRkFMTE9DX01BUktfU0NSQVRDSCwKKwkJCU9CSkVDVF9TSVpFICsgKE9CSkVD VF9TSVpFID4+IDEpLAorCQkJT0JKRUNUX1NJWkUgPj4gMSk7CisJaWd0X2Fzc2VydChyZXQgIT0g MCk7CisKKwkvKiBpbnZhbGlkIGxlbmd0aCAqLworCXJldCA9IGRvX2ZhbGxvYyhmZCwgaGFuZGxl LCBJOTE1X0dFTV9GQUxMT0NfTUFSS19TQ1JBVENILAorCQkJT0JKRUNUX1NJWkUgPj4gMSwgfjAp OworCWlndF9hc3NlcnQocmV0ICE9IDApOworCisJLyogbWFya2VkIHJlZ2lvbiBvdmVyZmxvd2lu ZyBvYmogcmFuZ2UgKi8KKwlyZXQgPSBkb19mYWxsb2MoZmQsIGhhbmRsZSwgSTkxNV9HRU1fRkFM TE9DX01BUktfU0NSQVRDSCwKKwkJCU9CSkVDVF9TSVpFID4+IDEsIE9CSkVDVF9TSVpFKTsKKwlp Z3RfYXNzZXJ0KHJldCAhPSAwKTsKKworCWdlbV9jbG9zZShmZCwgaGFuZGxlKTsKK30KKworc3Rh dGljIHZvaWQgdGVzdF9yYW5kb21fdXNhZ2UoaW50IGZkKQoreworCWludCByZXQ7CisJdWludDMy X3Qgc3JjLCBkc3Q7CisJdWludDhfdCAqc3JjX2FkZHIsICpkc3RfYWRkcjsKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2ZhbGxvY2F0ZSBnZW1fYm87CisJdWludDhfdCBidWZbT0JKRUNUX1NJWkVdOwor CisJc3JjID0gY3JlYXRlX2JvKGZkKTsKKwlkc3QgPSBnZW1fY3JlYXRlKGZkLCBPQkpFQ1RfU0la RSk7CisKKwlnZW1fcmVhZChmZCwgc3JjLCAwLCBidWYsIE9CSkVDVF9TSVpFKTsKKwlkb19ibGl0 KGZkLCBzcmMsIGRzdCwgT0JKRUNUX1NJWkUpOworCisJc3JjX2FkZHIgPSBnZW1fbW1hcF9fZ3R0 KGZkLCBzcmMsIE9CSkVDVF9TSVpFLCBQUk9UX1dSSVRFIHwgUFJPVF9SRUFEKTsKKwlkc3RfYWRk ciA9IGdlbV9tbWFwX19ndHQoZmQsIGRzdCwgT0JKRUNUX1NJWkUsIFBST1RfV1JJVEUgfCBQUk9U X1JFQUQpOworCWlndF9hc3NlcnQobWVtY21wKGRzdF9hZGRyLCBzcmNfYWRkciwgT0JKRUNUX1NJ WkUpID09IDApOworCisJLyogbWFyayB3aG9sZSBvYmplY3QgYXMgc2NyYXRjaCAqLworCXJldCA9 IGRvX2ZhbGxvYyhmZCwgZHN0LCBJOTE1X0dFTV9GQUxMT0NfTUFSS19TQ1JBVENILAorCQkJMCwg T0JKRUNUX1NJWkUpOworCWlndF9hc3NlcnQocmV0ID09IDApOworCWlndF9hc3NlcnQobWVtY21w KGRzdF9hZGRyLCBzcmNfYWRkciwgT0JKRUNUX1NJWkUpICE9IDApOworCisKKwkvKiB1bm1hcmsg d2hvbGUgb2JqZWN0ICovCisJcmV0ID0gZG9fZmFsbG9jKGZkLCBkc3QsIEk5MTVfR0VNX0ZBTExP Q19VTk1BUktfU0NSQVRDSCwKKwkJCTAsIE9CSkVDVF9TSVpFKTsKKwlpZ3RfYXNzZXJ0KHJldCA9 PSAwKTsKKworCWdlbV93cml0ZShmZCwgZHN0LCAwLCBidWYsIE9CSkVDVF9TSVpFKTsKKworCW1l bXNldChidWYsIDB4MDAsIE9CSkVDVF9TSVpFKTsKKwlnZW1fcmVhZChmZCwgZHN0LCAwLCBidWYs IE9CSkVDVF9TSVpFKTsKKwlpZ3RfYXNzZXJ0KG1lbWNtcChidWYsIHNyY19hZGRyLCBPQkpFQ1Rf U0laRSkgPT0gMCk7CisKKwltdW5tYXAoc3JjX2FkZHIsIE9CSkVDVF9TSVpFKTsKKwltdW5tYXAo ZHN0X2FkZHIsIE9CSkVDVF9TSVpFKTsKKwlnZW1fY2xvc2UoZmQsIHNyYyk7CisJZ2VtX2Nsb3Nl KGZkLCBkc3QpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X3B3cml0ZShpbnQgZmQpCit7CisJaW50 IHJldDsKKwl1aW50MzJfdCBvZmZzZXQ7CisJdWludDMyX3Qgc3JjLCBkc3Q7CisJdWludDhfdCAq c3JjX2FkZHIsICpkc3RfYWRkcjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2ZhbGxvY2F0ZSBnZW1f Ym87CisJdWludDhfdCBzcmNfYnVmW09CSkVDVF9TSVpFXTsKKwl1aW50OF90IGRzdF9idWZbT0JK RUNUX1NJWkVdOworCisJc3JjID0gY3JlYXRlX2JvKGZkKTsKKwlkc3QgPSBjcmVhdGVfYm8oZmQp OworCisJcmV0ID0gZG9fZmFsbG9jKGZkLCBkc3QsIEk5MTVfR0VNX0ZBTExPQ19NQVJLX1NDUkFU Q0gsCisJCQlPQkpFQ1RfU0laRSA+PiAxLCBPQkpFQ1RfU0laRSA+PiAxKTsKKwlpZ3RfYXNzZXJ0 KHJldCA9PSAwKTsKKworCWdlbV9yZWFkKGZkLCBzcmMsIDAsIHNyY19idWYsIE9CSkVDVF9TSVpF KTsKKwlnZW1fcmVhZChmZCwgZHN0LCAwLCBkc3RfYnVmLCBPQkpFQ1RfU0laRSk7CisJaWd0X2Fz c2VydChtZW1jbXAoc3JjX2J1ZiwgZHN0X2J1ZiwgT0JKRUNUX1NJWkUpICE9IDApOworCisJcmV0 ID0gZG9fZmFsbG9jKGZkLCBkc3QsIEk5MTVfR0VNX0ZBTExPQ19VTk1BUktfU0NSQVRDSCwKKwkJ CU9CSkVDVF9TSVpFID4+IDEsIE9CSkVDVF9TSVpFID4+IDEpOworCWlndF9hc3NlcnQocmV0ID09 IDApOworCW9mZnNldCA9IE9CSkVDVF9TSVpFID4+IDE7CisJZ2VtX3dyaXRlKGZkLCBkc3QsIG9m ZnNldCwgc3JjX2J1ZiArIG9mZnNldCwgT0JKRUNUX1NJWkUgPj4gMSk7CisKKwltZW1zZXQoZHN0 X2J1ZiwgMHgwMCwgT0JKRUNUX1NJWkUpOworCWdlbV9yZWFkKGZkLCBkc3QsIDAsIGRzdF9idWYs IE9CSkVDVF9TSVpFKTsKKwlpZ3RfYXNzZXJ0KG1lbWNtcChzcmNfYnVmLCBkc3RfYnVmLCBPQkpF Q1RfU0laRSkgPT0gMCk7CisKKwlnZW1fY2xvc2UoZmQsIHNyYyk7CisJZ2VtX2Nsb3NlKGZkLCBk c3QpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X211bHRpcGxlX3JlZ2lvbnMoaW50IGZkKQorewor CWludCBpOworCWludCByZXQsIGxlbjsKKwl1aW50MzJfdCBoYW5kbGUsIHNyYywgZHN0OworCXVp bnQzMl90IGZhbGxvY19zdGFydCwgZmFsbG9jX2xlbjsKKwl1aW50OF90ICpzcmNfYWRkciwgKmRz dF9hZGRyOworCisJcHJpbnRmKCJHRU0gb2JqZWN0IGZhbGxvYyBvZiBtdWx0aXBsZSByZWdpb25z IHRlc3RcbiIpOworCisJc3JjID0gY3JlYXRlX2JvKGZkKTsKKwlkc3QgPSBnZW1fY3JlYXRlKGZk LCBPQkpFQ1RfU0laRSk7CisKKwlkb19ibGl0KGZkLCBzcmMsIGRzdCwgT0JKRUNUX1NJWkUpOwor CisJc3JjX2FkZHIgPSBnZW1fbW1hcF9fZ3R0KGZkLCBzcmMsIE9CSkVDVF9TSVpFLCBQUk9UX1dS SVRFIHwgUFJPVF9SRUFEKTsKKwlkc3RfYWRkciA9IGdlbV9tbWFwX19ndHQoZmQsIGRzdCwgT0JK RUNUX1NJWkUsIFBST1RfV1JJVEUgfCBQUk9UX1JFQUQpOworCWlndF9hc3NlcnQobWVtY21wKGRz dF9hZGRyLCBzcmNfYWRkciwgT0JKRUNUX1NJWkUpID09IDApOworCisJLyogbWFyayBtdWx0aXBs ZSByYW5nZXMgd2l0aG91dCBvdmVybGFwICovCisJZmFsbG9jX3N0YXJ0ID0gT0JKRUNUX1NJWkUg Pj4gMjsKKwlmYWxsb2NfbGVuID0gT0JKRUNUX1NJWkUgPj4gMjsKKwlyZXQgPSBkb19mYWxsb2Mo ZmQsIGRzdCwgSTkxNV9HRU1fRkFMTE9DX01BUktfU0NSQVRDSCwKKwkJCWZhbGxvY19zdGFydCwg ZmFsbG9jX2xlbik7CisJaWd0X2Fzc2VydChyZXQgPT0gMCk7CisKKwlmYWxsb2Nfc3RhcnQgPSAo T0JKRUNUX1NJWkUgPj4gMSkgKyAoT0JKRUNUX1NJWkUgPj4gMik7CisJcmV0ID0gZG9fZmFsbG9j KGZkLCBkc3QsIEk5MTVfR0VNX0ZBTExPQ19NQVJLX1NDUkFUQ0gsCisJCQlmYWxsb2Nfc3RhcnQs IGZhbGxvY19sZW4pOworCWlndF9hc3NlcnQocmV0ID09IDApOworCisJLyogZG8gc29tZSBvcGVy YXRpb24gKi8KKwlkb19ibGl0KGZkLCBzcmMsIGRzdCwgT0JKRUNUX1NJWkUpOworCWlndF9hc3Nl cnQobWVtY21wKGRzdF9hZGRyLCBzcmNfYWRkciwgT0JKRUNUX1NJWkUpICE9IDApOworCisJLyog dW5tYXJrIG11bHRpcGxlIHJhbmdlcyB3aXRob3V0IG92ZXJsYXAgKi8KKwlmYWxsb2Nfc3RhcnQg PSBPQkpFQ1RfU0laRSA+PiAyOworCWZhbGxvY19sZW4gPSBPQkpFQ1RfU0laRSA+PiAyOworCXJl dCA9IGRvX2ZhbGxvYyhmZCwgZHN0LCBJOTE1X0dFTV9GQUxMT0NfVU5NQVJLX1NDUkFUQ0gsCisJ CQlmYWxsb2Nfc3RhcnQsIGZhbGxvY19sZW4pOworCWlndF9hc3NlcnQocmV0ID09IDApOworCisJ ZmFsbG9jX3N0YXJ0ID0gKE9CSkVDVF9TSVpFID4+IDEpICsgKE9CSkVDVF9TSVpFID4+IDIpOwor CWZhbGxvY19sZW4gPSBPQkpFQ1RfU0laRSA+PiAyOworCXJldCA9IGRvX2ZhbGxvYyhmZCwgZHN0 LCBJOTE1X0dFTV9GQUxMT0NfVU5NQVJLX1NDUkFUQ0gsCisJCQlmYWxsb2Nfc3RhcnQsIGZhbGxv Y19sZW4pOworCWlndF9hc3NlcnQocmV0ID09IDApOworCisJbXVubWFwKGRzdF9hZGRyLCBPQkpF Q1RfU0laRSk7CisJZHN0X2FkZHIgPSBnZW1fbW1hcF9fZ3R0KGZkLCBkc3QsIE9CSkVDVF9TSVpF LCBQUk9UX1dSSVRFIHwgUFJPVF9SRUFEKTsKKworCS8qIGJsdCB3aG9sZSBvYmogdG8gZW5zdXJl IHVubWFya2luZyBpcyBvayAqLworCWRvX2JsaXQoZmQsIHNyYywgZHN0LCBPQkpFQ1RfU0laRSk7 CisKKwlpZ3RfYXNzZXJ0KG1lbWNtcChkc3RfYWRkciwgc3JjX2FkZHIsIE9CSkVDVF9TSVpFKSA9 PSAwKTsKKworCisJLyogbWFyayBtdWx0aXBsZSByYW5nZXMgd2l0aCBvdmVybGFwICovCisJZmFs bG9jX3N0YXJ0ID0gT0JKRUNUX1NJWkUgPj4gMjsKKwlmYWxsb2NfbGVuID0gT0JKRUNUX1NJWkUg Pj4gMjsKKwlyZXQgPSBkb19mYWxsb2MoZmQsIGRzdCwgSTkxNV9HRU1fRkFMTE9DX01BUktfU0NS QVRDSCwKKwkJICBmYWxsb2Nfc3RhcnQsIGZhbGxvY19sZW4pOworCWlndF9hc3NlcnQocmV0ID09 IDApOworCisJZmFsbG9jX2xlbiA9IE9CSkVDVF9TSVpFID4+IDE7CisJcmV0ID0gZG9fZmFsbG9j KGZkLCBkc3QsIEk5MTVfR0VNX0ZBTExPQ19NQVJLX1NDUkFUQ0gsCisJCSAgZmFsbG9jX3N0YXJ0 LCBmYWxsb2NfbGVuKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKKworCS8qIGRvIHNvbWUgb3Bl cmF0aW9uICovCisJZG9fYmxpdChmZCwgc3JjLCBkc3QsIE9CSkVDVF9TSVpFKTsKKwlpZ3RfYXNz ZXJ0KG1lbWNtcChkc3RfYWRkciwgc3JjX2FkZHIsIE9CSkVDVF9TSVpFKSAhPSAwKTsKKworCS8q IHVubWFyayB0aGUgd2hvbGUgcmVnaW9uICovCisJZmFsbG9jX3N0YXJ0ID0gT0JKRUNUX1NJWkUg Pj4gMjsKKwlmYWxsb2NfbGVuID0gT0JKRUNUX1NJWkUgPj4gMTsKKwlyZXQgPSBkb19mYWxsb2Mo ZmQsIGRzdCwgSTkxNV9HRU1fRkFMTE9DX1VOTUFSS19TQ1JBVENILAorCQkgIGZhbGxvY19zdGFy dCwgZmFsbG9jX2xlbik7CisJaWd0X2Fzc2VydChyZXQgPT0gMCk7CisKKwltdW5tYXAoZHN0X2Fk ZHIsIE9CSkVDVF9TSVpFKTsKKwlkc3RfYWRkciA9IGdlbV9tbWFwX19ndHQoZmQsIGRzdCwgT0JK RUNUX1NJWkUsIFBST1RfV1JJVEUgfCBQUk9UX1JFQUQpOworCisJLyogYmx0IHdob2xlIG9iaiB0 byBlbnN1cmUgdW5tYXJraW5nIGlzIG9rICovCisJZG9fYmxpdChmZCwgc3JjLCBkc3QsIE9CSkVD VF9TSVpFKTsKKworCWlndF9hc3NlcnQobWVtY21wKGRzdF9hZGRyLCBzcmNfYWRkciwgT0JKRUNU X1NJWkUpID09IDApOworCisJbXVubWFwKHNyY19hZGRyLCBPQkpFQ1RfU0laRSk7CisJbXVubWFw KGRzdF9hZGRyLCBPQkpFQ1RfU0laRSk7CisJZ2VtX2Nsb3NlKGZkLCBzcmMpOworCWdlbV9jbG9z ZShmZCwgZHN0KTsKK30KKworaW50IGZkOworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCit7CisJaWd0X3N1YnRlc3RfaW5pdChhcmdjLCBhcmd2KTsKKworCWlndF9maXh0dXJlCisJ CWZkID0gZHJtX29wZW5fYW55KCk7CisKKwlpZ3Rfc3VidGVzdCgiYXJndW1lbnRzLXZhbGlkYXRp b24iKQorCQl0ZXN0X2FyZ3VtZW50c192YWxpZGF0aW9uKGZkKTsKKworCWlndF9zdWJ0ZXN0KCJy YW5kb20tdXNhZ2UiKQorCQl0ZXN0X3JhbmRvbV91c2FnZShmZCk7CisKKwlpZ3Rfc3VidGVzdCgi dXNhZ2Utd2l0aC1wd3JpdGUvcHJlYWQiKQorCQl0ZXN0X3B3cml0ZShmZCk7CisKKwlpZ3Rfc3Vi dGVzdCgidXNhZ2Utd2l0aC1tdWx0aXBsZS1yZWdpb25zIikKKwkJdGVzdF9tdWx0aXBsZV9yZWdp b25zKGZkKTsKKworCWNsb3NlKGZkKTsKKwlpZ3RfZXhpdCgpOworCisJcmV0dXJuIDA7Cit9Ci0t IAoxLjkuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK