From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [RFC i-g-t PATCH 1/3] lib: add igt_dummyload Date: Wed, 12 Oct 2016 14:59:52 +0300 Message-ID: <20161012115954.16803-2-abdiel.janulgue@linux.intel.com> References: <20161012115954.16803-1-abdiel.janulgue@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3E8546E09A for ; Wed, 12 Oct 2016 12:00:02 +0000 (UTC) In-Reply-To: <20161012115954.16803-1-abdiel.janulgue@linux.intel.com> 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 R2VuZXJhbGl6ZWQgZnJvbSBhdXRvLXR1bmVkIEdQVSBkdW1teSB3b3JrbG9hZCBpbiBnZW1fd2Fp dCBhbmQga21zX2ZsaXAKClNpZ25lZC1vZmYtYnk6IEFiZGllbCBKYW51bGd1ZSA8YWJkaWVsLmph bnVsZ3VlQGxpbnV4LmludGVsLmNvbT4KLS0tCiBsaWIvTWFrZWZpbGUuc291cmNlcyB8ICAgMiAr CiBsaWIvaWd0LmggICAgICAgICAgICB8ICAgMSArCiBsaWIvaWd0X2R1bW15bG9hZC5jICB8IDQx OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxp Yi9pZ3RfZHVtbXlsb2FkLmggIHwgIDYzICsrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDQ4NSBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9kdW1teWxvYWQuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfZHVtbXlsb2FkLmgKCmRpZmYgLS1naXQgYS9saWIvTWFr ZWZpbGUuc291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IGU4ZTI3N2IuLjdmYzVl YzIgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9NYWtlZmlsZS5z b3VyY2VzCkBAIC03NSw2ICs3NSw4IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWlndF9kcmF3 LmgJCVwKIAlpZ3RfcG0uYwkJXAogCWlndF9wbS5oCQlcCisJaWd0X2R1bW15bG9hZC5jCQlcCisJ aWd0X2R1bW15bG9hZC5oCQlcCiAJdXdpbGRtYXQvdXdpbGRtYXQuaAlcCiAJdXdpbGRtYXQvdXdp bGRtYXQuYwlcCiAJJChOVUxMKQpkaWZmIC0tZ2l0IGEvbGliL2lndC5oIGIvbGliL2lndC5oCmlu ZGV4IGQ3NTFmMjQuLmEwMDI4ZDUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3QuaAorKysgYi9saWIvaWd0 LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJpZ3RfY29yZS5oIgogI2luY2x1ZGUgImln dF9kZWJ1Z2ZzLmgiCiAjaW5jbHVkZSAiaWd0X2RyYXcuaCIKKyNpbmNsdWRlICJpZ3RfZHVtbXls b2FkLmgiCiAjaW5jbHVkZSAiaWd0X2ZiLmgiCiAjaW5jbHVkZSAiaWd0X2d0LmgiCiAjaW5jbHVk ZSAiaWd0X2ttcy5oIgpkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1teWxvYWQuYyBiL2xpYi9pZ3Rf ZHVtbXlsb2FkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA4ZDgzOQot LS0gL2Rldi9udWxsCisrKyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmMKQEAgLTAsMCArMSw0MTkgQEAK Ky8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hl ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImln dC5oIgorI2luY2x1ZGUgImlndF9kdW1teWxvYWQuaCIKKyNpbmNsdWRlIDx0aW1lLmg+CisKKy8q KgorICogU0VDVElPTjppZ3RfZHVtbXlsb2FkCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IExpYnJh cnkgZm9yIHN1Ym1pdHRpbmcgYXV0by10dW5lZCBkdW1teSBHUFUgd29ya2xvYWRzCisgKiBAdGl0 bGU6IER1bW15bG9hZAorICogQGluY2x1ZGU6IGlndC5oCisgKgorICogQSBsb3Qgb2YgaWd0IHRl c3RjYXNlcyBuZWVkIHNvbWUgZHVtbXkgbG9hZCB0byBtYWtlIHN1cmUgYSByYWNlIHdpbmRvdyBp cworICogYmlnIGVub3VnaC4gVW5mb3J0dW5hdGVseSBoYXZpbmcgYSBmaXhlZCBhbW91bnQgb2Yg d29ya2xvYWQgbGVhZHMgdG8KKyAqIHNwdXJpb3VzIHRlc3QgZmFpbHVyZXMgb3Igb3ZlcnRseSBs b25nIHJ1bnRpbWVzIG9uIHNvbWUgZmFzdC9zbG93IHBsYXRmb3Jtcy4KKyAqIFRoaXMgbGlicmFy eSBjb250YWlucyBmdW5jdGlvbmFsaXR5IHRvIHN1Ym1pdCBHUFUgd29ya2xvYWRzIHRoYXQgaXMK KyAqIGR5bmFtaWNhbGx5IHR1bmVkIHRvIGNvbnN1bWUgYSBzcGVjaWZpYyBhbW91bnQgb2YgdGlt ZS4KKyAqLworCisjZGVmaW5lIFVTRUNfUEVSX1NFQyAxMDAwMDAwTAorI2RlZmluZSBOU0VDX1BF Ul9TRUMgMTAwMDAwMDAwMEwKKworLyogSW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHRvIGF2b2lk IGhhdmluZyB0byBwYXNzIHRvbnMgb2YgcGFyYW1ldGVycworICogYXJvdW5kLiAqLworc3RydWN0 IGR1bW15X2luZm8geworCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKKwlzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoOworCWludCBkcm1fZmQ7CisJdWludDMyX3QgYnVmX2hhbmRsZTsK Kwl1aW50MzJfdCBidWZfc3RyaWRlOworCXVpbnQzMl90IGJ1Zl90aWxpbmc7CisJaW50IGZiX3dp ZHRoOworCWludCBmYl9oZWlnaHQ7Cit9OworCitzdGF0aWMgdm9pZCBibGl0X2NvcHkoc3RydWN0 IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKKwkJICAgICAgZHJtX2ludGVsX2JvICpkc3QsIGRy bV9pbnRlbF9ibyAqc3JjLAorCQkgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGlu dCBoZWlnaHQsCisJCSAgICAgIHVuc2lnbmVkIGludCBkc3RfcGl0Y2gsIHVuc2lnbmVkIGludCBz cmNfcGl0Y2gpCit7CisJQkxJVF9DT1BZX0JBVENIX1NUQVJUKDApOworCU9VVF9CQVRDSCgoMyA8 PCAyNCkgfCAvKiAzMiBiaXRzICovCisJCSAgKDB4Y2MgPDwgMTYpIHwgLyogY29weSBST1AgKi8K KwkJICBkc3RfcGl0Y2gpOworCU9VVF9CQVRDSCgwIDw8IDE2IHwgMCk7CisJT1VUX0JBVENIKGhl aWdodCA8PCAxNiB8IHdpZHRoKTsKKwlPVVRfUkVMT0NfRkVOQ0VEKGRzdCwgSTkxNV9HRU1fRE9N QUlOX1JFTkRFUiwgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCk7CisJT1VUX0JBVENIKDAgPDwg MTYgfCAwKTsKKwlPVVRfQkFUQ0goc3JjX3BpdGNoKTsKKwlPVVRfUkVMT0NfRkVOQ0VEKHNyYywg STkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCwgMCk7CisJQURWQU5DRV9CQVRDSCgpOworCisJaWYg KGJhdGNoLT5nZW4gPj0gNikgeworCQlCRUdJTl9CQVRDSCgzLCAwKTsKKwkJT1VUX0JBVENIKFhZ X1NFVFVQX0NMSVBfQkxUX0NNRCk7CisJCU9VVF9CQVRDSCgwKTsKKwkJT1VUX0JBVENIKDApOwor CQlBRFZBTkNFX0JBVENIKCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBibGl0X2ZpbGwoc3RydWN0 IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwgZHJtX2ludGVsX2JvICpkc3QsCisJCSAgICAgIHVu c2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCkKK3sKKwlDT0xPUl9CTElUX0NP UFlfQkFUQ0hfU1RBUlQoQ09MT1JfQkxUX1dSSVRFX0FMUEhBIHwKKwkJCQkgICAgWFlfQ09MT1Jf QkxUX1dSSVRFX1JHQik7CisJT1VUX0JBVENIKCgzIDw8IDI0KQl8IC8qIDMyIEJpdCBDb2xvciAq LworCQkgICgweEYwIDw8IDE2KQl8IC8qIFJhc3RlciBPUCBjb3B5IGJhY2tncm91bmQgcmVnaXN0 ZXIgKi8KKwkJICAwKTsJCSAgLyogRGVzdCBwaXRjaCBpcyAwICovCisJT1VUX0JBVENIKDApOwor CU9VVF9CQVRDSCh3aWR0aCA8PCAxNgl8CisJCSAgaGVpZ2h0KTsKKwlPVVRfUkVMT0NfRkVOQ0VE KGRzdCwgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCk7 CisJT1VUX0JBVENIKHJhbmQoKSk7IC8qIHJhbmRvbSBwYXR0ZXJuICovCisJQURWQU5DRV9CQVRD SCgpOworfQorCitzdGF0aWMgaW50IGVtaXRfZHVtbXlfbG9hZF9ibGl0Y29weShzdHJ1Y3QgZHVt bXlfaW5mbyAqZCwgaW50IGxpbWl0LCBpbnQgdGltZW91dCkKK3sKKwlpbnQgaSwgcmV0ID0gMDsK Kwlkcm1faW50ZWxfYm8gKnNyY19ibywgKmRzdF9ibywgKmZiX2JvOworCXN0cnVjdCBpbnRlbF9i YXRjaGJ1ZmZlciAqYmF0Y2ggPSBkLT5iYXRjaDsKKwlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3Ig PSBkLT5idWZtZ3I7CisKKwlpZ3RfcmVxdWlyZShidWZtZ3IpOworCisJc3JjX2JvID0gZHJtX2lu dGVsX2JvX2FsbG9jKGJ1Zm1nciwgImR1bW15X2JvIiwgMjA0OCoyMDQ4KjQsIDQwOTYpOworCWln dF9hc3NlcnQoc3JjX2JvKTsKKworCWRzdF9ibyA9IGRybV9pbnRlbF9ib19hbGxvYyhidWZtZ3Is ICJkdW1teV9ibyIsIDIwNDgqMjA0OCo0LCA0MDk2KTsKKwlpZ3RfYXNzZXJ0KGRzdF9ibyk7CisK KwlmYl9ibyA9IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGJ1Zm1nciwgZC0+ZHJtX2ZkLCAiaW1w b3J0ZWQiLAorCQkJCSAgICAgICAgZC0+YnVmX2hhbmRsZSk7CisJaWd0X2Fzc2VydChmYl9ibyk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgbGltaXQ7IGkrKykgeworCQlibGl0X2NvcHkoYmF0Y2gsIGRz dF9ibywgc3JjX2JvLAorCQkJICAyMDQ4LCAyMDQ4LAorCQkJICAyMDQ4KjQsIDIwNDgqNCk7CisJ CWlndF9zd2FwKHNyY19ibywgZHN0X2JvKTsKKwl9CisJYmxpdF9jb3B5KGJhdGNoLCBmYl9ibywg c3JjX2JvLAorCQkgIG1pbihkLT5mYl93aWR0aCwgMjA0OCksIG1pbihkLT5mYl9oZWlnaHQsIDIw NDgpLAorCQkgIGQtPmJ1Zl9zdHJpZGUsIDIwNDgqNCk7CisKKwlpbnRlbF9iYXRjaGJ1ZmZlcl9m bHVzaChiYXRjaCk7CisKKwlpZiAodGltZW91dCA+IDApCisJCXJldCA9IGRybV9pbnRlbF9nZW1f Ym9fd2FpdChmYl9ibywgdGltZW91dCAqIE5TRUNfUEVSX1NFQyk7CisJZHJtX2ludGVsX2JvX3Vu cmVmZXJlbmNlKHNyY19ibyk7CisJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGRzdF9ibyk7CisJ ZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGZiX2JvKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQgZW1pdF9kdW1teV9sb2FkX2JsaXRmaWxsKHN0cnVjdCBkdW1teV9pbmZvICpkLCBp bnQgbGltaXQsIGludCB0aW1lb3V0KQoreworCWludCBpLCByZXQgPSAwOworCXN0cnVjdCBpbnRl bF9iYXRjaGJ1ZmZlciAqYmF0Y2ggPSBkLT5iYXRjaDsKKwlkcm1faW50ZWxfYnVmbWdyICpidWZt Z3IgPSBkLT5idWZtZ3I7CisJZHJtX2ludGVsX2JvICpkc3RfYm8gPSBnZW1faGFuZGxlX3RvX2xp YmRybV9ibyhidWZtZ3IsIGQtPmRybV9mZCwgIiIsCisJCQkJCQkgICAgICAgZC0+YnVmX2hhbmRs ZSk7CisJaWd0X3JlcXVpcmUoYnVmbWdyKTsKKwlpZ3RfYXNzZXJ0KGRzdF9ibyk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgbGltaXQ7IGkrKykgeworCQlibGl0X2ZpbGwoYmF0Y2gsIGRzdF9ibywKKwkJ CSAgbWluKGQtPmZiX3dpZHRoLCBkc3RfYm8tPnNpemUvMiksCisJCQkgIG1pbihkLT5mYl9oZWln aHQsIGRzdF9iby0+c2l6ZS8yKSk7CisJfQorCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoKGJhdGNo KTsKKworCWlmICh0aW1lb3V0ID4gMCkKKwkJcmV0ID0gZHJtX2ludGVsX2dlbV9ib193YWl0KGRz dF9ibywgdGltZW91dCAqIE5TRUNfUEVSX1NFQyk7CisJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNl KGRzdF9ibyk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGVtaXRfZHVtbXlfbG9h ZF9yZW5kZXJjb3B5KHN0cnVjdCBkdW1teV9pbmZvICpkLCBpbnQgbGltaXQsIGludCB0aW1lb3V0 KQoreworCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2ggPSBkLT5iYXRjaDsKKwlkcm1f aW50ZWxfYnVmbWdyICpidWZtZ3IgPSBkLT5idWZtZ3I7CisJc3RhdGljIHVpbnQzMl90IGRldmlk ID0gMDsKKwlpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgY29weWZ1bmM7CisJc3RydWN0IGlndF9idWYg c2JbM10sICpzcmMsICpkc3QsICpmYjsKKwlpbnQgaSwgcmV0ID0gMDsKKworCWlndF9yZXF1aXJl KGJ1Zm1ncik7CisKKwlpZiAoIWRldmlkKQorCQlkZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQo ZC0+ZHJtX2ZkKTsKKwljb3B5ZnVuYyA9IGlndF9nZXRfcmVuZGVyX2NvcHlmdW5jKGRldmlkKTsK KwlpZiAoY29weWZ1bmMgPT0gTlVMTCkKKwkJcmV0dXJuIGVtaXRfZHVtbXlfbG9hZF9ibGl0Zmls bChkLCBsaW1pdCwgdGltZW91dCk7CisKKwlzYlswXS5ibyA9IGRybV9pbnRlbF9ib19hbGxvYyhi dWZtZ3IsICJkdW1teV9ibyIsIDIwNDgqMjA0OCo0LCA0MDk2KTsKKwlpZ3RfYXNzZXJ0KHNiWzBd LmJvKTsKKwlzYlswXS5zaXplID0gc2JbMF0uYm8tPnNpemU7CisJc2JbMF0udGlsaW5nID0gSTkx NV9USUxJTkdfTk9ORTsKKwlzYlswXS5kYXRhID0gTlVMTDsKKwlzYlswXS5udW1fdGlsZXMgPSBz YlswXS5iby0+c2l6ZTsKKwlzYlswXS5zdHJpZGUgPSA0ICogMjA0ODsKKworCXNiWzFdLmJvID0g ZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwgImR1bW15X2JvIiwgMjA0OCoyMDQ4KjQsIDQwOTYp OworCWlndF9hc3NlcnQoc2JbMV0uYm8pOworCXNiWzFdLnNpemUgPSBzYlsxXS5iby0+c2l6ZTsK KwlzYlsxXS50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOworCXNiWzFdLmRhdGEgPSBOVUxMOwor CXNiWzFdLm51bV90aWxlcyA9IHNiWzFdLmJvLT5zaXplOworCXNiWzFdLnN0cmlkZSA9IDQgKiAy MDQ4OworCisJc2JbMl0uYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhidWZtZ3IsIGQtPmRy bV9mZCwgImltcG9ydGVkIiwKKwkJCQkJICAgZC0+YnVmX2hhbmRsZSk7CisJaWd0X2Fzc2VydChz YlsyXS5ibyk7CisJc2JbMl0uc2l6ZSA9IHNiWzJdLmJvLT5zaXplOworCXNiWzJdLnRpbGluZyA9 IGQtPmJ1Zl90aWxpbmc7CisJc2JbMl0uZGF0YSA9IE5VTEw7CisJc2JbMl0ubnVtX3RpbGVzID0g c2JbMl0uYm8tPnNpemU7CisJc2JbMl0uc3RyaWRlID0gZC0+YnVmX3N0cmlkZTsKKworCXNyYyA9 ICZzYlswXTsKKwlkc3QgPSAmc2JbMV07CisJZmIgPSAmc2JbMl07CisKKwlmb3IgKGkgPSAwOyBp IDwgbGltaXQ7IGkrKykgeworCQljb3B5ZnVuYyhiYXRjaCwgTlVMTCwKKwkJCSBzcmMsIDAsIDAs CisJCQkgMjA0OCwgMjA0OCwKKwkJCSBkc3QsIDAsIDApOworCisJCWlndF9zd2FwKHNyYywgZHN0 KTsKKwl9CisJY29weWZ1bmMoYmF0Y2gsIE5VTEwsCisJCSBzcmMsIDAsIDAsCisJCSBtaW4oZC0+ ZmJfd2lkdGgsIDIwNDgpLCBtaW4oZC0+ZmJfaGVpZ2h0LCAyMDQ4KSwKKwkJIGZiLCAwLCAwKTsK KwlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaChiYXRjaCk7CisKKwlpZiAodGltZW91dCA+IDApCisJ CXJldCA9IGRybV9pbnRlbF9nZW1fYm9fd2FpdChmYi0+Ym8sIHRpbWVvdXQgKiBOU0VDX1BFUl9T RUMpOworCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShzYlswXS5ibyk7CisJZHJtX2ludGVsX2Jv X3VucmVmZXJlbmNlKHNiWzFdLmJvKTsKKwlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2Uoc2JbMl0u Ym8pOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2V0dGltZV91 cyh2b2lkKQoreworCXN0cnVjdCB0aW1lc3BlYyB0czsKKworCWNsb2NrX2dldHRpbWUoQ0xPQ0tf TU9OT1RPTklDLCAmdHMpOworCisJcmV0dXJuIHRzLnR2X3NlYyAqIDEwMDAwMDAgKyB0cy50dl9u c2VjIC8gMTAwMDsKK30KKworc3RhdGljIGludCBjYWxpYnJhdGVfZHVtbXlfbG9hZChzdHJ1Y3Qg ZHVtbXlfaW5mbyAqZCwKKwkJCQljb25zdCBjaGFyICpyaW5nX25hbWUsCisJCQkJaW50IGVub3Vn aF93b3JrX2luX3NlY29uZHMsCisJCQkJaW50ICgqZW1pdCkoc3RydWN0IGR1bW15X2luZm8gKmQs IGludCBsaW1pdCwgaW50IHRpbWVvdXQpKQoreworCXVuc2lnbmVkIGxvbmcgc3RhcnQ7CisJaW50 IG9wcyA9IDE7CisKKwlkbyB7CisJCXVuc2lnbmVkIGxvbmcgZGlmZjsKKwkJaW50IHJldDsKKwkJ c3RhcnQgPSBnZXR0aW1lX3VzKCk7CisJCXJldCA9IGVtaXQoZCwgb3BzLCAxMCk7CisJCWRpZmYg PSBnZXR0aW1lX3VzKCkgLSBzdGFydDsKKworCQlpZiAocmV0IHx8IGRpZmYgLyBVU0VDX1BFUl9T RUMgPiBlbm91Z2hfd29ya19pbl9zZWNvbmRzKQorCQkgIGJyZWFrOworCQlvcHMgKz0gb3BzOwor CX0gd2hpbGUgKG9wcyA8IDEwMDAwMCk7CisKKwlpZ3RfZGVidWcoIiVzIGR1bW15IGxvYWQgY2Fs aWJyYXRlZDogJWQgb3BlcmF0aW9ucyAvIHNlY29uZFxuIiwKKwkJICByaW5nX25hbWUsIG9wcyk7 CisKKwlyZXR1cm4gb3BzOworfQorCitzdGF0aWMgdm9pZCBpZ3RfZHVtbXlfbG9hZF9ibGl0Y29w eShzdHJ1Y3QgZHVtbXlfaW5mbyogZCwgaW50IHNlY29uZHMpCit7CisJc3RhdGljIGludCBvcHNf cGVyX3NlYyA9IDA7CisKKwlpZiAob3BzX3Blcl9zZWMgPT0gMCkKKwkJb3BzX3Blcl9zZWMgPSBj YWxpYnJhdGVfZHVtbXlfbG9hZChkLCAiYmNzIiwgc2Vjb25kcywKKwkJCQkJCSAgIGVtaXRfZHVt bXlfbG9hZF9ibGl0Y29weSk7CisKKwllbWl0X2R1bW15X2xvYWRfYmxpdGNvcHkoZCwgc2Vjb25k cyAqIG9wc19wZXJfc2VjLCAwKTsKK30KKworc3RhdGljIHZvaWQgaWd0X2R1bW15X2xvYWRfYmxp dGZpbGwoc3RydWN0IGR1bW15X2luZm8qIGQsIGludCBzZWNvbmRzKQoreworCXN0YXRpYyBpbnQg b3BzX3Blcl9zZWMgPSAwOworCisJaWYgKG9wc19wZXJfc2VjID09IDApCisJCW9wc19wZXJfc2Vj ID0gY2FsaWJyYXRlX2R1bW15X2xvYWQoZCwgImJjcyIsIHNlY29uZHMsCisJCQkJCQkgICBlbWl0 X2R1bW15X2xvYWRfYmxpdGZpbGwpOworCisJZW1pdF9kdW1teV9sb2FkX2JsaXRmaWxsKGQsIHNl Y29uZHMgKiBvcHNfcGVyX3NlYywgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGlndF9kdW1teV9sb2Fk X3JlbmRlcmNvcHkoc3RydWN0IGR1bW15X2luZm8qIGQsIGludCBzZWNvbmRzKQoreworCXN0YXRp YyBpbnQgb3BzX3Blcl9zZWMgPSAwOworCisJaWYgKG9wc19wZXJfc2VjID09IDApCisJCW9wc19w ZXJfc2VjID0gY2FsaWJyYXRlX2R1bW15X2xvYWQoZCwgInJjcyIsIHNlY29uZHMsCisJCQkJCQkg ICBlbWl0X2R1bW15X2xvYWRfcmVuZGVyY29weSk7CisKKwllbWl0X2R1bW15X2xvYWRfcmVuZGVy Y29weShkLCBzZWNvbmRzICogb3BzX3Blcl9zZWMsIDApOworfQorCisvKioKKyAqIGlndF9jYWxp YnJhdGVfZHVtbXlfbG9hZDoKKyAqIEBidWZtZ3I6IHRoZSBsaWJkcm0gYnVmbWdyCisgKiBAYmF0 Y2g6IHRoZSBiYXRjaGJ1ZmZlcgorICogQGRybV9mZDogdGhlIERSTSBmaWxlIGRlc2NyaXB0b3IK KyAqIEBidWZfaGFuZGxlOiBoYW5kbGUgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB3aGVyZSB0 aGUgb3BlcmF0aW9uIGlzIGFwcGxpZWQuCisgKiAgICAgICAgICAgICAgRm9yIElHVF9EVU1NWV9C TElUX0NPUFkgYW5kIElHVF9EVU1NWV9SRU5ERVJfQ09QWSB0aGlzCisgKiAgICAgICAgICAgICAg aXMgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB3aGVyZSBmaW5hbCByZXN1bHRzIGFyZSBjb3BpZWQg aW50bworICogQGJ1Zl9zdHJpZGU6IHRoZSBzdHJpZGUgb2YgdGhlIGJ1ZmZlciwgaWdub3JlZCBi eSBJR1RfRFVNTVlfQkxJVF9GSUxMCisgKiBAZmJfd2lkdGg6IHdpZHRoIG9mIHRoZSByZWN0YW5n bGUKKyAqIEBmYl9oZWlnaHQ6IGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlCisgKiBAZW5vdWdoX3dv cmtfaW5fc2Vjb25kczogdGltZSBpdCB0YWtlcyB0byBleGVjdXRlIGEgR1BVIHdvcmtsb2FkCisg KiBAbWV0aG9kOiBUeXBlIG9mIEdQVSB3b3JrbG9hZAorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0 dXJucyB0aGUgYW1vdW50IG9mIG9wZXJhdGlvbnMgYSBHUFUgd29ya2xvYWQgZXhlY3V0ZXMgaW4K KyAqIGEgc3BlY2lmaWMgYW1vdW50IG9mIHRpbWUuCisgKi8KK2ludCBpZ3RfY2FsaWJyYXRlX2R1 bW15X2xvYWQoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJICAgICBzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLAorCQkJICAgICBpbnQgZHJtX2ZkLAorCQkJICAgICB1aW50MzJf dCBidWZfaGFuZGxlLAorCQkJICAgICB1aW50MzJfdCBidWZfc3RyaWRlLAorCQkJICAgICBpbnQg ZmJfd2lkdGgsCisJCQkgICAgIGludCBmYl9oZWlnaHQsCisJCQkgICAgIGludCBlbm91Z2hfd29y a19pbl9zZWNvbmRzLAorCQkJICAgICBlbnVtIGlndF9kdW1teV9sb2FkX21ldGhvZCBtZXRob2Qp Cit7CisJc3RydWN0IGR1bW15X2luZm8gZHVtbXlfaW5mbyA9IHsKKwkJLmJ1Zm1nciA9IGJ1Zm1n ciwKKwkJLmJhdGNoID0gYmF0Y2gsCisJCS5kcm1fZmQgPSBkcm1fZmQsCisJCS5idWZfaGFuZGxl ID0gYnVmX2hhbmRsZSwKKwkJLmJ1Zl9zdHJpZGUgPSBidWZfc3RyaWRlLAorCSAgICAgICAgLmZi X3dpZHRoID0gZmJfd2lkdGgsCisJCS5mYl9oZWlnaHQgPSBmYl9oZWlnaHQsCisJfTsKKworCXN3 aXRjaCAobWV0aG9kKSB7CisJY2FzZSBJR1RfRFVNTVlfUkVOREVSX0NPUFk6CisJCXJldHVybiBj YWxpYnJhdGVfZHVtbXlfbG9hZCgmZHVtbXlfaW5mbywgInJjcyIsCisJCQkJCSAgICBlbm91Z2hf d29ya19pbl9zZWNvbmRzLAorCQkJCQkgICAgZW1pdF9kdW1teV9sb2FkX3JlbmRlcmNvcHkpOwor CWNhc2UgSUdUX0RVTU1ZX0JMSVRfQ09QWToKKwkJcmV0dXJuIGNhbGlicmF0ZV9kdW1teV9sb2Fk KCZkdW1teV9pbmZvLCAiYmNzIiwKKwkJCQkJICAgIGVub3VnaF93b3JrX2luX3NlY29uZHMsCisJ CQkJCSAgICBlbWl0X2R1bW15X2xvYWRfYmxpdGNvcHkpOworCWNhc2UgSUdUX0RVTU1ZX0JMSVRf RklMTDoKKwkJcmV0dXJuIGNhbGlicmF0ZV9kdW1teV9sb2FkKCZkdW1teV9pbmZvLCAiYmNzIiwK KwkJCQkJICAgIGVub3VnaF93b3JrX2luX3NlY29uZHMsCisJCQkJCSAgICBlbWl0X2R1bW15X2xv YWRfYmxpdGZpbGwpOworCWRlZmF1bHQ6CisJCWlndF9hc3NlcnQoZmFsc2UpOworCX0KK30KKwor LyoqCisgKiBpZ3RfZW1pdF9kdW1teV9sb2FkOgorICogQGJ1Zm1ncjogdGhlIGxpYmRybSBidWZt Z3IKKyAqIEBiYXRjaDogdGhlIGJhdGNoYnVmZmVyCisgKiBAZHJtX2ZkOiB0aGUgRFJNIGZpbGUg ZGVzY3JpcHRvcgorICogQGJ1Zl9oYW5kbGU6IGhhbmRsZSBvZiB0aGUgZGVzdGluYXRpb24gYnVm ZmVyIHdoZXJlIHRoZSBvcGVyYXRpb24gaXMgYXBwbGllZC4KKyAqICAgICAgICAgICAgICBGb3Ig SUdUX0RVTU1ZX0JMSVRfQ09QWSBhbmQgSUdUX0RVTU1ZX1JFTkRFUl9DT1BZIHRoaXMKKyAqICAg ICAgICAgICAgICBpcyB0aGUgZGVzdGluYXRpb24gYnVmZmVyIHdoZXJlIGZpbmFsIHJlc3VsdHMg YXJlIGNvcGllZCBpbnRvCisgKiBAYnVmX3N0cmlkZTogdGhlIHN0cmlkZSBvZiB0aGUgYnVmZmVy LCBpZ25vcmVkIGJ5IElHVF9EVU1NWV9CTElUX0ZJTEwKKyAqIEBmYl93aWR0aDogd2lkdGggb2Yg dGhlIHJlY3RhbmdsZQorICogQGZiX2hlaWdodDogaGVpZ2h0IG9mIHRoZSByZWN0YW5nbGUKKyAq IEBpdGVyYXRpb25zOiBtYW51YWxseSBzcGVjaWZ5IHRoZSBhbW91bnQgb2Ygb3BlcmF0aW9ucyB0 aGF0IHRoZSBkdW1teSBsb2FkCisgKiAgICAgICAgICAgICAgZXhlY3V0ZXMuIElmIGxlc3MgdGhh biAxLCBhdXRvbWF0aWNhbGx5IGRldGVybWluZSB0aGUgYW1vdW50IG9mCisgKiAgICAgICAgICAg ICAgaXRlcmF0aW9ucyBpdCB0YWtlcyB0byBleGVjdXRlIEBlbm91Z2hfd29ya19pbl9zZWNvbmRz CisgKiAgICAgICAgICAgICAgc2Vjb25kcyBvZiBHUFUgd29ya2xvYWQKKyAqIEBlbm91Z2hfd29y a19pbl9zZWNvbmRzOiB0aW1lIGl0IHRha2VzIHRvIGV4ZWN1dGUgYSBHUFUgd29ya2xvYWQuIEln bm9yZWQgd2hlbgorICogICAgICAgICAgICAgIGF1dG8tY2FsaWJyYXRpb24gaXMgZGlzYWJsZWQg KEBpdGVyYXRpb25zID49IDEpCisgKiBAbWV0aG9kOiBUeXBlIG9mIEdQVSB3b3JrbG9hZAorICoK KyAqIFRoaXMgZnVuY3Rpb25zIHN1Ym1pdHMgYSBkdW1teSB3b3JrbG9hZCB0byB0aGUgR1BVIG9w dGlvbmFsbHkgYXV0by10dW5pbmcgaXQKKyAqIHNvIHRoZSB3b3JrbG9hZCBjb25zdW1lcyBhIHNw ZWNpZmljIGFtb3VudCBvZiB0aW1lLgorICovCit2b2lkIGlndF9lbWl0X2R1bW15X2xvYWQoZHJt X2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJIHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0 Y2gsCisJCQkgaW50IGRybV9mZCwKKwkJCSB1aW50MzJfdCBidWZfaGFuZGxlLAorCQkJIHVpbnQz Ml90IGJ1Zl9zdHJpZGUsCisJCQkgaW50IGZiX3dpZHRoLAorCQkJIGludCBmYl9oZWlnaHQsCisJ CQkgaW50IGl0ZXJhdGlvbnMsCisJCQkgaW50IGVub3VnaF93b3JrX2luX3NlY29uZHMsCisJCQkg ZW51bSBpZ3RfZHVtbXlfbG9hZF9tZXRob2QgbWV0aG9kKQoreworCXN0cnVjdCBkdW1teV9pbmZv IGR1bW15X2luZm8gPSB7CisJCS5idWZtZ3IgPSBidWZtZ3IsCisJCS5iYXRjaCA9IGJhdGNoLAor CQkuZHJtX2ZkID0gZHJtX2ZkLAorCQkuYnVmX2hhbmRsZSA9IGJ1Zl9oYW5kbGUsCisJCS5idWZf c3RyaWRlID0gYnVmX3N0cmlkZSwKKwkgICAgICAgIC5mYl93aWR0aCA9IGZiX3dpZHRoLAorCQku ZmJfaGVpZ2h0ID0gZmJfaGVpZ2h0LAorCX07CisKKwlzd2l0Y2ggKG1ldGhvZCkgeworCWNhc2Ug SUdUX0RVTU1ZX1JFTkRFUl9DT1BZOgorCQlpdGVyYXRpb25zID4gMCA/IGVtaXRfZHVtbXlfbG9h ZF9yZW5kZXJjb3B5KCZkdW1teV9pbmZvLAorCQkJCQkJCSAgICBpdGVyYXRpb25zLCAwKToKKwkJ aWd0X2R1bW15X2xvYWRfcmVuZGVyY29weSgmZHVtbXlfaW5mbywgZW5vdWdoX3dvcmtfaW5fc2Vj b25kcyk7CisJCWJyZWFrOworCWNhc2UgSUdUX0RVTU1ZX0JMSVRfQ09QWToKKwkJaXRlcmF0aW9u cyA+IDAgPyBlbWl0X2R1bW15X2xvYWRfYmxpdGNvcHkoJmR1bW15X2luZm8sCisJCQkJCQkJICBp dGVyYXRpb25zLCAwKToKKwkJaWd0X2R1bW15X2xvYWRfYmxpdGNvcHkoJmR1bW15X2luZm8sIGVu b3VnaF93b3JrX2luX3NlY29uZHMpOworCQlicmVhazsKKwljYXNlIElHVF9EVU1NWV9CTElUX0ZJ TEw6CisJCWl0ZXJhdGlvbnMgPiAwID8gZW1pdF9kdW1teV9sb2FkX2JsaXRmaWxsKCZkdW1teV9p bmZvLAorCQkJCQkJCSAgaXRlcmF0aW9ucywgMCk6CisJCWlndF9kdW1teV9sb2FkX2JsaXRmaWxs KCZkdW1teV9pbmZvLCBlbm91Z2hfd29ya19pbl9zZWNvbmRzKTsKKwkJYnJlYWs7CisJZGVmYXVs dDoKKwkJaWd0X2Fzc2VydChmYWxzZSk7CisJCWJyZWFrOworCX0KK30KZGlmZiAtLWdpdCBhL2xp Yi9pZ3RfZHVtbXlsb2FkLmggYi9saWIvaWd0X2R1bW15bG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjllNDBmZDEKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2R1 bW15bG9hZC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRl bCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FS RS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0lHVF9EVU1NWUxPQURfSF9fCisjZGVmaW5lIF9fSUdU X0RVTU1ZTE9BRF9IX18KKworLyoqCisgKiBpZ3RfZHVtbXlfbG9hZF9tZXRob2Q6CisgKiBASUdU X0RVTU1ZX0JMSVRfRklMTDogVXNlIGJsaXR0ZXIgZW5naW5lIHRvIGZpbGwgYSBidWZmZXIgd2l0 aCByYW5kb20gY29sb3IKKyAqIEBJR1RfRFVNTVlfQkxJVF9DT1BZOiBVc2UgYmxpdHRlciBlbmdp bmUgdG8gY29weSBiZXR3ZWVuIGJ1ZmZlcnMKKyAqIEBJR1RfRFVNTVlfUkVOREVSX0NPUFk6IFVz ZSByZW5kZXIgZW5naW5lIHRvIGNvcHkgYmV0d2VlbiBidWZmZXJzCisgKgorICogTWV0aG9kIHRv IGdlbmVyYXRlIGEgR1BVIGR1bW15IGxvYWQKKyAqLworZW51bSBpZ3RfZHVtbXlfbG9hZF9tZXRo b2QgeworCUlHVF9EVU1NWV9CTElUX0ZJTEwsCisJSUdUX0RVTU1ZX0JMSVRfQ09QWSwKKwlJR1Rf RFVNTVlfUkVOREVSX0NPUFksCit9OworCitpbnQgaWd0X2NhbGlicmF0ZV9kdW1teV9sb2FkKGRy bV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCSAgICAgc3RydWN0IGludGVsX2JhdGNoYnVmZmVy ICpiYXRjaCwKKwkJCSAgICAgaW50IGRybV9mZCwKKwkJCSAgICAgdWludDMyX3QgYnVmX2hhbmRs ZSwKKwkJCSAgICAgdWludDMyX3QgYnVmX3N0cmlkZSwKKwkJCSAgICAgaW50IGZiX3dpZHRoLAor CQkJICAgICBpbnQgZmJfaGVpZ2h0LAorCQkJICAgICBpbnQgZW5vdWdoX3dvcmtfaW5fc2Vjb25k cywKKwkJCSAgICAgZW51bSBpZ3RfZHVtbXlfbG9hZF9tZXRob2QgbWV0aG9kKTsKKwordm9pZCBp Z3RfZW1pdF9kdW1teV9sb2FkKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCSBzdHJ1Y3Qg aW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAorCQkJIGludCBkcm1fZmQsCisJCQkgdWludDMyX3Qg YnVmX2hhbmRsZSwKKwkJCSB1aW50MzJfdCBidWZfc3RyaWRlLAorCQkJIGludCBmYl93aWR0aCwK KwkJCSBpbnQgZmJfaGVpZ2h0LAorCQkJIGludCBpdGVyYXRpb25zLAorCQkJIGludCBlbm91Z2hf d29ya19pbl9zZWNvbmRzLAorCQkJIGVudW0gaWd0X2R1bW15X2xvYWRfbWV0aG9kIG1ldGhvZCk7 CisKKyNlbmRpZiAvKiBfX0lHVF9EVU1NWUxPQURfSF9fICovCi0tIAoyLjcuMAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==