From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 701AE6E536 for ; Tue, 19 May 2020 08:11:46 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 19 May 2020 10:11:29 +0200 Message-Id: <20200519081134.24589-4-zbigniew.kempczynski@intel.com> In-Reply-To: <20200519081134.24589-1-zbigniew.kempczynski@intel.com> References: <20200519081134.24589-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v4 3/8] lib/intel_batchbuffer: Introduce intel_bb 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: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: U2ltcGxlIGJhdGNoYnVmZmVyIGZhY2lsaXR5IHdoaWNoIGdhdGhlcnMgYW5kIG91dHB1dHMgcmVs b2NhdGlvbnMuCgp2MjogbWFrZSBiYiBhcGkgbW9yZSBjb25zaXN0ZW50IGFuZCB1bml2ZXJzYWwK djM6IGZpeCBjb21waWxpbmcgaXNzdWVzIG9uIG5vbi14ODYgYXJjaAp2NDogYWRkIGluZGV4aW5n IHRyZWUgYW5kIG1hcmtpbmcgb2JqZWN0IGFzIHJlbmRlciB0YXJnZXQKClNpZ25lZC1vZmYtYnk6 IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpD YzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogbGliL2ludGVs X2JhdGNoYnVmZmVyLmMgfCA0NDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogbGliL2ludGVsX2JhdGNoYnVmZmVyLmggfCAgOTcgKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDU0MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNoYnVm ZmVyLmMgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwppbmRleCBmMWE0NWI0Ny4uYTY4ZTZjMWYg MTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCisrKyBiL2xpYi9pbnRlbF9iYXRj aGJ1ZmZlci5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRl IDxzdHJpbmcuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzZWFyY2guaD4KIAog I2luY2x1ZGUgImRybS5oIgogI2luY2x1ZGUgImRybXRlc3QuaCIKQEAgLTQxLDYgKzQyLDcgQEAK ICNpbmNsdWRlICJyZW5kZXJjb3B5LmgiCiAjaW5jbHVkZSAibWVkaWFfZmlsbC5oIgogI2luY2x1 ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgogI2luY2x1 ZGUgIm1lZGlhX3NwaW4uaCIKICNpbmNsdWRlICJncGdwdV9maWxsLmgiCiAjaW5jbHVkZSAiaWd0 X2F1eC5oIgpAQCAtMTE3MSwzICsxMTczLDQ0NiBAQCBpZ3RfbWVkaWFfc3BpbmZ1bmNfdCBpZ3Rf Z2V0X21lZGlhX3NwaW5mdW5jKGludCBkZXZpZCkKIAogCXJldHVybiBzcGluOwogfQorCisvKiBJ bnRlbCBiYXRjaGJ1ZmZlciB2MiAqLworc3RhdGljIGJvb2wgaW50ZWxfYmJfZGVidWdfdHJlZSA9 IGZhbHNlOworCisvKgorICogX19yZWFsbG9jYXRlX29iamVjdHM6CisgKiBAaWJiOiBwb2ludGVy IHRvIGludGVsX2JiCisgKgorICogSW5jcmVhc2VzIG51bWJlciBvZiBvYmplY3RzIGlmIG5lY2Vz c2FyeS4KKyAqLworc3RhdGljIHZvaWQgX19yZWFsbG9jYXRlX29iamVjdHMoc3RydWN0IGludGVs X2JiICppYmIpCit7CisJdWludDMyX3QgbnVtOworCisJaWYgKGliYi0+bnVtX29iamVjdHMgPT0g aWJiLT5hbGxvY2F0ZWRfb2JqZWN0cykgeworCQludW0gPSA0MDk2IC8gc2l6ZW9mKCppYmItPm9i amVjdHMpOworCQlpYmItPm9iamVjdHMgPSByZWFsbG9jKGliYi0+b2JqZWN0cywKKwkJCQkgICAg ICAgc2l6ZW9mKCppYmItPm9iamVjdHMpICogbnVtKTsKKwkJaWd0X2Fzc2VydChpYmItPm9iamVj dHMpOworCQlpYmItPmFsbG9jYXRlZF9vYmplY3RzICs9IG51bTsKKworCQltZW1zZXQoJmliYi0+ b2JqZWN0c1tpYmItPm51bV9vYmplY3RzXSwJMCwKKwkJICAgICAgIG51bSAqIHNpemVvZigqaWJi LT5vYmplY3RzKSk7CisJfQorfQorCisvKioKKyAqIF9faW50ZWxfYmJfY3JlYXRlOgorICogQGk5 MTU6IGRybSBmZAorICogQHNpemU6IHNpemUgb2YgdGhlIGJhdGNoYnVmZmVyCisgKgorICogUmV0 dXJuczoKKyAqCisgKiBQb2ludGVyIHRoZSBpbnRlbF9iYiwgYXNzZXJ0cyBvbiBmYWlsdXJlLgor ICovCitzdHJ1Y3QgaW50ZWxfYmIgKmludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qg c2l6ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYiA9IGNhbGxvYygxLCBzaXplb2YoKmliYikp OworCisJaWd0X2Fzc2VydChpYmIpOworCisJaWJiLT5pOTE1ID0gaTkxNTsKKwlpYmItPmRldmlk ID0gaW50ZWxfZ2V0X2RybV9kZXZpZChpOTE1KTsKKwlpYmItPmdlbiA9IGludGVsX2dlbihpYmIt PmRldmlkKTsKKwlpYmItPmhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwgc2l6ZSk7CisJaWJiLT5z aXplID0gc2l6ZTsKKwlpYmItPmJhdGNoID0gY2FsbG9jKDEsIHNpemUpOworCWlndF9hc3NlcnQo aWJiLT5iYXRjaCk7CisJaWJiLT5wdHIgPSBpYmItPmJhdGNoOworCisJX19yZWFsbG9jYXRlX29i amVjdHMoaWJiKTsKKwlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaWJiLT5oYW5kbGUsIDAsIGZh bHNlKTsKKworCXJldHVybiBpYmI7Cit9CisKKy8qCisgKiB0ZGVzdHJveSgpIGNhbGxzIGZyZWUg ZnVuY3Rpb24gZm9yIGVhY2ggbm9kZSwgYnV0IHdlIHNwcmVhZCB0cmVlCisgKiBvbiBvYmplY3Rz IGFycmF5LCBzbyBkbyBub3RoaW5nLgorICovCitzdGF0aWMgdm9pZCBfX2RvX25vdGhpbmcodm9p ZCAqbm9kZSkKK3sKKwkodm9pZCkgbm9kZTsKK30KKworLyoqCisgKiBpbnRlbF9iYl9kZXN0cm95 OgorICogQGliYjogcG9pbnRlciB0byBpbnRlbF9iYgorICoKKyAqIEZyZWVzIGFsbCByZWxvY2F0 aW9ucyAvIG9iamVjdHMgYWxsb2NhdGVkIGR1cmluZyBmaWxsaW5nIHRoZSBiYXRjaC4KKyAqLwor dm9pZCBpbnRlbF9iYl9kZXN0cm95KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCXVpbnQzMl90 IGk7CisKKwlpZ3RfYXNzZXJ0KGliYik7CisKKwkvKiBGcmVlIHJlbG9jYXRpb25zICovCisJZm9y IChpID0gMDsgaSA8IGliYi0+bnVtX29iamVjdHM7IGkrKykKKwkJZnJlZShmcm9tX3VzZXJfcG9p bnRlcihpYmItPm9iamVjdHNbaV0ucmVsb2NzX3B0cikpOworCisJZnJlZShpYmItPm9iamVjdHMp OworCXRkZXN0cm95KGliYi0+cm9vdCwgX19kb19ub3RoaW5nKTsKKworCW11bm1hcChpYmItPmJh dGNoLCBpYmItPnNpemUpOworCWdlbV9jbG9zZShpYmItPmk5MTUsIGliYi0+aGFuZGxlKTsKKwor CWZyZWUoaWJiKTsKK30KKworLyoqCisgKiBpbnRlbF9iYl9zZXRfZGVidWc6CisgKiBAaWJiOiBw b2ludGVyIHRvIGludGVsX2JiCisgKiBAZGVidWc6IHRydWUgLyBmYWxzZQorICoKKyAqIFNldHMg ZGVidWcgdG8gdHJ1ZSAvIGZhbHNlLiBFeGVjYnVmIGlzIHRoZW4gY2FsbGVkIHN5bmNocm9ub3Vz bHkgYW5kCisgKiBvYmplY3QvcmVsb2MgYXJyYXlzIGFyZSBwcmludGVkIGFmdGVyIGV4ZWN1dGlv bi4KKyAqLwordm9pZCBpbnRlbF9iYl9zZXRfZGVidWcoc3RydWN0IGludGVsX2JiICppYmIsIGJv b2wgZGVidWcpCit7CisJaWJiLT5kZWJ1ZyA9IGRlYnVnOworfQorCitzdGF0aWMgaW50IF9fY29t cGFyZV9vYmplY3RzKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKK3sKKwljb25zdCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqbzEgPSBwMSwgKm8yID0gcDI7CisKKwly ZXR1cm4gKGludCkgKChpbnQ2NF90KSBvMS0+aGFuZGxlIC0gKGludDY0X3QpIG8yLT5oYW5kbGUp OworfQorCisvKioKKyAqIGludGVsX2JiX2FkZF9vYmplY3Q6CisgKiBAaWJiOiBwb2ludGVyIHRv IGludGVsX2JiCisgKiBAaGFuZGxlOiB3aGljaCBoYW5kbGUgdG8gYWRkIHRvIG9iamVjdHMgYXJy YXkKKyAqIEBvZmZzZXQ6IHByZXN1bWVkIG9mZnNldCBvZiB0aGUgb2JqZWN0IHdoZW4gSTkxNV9F WEVDX05PX1JFTE9DIGZsYWcgaXMKKyAqIHVzZWQgaW4gZXhlY2J1ZiBjYWxsCisgKiBAd3JpdGU6 IGRvZXMgYSBoYW5kbGUgaXMgYSByZW5kZXIgdGFyZ2V0CisgKgorICogRnVuY3Rpb24gYWRkcyBv ciB1cGRhdGVzIGV4ZWNvYmogc2xvdCBpbiBiYiBvYmplY3RzIGFycmF5IGFuZAorICogaW4gdGhl IG9iamVjdCB0cmVlLiBXaGVuIG9iamVjdCBpcyBhIHJlbmRlciB0YXJnZXQgaXQgaGFzIHRvCisg KiBiZSBtYXJrZWQgd2l0aCBFWEVDX09CSkVDVF9XUklURSBmbGFnLgorICovCitzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqCitpbnRlbF9iYl9hZGRfb2JqZWN0KHN0cnVjdCBpbnRl bF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUsCisJCSAgICB1aW50NjRfdCBvZmZzZXQsIGJvb2wg d3JpdGUpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iamVjdDsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqKmZvdW5kOworCXVpbnQzMl90IGk7CisK KwlfX3JlYWxsb2NhdGVfb2JqZWN0cyhpYmIpOworCisJaSA9IGliYi0+bnVtX29iamVjdHM7CisJ b2JqZWN0ID0gJmliYi0+b2JqZWN0c1tpXTsKKwlvYmplY3QtPmhhbmRsZSA9IGhhbmRsZTsKKwor CWZvdW5kID0gdHNlYXJjaCgodm9pZCAqKSBvYmplY3QsICZpYmItPnJvb3QsIF9fY29tcGFyZV9v YmplY3RzKTsKKworCWlmICgqZm91bmQgPT0gb2JqZWN0KQorCQlpYmItPm51bV9vYmplY3RzKys7 CisJZWxzZQorCQlvYmplY3QgPSAqZm91bmQ7CisKKwlpZiAob2Zmc2V0KQorCQlvYmplY3QtPm9m ZnNldCA9IG9mZnNldDsKKwlpZiAod3JpdGUpCisJCW9iamVjdC0+ZmxhZ3MgPSBFWEVDX09CSkVD VF9XUklURTsKKworCXJldHVybiBvYmplY3Q7Cit9CisKKy8qCisgKiBpbnRlbF9iYl9hZGRfcmVs b2M6CisgKiBAaWJiOiBwb2ludGVyIHRvIGludGVsX2JiCisgKiBAaGFuZGxlOiBvYmplY3QgaGFu ZGxlIHdoaWNoIGFkZHJlc3Mgd2lsbCBiZSB0YWtlbiB0byBwYXRjaCB0aGUgYmIKKyAqIEByZWFk X2RvbWFpbnM6IGdlbSBkb21haW4gYml0cyBmb3IgdGhlIHJlbG9jYXRpb24KKyAqIEB3cml0ZV9k b21haW46IGdlbSBkb21haW4gYml0IGZvciB0aGUgcmVsb2NhdGlvbgorICogQGRlbHRhOiBkZWx0 YSB2YWx1ZSB0byBhZGQgdG8gQGJ1ZmZlcidzIGdwdSBhZGRyZXNzCisgKiBAb2Zmc2V0OiBvZmZz ZXQgd2l0aGluIGJiIHRvIGJlIHBhdGNoZWQKKyAqIEBwcmVzdW1lZF9vZmZzZXQ6IGFkZHJlc3Mg b2YgdGhlIG9iamVjdCBpbiBhZGRyZXNzIHNwYWNlLCBpbXBvcnRhbnQgZm9yCisgKiBJOTE1X0VY RUNfTk9fUkVMT0MgZmxhZworICoKKyAqIEZ1bmN0aW9uIGFsbG9jYXRlcyBhZGRpdGlvbmFsIHJl bG9jYXRpb24gc2xvdCBpbiByZWxvYyBhcnJheSBmb3IgYSBoYW5kbGUuCisgKiBJdCBhbHNvIGlt cGxpY2l0bHkgYWRkcyBoYW5kbGUgaW4gdGhlIG9iamVjdHMgYXJyYXkgaWYgb2JqZWN0IGRvZXNu J3QKKyAqIGV4aXN0cyBidXQgZG9lc24ndCBtYXJrIGl0IGFzIGEgcmVuZGVyIHRhcmdldC4KKyAq Lworc3RhdGljIHZvaWQgaW50ZWxfYmJfYWRkX3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAor CQkJICAgICAgIHVpbnQzMl90IGhhbmRsZSwKKwkJCSAgICAgICB1aW50MzJfdCByZWFkX2RvbWFp bnMsCisJCQkgICAgICAgdWludDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJICAgICAgIHVpbnQ2NF90 IGRlbHRhLAorCQkJICAgICAgIHVpbnQ2NF90IG9mZnNldCwKKwkJCSAgICAgICB1aW50NjRfdCBw cmVzdW1lZF9vZmZzZXQpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5 ICpyZWxvY3M7CisJdWludDMyX3QgaTsKKworCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBoYW5k bGUsIHByZXN1bWVkX29mZnNldCwgZmFsc2UpOworCisJcmVsb2NzID0gaWJiLT5yZWxvY3M7CisJ aWYgKGliYi0+bnVtX3JlbG9jcyA9PSBpYmItPmFsbG9jYXRlZF9yZWxvY3MpIHsKKwkJaWJiLT5h bGxvY2F0ZWRfcmVsb2NzICs9IDQwOTYgLyBzaXplb2YoKnJlbG9jcyk7CisJCXJlbG9jcyA9IHJl YWxsb2MocmVsb2NzLCBzaXplb2YoKnJlbG9jcykgKiBpYmItPmFsbG9jYXRlZF9yZWxvY3MpOwor CQlpZ3RfYXNzZXJ0KHJlbG9jcyk7CisJCWliYi0+cmVsb2NzID0gcmVsb2NzOworCX0KKworCWkg PSBpYmItPm51bV9yZWxvY3MrKzsKKwltZW1zZXQoJnJlbG9jc1tpXSwgMCwgc2l6ZW9mKCpyZWxv Y3MpKTsKKwlyZWxvY3NbaV0udGFyZ2V0X2hhbmRsZSA9IGhhbmRsZTsKKwlyZWxvY3NbaV0ucmVh ZF9kb21haW5zID0gcmVhZF9kb21haW5zOworCXJlbG9jc1tpXS53cml0ZV9kb21haW4gPSB3cml0 ZV9kb21haW47CisJcmVsb2NzW2ldLmRlbHRhID0gZGVsdGE7CisJcmVsb2NzW2ldLm9mZnNldCA9 IG9mZnNldDsKKwlyZWxvY3NbaV0ucHJlc3VtZWRfb2Zmc2V0ID0gcHJlc3VtZWRfb2Zmc2V0Owor CisJaWd0X2RlYnVnKCJhZGQgcmVsb2M6IGhhbmRsZTogJXUsIHIvdzogMHgleC8weCV4LCAiCisJ CSAgImRlbHRhOiAweCUiIFBSSXg2NCAiLCAiCisJCSAgIm9mZnNldDogMHglIiBQUkl4NjQgIiwg IgorCQkgICJwb2Zmc2V0OiAweCUiIFBSSXg2NCAiXG4iLAorCQkgIGhhbmRsZSwgcmVhZF9kb21h aW5zLCB3cml0ZV9kb21haW4sCisJCSAgZGVsdGEsIG9mZnNldCwgcHJlc3VtZWRfb2Zmc2V0KTsK K30KKworLyoqCisgKiBpbnRlbF9iYl9lbWl0X3JlbG9jOgorICogQGliYjogcG9pbnRlciB0byBp bnRlbF9iYgorICogQGhhbmRsZTogb2JqZWN0IGhhbmRsZSB3aGljaCBhZGRyZXNzIHdpbGwgYmUg dGFrZW4gdG8gcGF0Y2ggdGhlIGJiCisgKiBAcmVhZF9kb21haW5zOiBnZW0gZG9tYWluIGJpdHMg Zm9yIHRoZSByZWxvY2F0aW9uCisgKiBAd3JpdGVfZG9tYWluOiBnZW0gZG9tYWluIGJpdCBmb3Ig dGhlIHJlbG9jYXRpb24KKyAqIEBkZWx0YTogZGVsdGEgdmFsdWUgdG8gYWRkIHRvIEBidWZmZXIn cyBncHUgYWRkcmVzcworICogQHByZXN1bWVkX29mZnNldDogYWRkcmVzcyBvZiB0aGUgb2JqZWN0 IGluIGFkZHJlc3Mgc3BhY2UsIGltcG9ydGFudCBmb3IKKyAqIEk5MTVfRVhFQ19OT19SRUxPQyBm bGFnCisgKiBAd3JpdGU6IGRvZXMgYSBoYW5kbGUgaXMgYSByZW5kZXIgdGFyZ2V0CisgKgorICog RnVuY3Rpb24gcHJlcGFyZXMgcmVsb2NhdGlvbiAoZXhlY29iaiBpZiByZXF1aXJlZCArIHJlbG9j KSBhbmQgZW1pdHMKKyAqIG9mZnNldCBpbiBiYi4gRm9yIEk5MTVfRVhFQ19OT19SRUxPQyBwcmVz dW1lZF9vZmZzZXQgaXMgYSBoaW50IHdlIGFscmVhZHkKKyAqIGhhdmUgb2JqZWN0IGluIHZhbGlk IHBsYWNlIGFuZCByZWxvY2F0aW9uIHN0ZXAgY2FuIGJlIHNraXBwZWQgaW4gdGhpcyBjYXNlLgor ICoKKyAqIE5vdGU6IGRlbHRhIGlzIHZhbHVlIGFkZGVkIHRvIGFkZHJlc3MsIG1vc3RseSB1c2Vk IHdoZW4gc29tZSBpbnN0cnVjdGlvbnMKKyAqIHJlcXVpcmUgbW9kaWZ5LWJpdCBzZXQgdG8gYXBw bHkgY2hhbmdlLiBXaGljaCBkZWx0YSBpcyB2YWxpZCBkZXBlbmRzCisgKiBvbiBpbnN0cnVjdGlv biAoc2VlIGluc3RydWN0aW9uIHNwZWNpZmljYXRpb24pLgorICovCit2b2lkIGludGVsX2JiX2Vt aXRfcmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsCisJCQkgdWludDMyX3QgaGFuZGxlLAorCQkJ IHVpbnQzMl90IHJlYWRfZG9tYWlucywKKwkJCSB1aW50MzJfdCB3cml0ZV9kb21haW4sCisJCQkg dWludDY0X3QgZGVsdGEsCisJCQkgdWludDY0X3QgcHJlc3VtZWRfb2Zmc2V0KQoreworCWlndF9h c3NlcnQoaWJiKTsKKworCWludGVsX2JiX2FkZF9yZWxvYyhpYmIsIGhhbmRsZSwgcmVhZF9kb21h aW5zLCB3cml0ZV9kb21haW4sCisJCQkgICBkZWx0YSwgaW50ZWxfYmJfb2Zmc2V0KGliYiksIHBy ZXN1bWVkX29mZnNldCk7CisKKwlpbnRlbF9iYl9vdXQoaWJiLCBkZWx0YSArIHByZXN1bWVkX29m ZnNldCk7CisJaWYgKGliYi0+Z2VuID49IDgpCisJCWludGVsX2JiX291dChpYmIsIHByZXN1bWVk X29mZnNldCA+PiAzMik7Cit9CisKKy8qKgorICogaW50ZWxfYmJfb2Zmc2V0X3JlbG9jOgorICog QGliYjogcG9pbnRlciB0byBpbnRlbF9iYgorICogQGhhbmRsZTogb2JqZWN0IGhhbmRsZSB3aGlj aCBhZGRyZXNzIHdpbGwgYmUgdGFrZW4gdG8gcGF0Y2ggdGhlIGJiCisgKiBAcmVhZF9kb21haW5z OiBnZW0gZG9tYWluIGJpdHMgZm9yIHRoZSByZWxvY2F0aW9uCisgKiBAd3JpdGVfZG9tYWluOiBn ZW0gZG9tYWluIGJpdCBmb3IgdGhlIHJlbG9jYXRpb24KKyAqIEBvZmZzZXQ6IG9mZnNldCB3aXRo aW4gYmIgdG8gYmUgcGF0Y2hlZAorICogQHByZXN1bWVkX29mZnNldDogYWRkcmVzcyBvZiB0aGUg b2JqZWN0IGluIGFkZHJlc3Mgc3BhY2UsIGltcG9ydGFudCBmb3IKKyAqIEk5MTVfRVhFQ19OT19S RUxPQyBmbGFnCisgKgorICogRnVuY3Rpb24gcHJlcGFyZXMgcmVsb2NhdGlvbiAoZXhlY29iaiBp ZiByZXF1aXJlZCArIHJlbG9jKS4gSXQgaXQgdXNlZAorICogZm9yIGVkaXRpbmcgYmF0Y2hidWZm ZXIgdmlhIG1vZGlmeWluZyBzdHJ1Y3R1cmVzLiBJdCBtZWFucyB3aGVuIHdlJ3JlCisgKiBwcmVw YXJpbmcgYmF0Y2hidWZmZXIgaXQgaXMgbW9yZSBkZXNjcmlwdGl2ZSB0byBlZGl0IHRoZSBzdHJ1 Y3R1cmUKKyAqIHRoYW4gZW1pdHRpbmcgZHdvcmRzLiBCdXQgaXQgcmVxdWlyZSBmb3Igc29tZSBm aWVsZHMgdG8gcG9pbnQgdGhlCisgKiByZWxvY2F0aW9uLiBGb3IgdGhhdCBjYXNlIEBvZmZzZXQg aXMgcGFzc2VkIGJ5IHRoZSB1c2VyIGFuZCBpdCBwb2ludHMKKyAqIHRvIHRoZSBvZmZzZXQgaW4g YmIgd2hlcmUgdGhlIHJlbG9jYXRpb24gd2lsbCBiZSBhcHBsaWVkLgorICovCit2b2lkIGludGVs X2JiX29mZnNldF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSAgIHVpbnQzMl90IGhh bmRsZSwKKwkJCSAgIHVpbnQzMl90IHJlYWRfZG9tYWlucywKKwkJCSAgIHVpbnQzMl90IHdyaXRl X2RvbWFpbiwKKwkJCSAgIHVpbnQzMl90IG9mZnNldCwKKwkJCSAgIHVpbnQ2NF90IHByZXN1bWVk X29mZnNldCkKK3sKKwlpZ3RfYXNzZXJ0KGliYik7CisKKwlpbnRlbF9iYl9hZGRfcmVsb2MoaWJi LCBoYW5kbGUsIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluLAorCQkJICAgMCwgb2Zmc2V0LCBw cmVzdW1lZF9vZmZzZXQpOworfQorCitzdGF0aWMgdm9pZCBpbnRlbF9iYl9kdW1wX2V4ZWNidWYo c3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZXhlY2J1ZikKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2JqZWN0czsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl bG9jYXRpb25fZW50cnkgKnJlbG9jcywgKnJlbG9jOworCWludCBpLCBqOworCisJaWd0X2luZm8o ImV4ZWNidWYgYmF0Y2ggbGVuOiAldSwgc3RhcnQgb2Zmc2V0OiAweCV4LCAiCisJCSAiRFIxOiAw eCV4LCBEUjQ6IDB4JXgsICIKKwkJICJudW0gY2xpcDogJXUsIGNsaXBwdHI6IDB4JWxseCwgIgor CQkgImZsYWdzOiAweCVsbHgsIHJzdmQxOiAweCVsbHgsIHJzdmQyOiAweCVsbHhcbiIsCisJCSBl eGVjYnVmLT5iYXRjaF9sZW4sIGV4ZWNidWYtPmJhdGNoX3N0YXJ0X29mZnNldCwKKwkJIGV4ZWNi dWYtPkRSMSwgZXhlY2J1Zi0+RFI0LAorCQkgZXhlY2J1Zi0+bnVtX2NsaXByZWN0cywgZXhlY2J1 Zi0+Y2xpcHJlY3RzX3B0ciwKKwkJIGV4ZWNidWYtPmZsYWdzLCBleGVjYnVmLT5yc3ZkMSwgZXhl Y2J1Zi0+cnN2ZDIpOworCisJaWd0X2luZm8oImV4ZWNidWYgYnVmZmVyX2NvdW50OiAlZFxuIiwg ZXhlY2J1Zi0+YnVmZmVyX2NvdW50KTsKKwlmb3IgKGkgPSAwOyBpIDwgZXhlY2J1Zi0+YnVmZmVy X2NvdW50OyBpKyspIHsKKwkJb2JqZWN0cyA9ICYoKHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyICopCisJCQkgICAgZnJvbV91c2VyX3BvaW50ZXIoZXhlY2J1Zi0+YnVmZmVyc19wdHIp KVtpXTsKKwkJcmVsb2NzID0gZnJvbV91c2VyX3BvaW50ZXIob2JqZWN0cy0+cmVsb2NzX3B0cik7 CisJCWlndF9pbmZvKCIgWyVkXSBoYW5kbGU6ICV1LCByZWxvY19jb3VudDogJWQsIHJlbG9jX3B0 cjogJXAsICIKKwkJCSAiYWxpZ246IDB4JWxseCwgb2Zmc2V0OiAweCVsbHgsIGZsYWdzOiAweCVs bHgsICIKKwkJCSAicnN2ZDE6IDB4JWxseCwgcnN2ZDI6IDB4JWxseFxuIiwKKwkJCSBpLCBvYmpl Y3RzLT5oYW5kbGUsIG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQsCisJCQkgcmVsb2NzLAorCQkJ IG9iamVjdHMtPmFsaWdubWVudCwKKwkJCSBvYmplY3RzLT5vZmZzZXQsIG9iamVjdHMtPmZsYWdz LAorCQkJIG9iamVjdHMtPnJzdmQxLCBvYmplY3RzLT5yc3ZkMik7CisJCWlmIChvYmplY3RzLT5y ZWxvY2F0aW9uX2NvdW50KSB7CisJCQlpZ3RfaW5mbygiXHRleGVjYnVmIHJlbG9jczpcbiIpOwor CQkJZm9yIChqID0gMDsgaiA8IG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQ7IGorKykgeworCQkJ CXJlbG9jID0gJnJlbG9jc1tqXTsKKwkJCQlpZ3RfaW5mbygiXHQgWyVkXSB0YXJnZXQgaGFuZGxl OiAldSwgIgorCQkJCQkgIm9mZnNldDogMHglbGx4LCBkZWx0YTogMHgleCwgIgorCQkJCQkgInBy ZXN1bWVkX29mZnNldDogMHglbGx4LCAiCisJCQkJCSAicmVhZF9kb21haW5zOiAweCV4LCAiCisJ CQkJCSAid3JpdGVfZG9tYWluOiAweCV4XG4iLAorCQkJCQkgaiwgcmVsb2MtPnRhcmdldF9oYW5k bGUsCisJCQkJCSByZWxvYy0+b2Zmc2V0LCByZWxvYy0+ZGVsdGEsCisJCQkJCSByZWxvYy0+cHJl c3VtZWRfb2Zmc2V0LAorCQkJCQkgcmVsb2MtPnJlYWRfZG9tYWlucywKKwkJCQkJIHJlbG9jLT53 cml0ZV9kb21haW4pOworCQkJfQorCQl9CisJfQorfQorCitzdGF0aWMgdm9pZCBwcmludF9ub2Rl KGNvbnN0IHZvaWQgKm5vZGUsIFZJU0lUIHdoaWNoLCBpbnQgZGVwdGgpCit7CisJY29uc3Qgc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iamVjdCA9CisJCQkqKGNvbnN0IHN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICoqKSBub2RlOworCSh2b2lkKSBkZXB0aDsKKwor CXN3aXRjaCAod2hpY2gpIHsKKwljYXNlIHByZW9yZGVyOgorCWNhc2UgZW5kb3JkZXI6CisJCWJy ZWFrOworCisJY2FzZSBwb3N0b3JkZXI6CisJY2FzZSBsZWFmOgorCQlpZ3RfaW5mbygiXHQgaGFu ZGxlOiAldSwgb2Zmc2V0OiAweCUiIFBSSXg2NCAiXG4iLAorCQkJIG9iamVjdC0+aGFuZGxlLCAo dWludDY0X3QpIG9iamVjdC0+b2Zmc2V0KTsKKwkJYnJlYWs7CisJfQorfQorCisvKgorICogQF9f aW50ZWxfYmJfZXhlYzoKKyAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBlbmRfb2Zm c2V0OiBvZmZzZXQgb2YgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gdGhlIGJiCisgKiBAZmxhZ3M6 IGZsYWdzIHBhc3NlZCBkaXJlY3RseSB0byBleGVjYnVmCisgKiBAY3R4OiBjb250ZXh0CisgKiBA c3luYzogaWYgdHJ1ZSB3YWl0IGZvciBleGVjYnVmIGNvbXBsZXRpb24sIG90aGVyd2lzZSBjYWxs ZXIgaXMgcmVzcG9uc2libGUKKyAqIHRvIHdhaXQgZm9yIGNvbXBsZXRpb24KKyAqCisgKiBSZXR1 cm5zOiAwIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSBlcnJuby4KKyAqCisgKiBOb3RlOiBJbiB0aGlz IHN0ZXAgZXhlY29iaiBmb3IgYmIgaXMgYWxsb2NhdGVkIGFuZCBpbnNlcnRlZCB0byB0aGUgb2Jq ZWN0cworICogYXJyYXkuCisqLworaW50IF9faW50ZWxfYmJfZXhlYyhzdHJ1Y3QgaW50ZWxfYmIg KmliYiwgdWludDMyX3QgZW5kX29mZnNldCwKKwkJICAgIHVpbnQzMl90IGN0eCwgdWludDY0X3Qg ZmxhZ3MsIGJvb2wgc3luYykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4 ZWNidWY7CisJaW50IHJldDsKKworCWliYi0+b2JqZWN0c1swXS5yZWxvY3NfcHRyID0gdG9fdXNl cl9wb2ludGVyKGliYi0+cmVsb2NzKTsKKwlpYmItPm9iamVjdHNbMF0ucmVsb2NhdGlvbl9jb3Vu dCA9IGliYi0+bnVtX3JlbG9jczsKKwlpYmItPm9iamVjdHNbMF0uaGFuZGxlID0gaWJiLT5oYW5k bGU7CisJaWJiLT5vYmplY3RzWzBdLm9mZnNldCA9IGliYi0+YmF0Y2hfb2Zmc2V0OworCisJZ2Vt X3dyaXRlKGliYi0+aTkxNSwgaWJiLT5oYW5kbGUsIDAsIGliYi0+YmF0Y2gsIGliYi0+c2l6ZSk7 CisKKwltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CisJZXhlY2J1Zi5idWZm ZXJzX3B0ciA9ICh1aW50cHRyX3QpIGliYi0+b2JqZWN0czsKKwlleGVjYnVmLmJ1ZmZlcl9jb3Vu dCA9IGliYi0+bnVtX29iamVjdHM7CisJZXhlY2J1Zi5iYXRjaF9sZW4gPSBlbmRfb2Zmc2V0Owor CWV4ZWNidWYucnN2ZDEgPSBjdHg7CisJZXhlY2J1Zi5mbGFncyA9IGZsYWdzIHwgSTkxNV9FWEVD X0JBVENIX0ZJUlNUOworCisJcmV0ID0gX19nZW1fZXhlY2J1ZihpYmItPmk5MTUsICZleGVjYnVm KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJaWYgKHN5bmMgfHwgaWJiLT5kZWJ1ZykK KwkJZ2VtX3N5bmMoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7CisKKwlpZiAoaWJiLT5kZWJ1Zykg eworCQlpbnRlbF9iYl9kdW1wX2V4ZWNidWYoJmV4ZWNidWYpOworCQlpZiAoaW50ZWxfYmJfZGVi dWdfdHJlZSkgeworCQkJaWd0X2luZm8oIlxuVHJlZTpcbiIpOworCQkJdHdhbGsoaWJiLT5yb290 LCBwcmludF9ub2RlKTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCisvKioKKyAqIGludGVs X2JiX2V4ZWM6CisgKiBAaWJiOiBwb2ludGVyIHRvIGludGVsX2JiCisgKiBAZW5kX29mZnNldDog b2Zmc2V0IG9mIHRoZSBsYXN0IGluc3RydWN0aW9uIGluIHRoZSBiYgorICogQGZsYWdzOiBmbGFn cyBwYXNzZWQgZGlyZWN0bHkgdG8gZXhlY2J1ZgorICogQHN5bmM6IGlmIHRydWUgd2FpdCBmb3Ig ZXhlY2J1ZiBjb21wbGV0aW9uLCBvdGhlcndpc2UgY2FsbGVyIGlzIHJlc3BvbnNpYmxlCisgKiB0 byB3YWl0IGZvciBjb21wbGV0aW9uCisgKgorICogRG8gZXhlY2J1ZiB3aXRoIGRlZmF1bHQgY29u dGV4dC4gQXNzZXJ0cyBvbiBmYWlsdXJlLgorKi8KK3ZvaWQgaW50ZWxfYmJfZXhlYyhzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCwKKwkJICAgdWludDY0X3QgZmxhZ3Ms IGJvb2wgc3luYykKK3sKKwlpZ3RfYXNzZXJ0X2VxKF9faW50ZWxfYmJfZXhlYyhpYmIsIGVuZF9v ZmZzZXQsIDAsIGZsYWdzLCBzeW5jKSwgMCk7Cit9CisKKy8qCisgKiBpbnRlbF9iYl9leGVjX3dp dGhfY29udGV4dDoKKyAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBlbmRfb2Zmc2V0 OiBvZmZzZXQgb2YgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gdGhlIGJiCisgKiBAZmxhZ3M6IGZs YWdzIHBhc3NlZCBkaXJlY3RseSB0byBleGVjYnVmCisgKiBAY3R4OiBjb250ZXh0CisgKiBAc3lu YzogaWYgdHJ1ZSB3YWl0IGZvciBleGVjYnVmIGNvbXBsZXRpb24sIG90aGVyd2lzZSBjYWxsZXIg aXMgcmVzcG9uc2libGUKKyAqIHRvIHdhaXQgZm9yIGNvbXBsZXRpb24KKyAqCisgKiBEbyBleGVj YnVmIHdpdGggY29udGV4dCBAY29udGV4dC4KKyovCit2b2lkIGludGVsX2JiX2V4ZWNfd2l0aF9j b250ZXh0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBlbmRfb2Zmc2V0LAorCQkJCXVp bnQzMl90IGN0eCwgdWludDY0X3QgZmxhZ3MsIGJvb2wgc3luYykKK3sKKwlpZ3RfYXNzZXJ0X2Vx KF9faW50ZWxfYmJfZXhlYyhpYmIsIGVuZF9vZmZzZXQsIGN0eCwgZmxhZ3MsIHN5bmMpLCAwKTsK K30KKworLyoqCisgKiBpbnRlbF9iYl9nZXRfb2JqZWN0X2FkZHJlc3M6CisgKiBAaWJiOiBwb2lu dGVyIHRvIGludGVsX2JiCisgKiBAaGFuZGxlOiBvYmplY3QgaGFuZGxlCisgKgorICogV2hlbiBv YmplY3RzIGFkZHJlc3NlcyBhcmUgcHJldmlvdXNseSBwaW5uZWQgYW5kIHdlIGRvbid0IHdhbnQg dG8gcmVsb2NhdGUKKyAqIHdlIG5lZWQgdG8gYWNxdWlyZSB0aGVtIGZyb20gcHJldmlvdXMgZXhl Y2J1Zi4gRnVuY3Rpb24gcmV0dXJucyBwcmV2aW91cworICogb2JqZWN0IG9mZnNldCBmb3IgQGhh bmRsZSBvciAwIGlmIG9iamVjdCBpcyBub3QgZm91bmQuCisgKi8KK3VpbnQ2NF90IGludGVsX2Ji X2dldF9vYmplY3Rfb2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUp Cit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqZWN0ID0geyAuaGFuZGxl ID0gaGFuZGxlIH07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKipmb3VuZDsK KworCWlndF9hc3NlcnQoaWJiKTsKKworCWZvdW5kID0gdGZpbmQoKHZvaWQgKikgJm9iamVjdCwg JmliYi0+cm9vdCwgX19jb21wYXJlX29iamVjdHMpOworCWlmICghZm91bmQpCisJCXJldHVybiAw OworCisJcmV0dXJuICgqZm91bmQpLT5vZmZzZXQ7Cit9CmRpZmYgLS1naXQgYS9saWIvaW50ZWxf YmF0Y2hidWZmZXIuaCBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCmluZGV4IDQ0MmYzYTE4Li44 MDc4OGQ1ZiAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKKysrIGIvbGliL2lu dGVsX2JhdGNoYnVmZmVyLmgKQEAgLTcsNiArNyw3IEBACiAKICNpbmNsdWRlICJpZ3RfY29yZS5o IgogI2luY2x1ZGUgImludGVsX3JlZy5oIgorI2luY2x1ZGUgImRybXRlc3QuaCIKIAogI2RlZmlu ZSBCQVRDSF9TWiA0MDk2CiAjZGVmaW5lIEJBVENIX1JFU0VSVkVEIDE2CkBAIC00MjIsNCArNDIz LDEwMCBAQCB0eXBlZGVmIHZvaWQgKCppZ3RfbWVkaWFfc3BpbmZ1bmNfdCkoc3RydWN0IGludGVs X2JhdGNoYnVmZmVyICpiYXRjaCwKIAogaWd0X21lZGlhX3NwaW5mdW5jX3QgaWd0X2dldF9tZWRp YV9zcGluZnVuYyhpbnQgZGV2aWQpOwogCisKKy8qCisgKiBCYXRjaGJ1ZmZlciB3aXRob3V0IGxp YmRybSBkZXBlbmRlbmN5CisgKi8KK3N0cnVjdCBpbnRlbF9iYiB7CisJaW50IGk5MTU7CisJaW50 IGdlbjsKKwlib29sIGRlYnVnOworCXVpbnQzMl90IGRldmlkOworCXVpbnQzMl90IGhhbmRsZTsK Kwl1aW50MzJfdCBzaXplOworCXVpbnQzMl90ICpiYXRjaDsKKwl1aW50MzJfdCAqcHRyOworCisJ dm9pZCAqcm9vdDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2JqZWN0czsK Kwl1aW50MzJfdCBudW1fb2JqZWN0czsKKwl1aW50MzJfdCBhbGxvY2F0ZWRfb2JqZWN0czsKKwl1 aW50NjRfdCBiYXRjaF9vZmZzZXQ7CisKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25f ZW50cnkgKnJlbG9jczsKKwl1aW50MzJfdCBudW1fcmVsb2NzOworCXVpbnQzMl90IGFsbG9jYXRl ZF9yZWxvY3M7Cit9OworCitzdHJ1Y3QgaW50ZWxfYmIgKmludGVsX2JiX2NyZWF0ZShpbnQgaTkx NSwgdWludDMyX3Qgc2l6ZSk7CisKK3ZvaWQgaW50ZWxfYmJfZGVzdHJveShzdHJ1Y3QgaW50ZWxf YmIgKmliYik7Cit2b2lkIGludGVsX2JiX3NldF9kZWJ1ZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwg Ym9vbCBkZWJ1Zyk7CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgaW50ZWxfYmJfb2Zmc2V0KHN0 cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCXJldHVybiAodWludDMyX3QpICgodWludDhfdCAqKSBp YmItPnB0ciAtICh1aW50OF90ICopIGliYi0+YmF0Y2gpOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgaW50ZWxfYmJfcHRyX3NldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3Qgb2Zmc2V0 KQoreworCWliYi0+cHRyID0gKHZvaWQgKikgKCh1aW50OF90ICopIGliYi0+YmF0Y2ggKyBvZmZz ZXQpOworCisJaWd0X2Fzc2VydChpbnRlbF9iYl9vZmZzZXQoaWJiKSA8IGliYi0+c2l6ZSk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9iYl9wdHJfYWRkKHN0cnVjdCBpbnRlbF9iYiAq aWJiLCB1aW50MzJfdCBvZmZzZXQpCit7CisJaW50ZWxfYmJfcHRyX3NldChpYmIsIGludGVsX2Ji X29mZnNldChpYmIpICsgb2Zmc2V0KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGludGVsX2Ji X3B0cl9hbGlnbihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkgICAgICB1aW50MzJfdCBhbGln bm1lbnQpCit7CisJaW50ZWxfYmJfcHRyX3NldChpYmIsIEFMSUdOKGludGVsX2JiX29mZnNldChp YmIpLCBhbGlnbm1lbnQpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkICppbnRlbF9iYl9wdHIo c3RydWN0IGludGVsX2JiICppYmIpCit7CisJcmV0dXJuICh2b2lkICopIGliYi0+cHRyOworfQor CitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfYmJfb3V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1 aW50MzJfdCBkd29yZCkKK3sKKwkqaWJiLT5wdHIgPSBkd29yZDsKKwlpYmItPnB0cisrOworCisJ aWd0X2Fzc2VydChpbnRlbF9iYl9vZmZzZXQoaWJiKSA8IGliYi0+c2l6ZSk7Cit9CisKKworc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKgoraW50ZWxfYmJfYWRkX29iamVjdChzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLAorCQkgICAgdWludDY0X3Qgb2Zmc2V0 LCBib29sIHdyaXRlKTsKKwordm9pZCBpbnRlbF9iYl9lbWl0X3JlbG9jKHN0cnVjdCBpbnRlbF9i YiAqaWJiLAorCQkJIHVpbnQzMl90IGhhbmRsZSwKKwkJCSB1aW50MzJfdCByZWFkX2RvbWFpbnMs CisJCQkgdWludDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJIHVpbnQ2NF90IGRlbHRhLAorCQkJIHVp bnQ2NF90IHByZXN1bWVkX29mZnNldCk7CisKK3ZvaWQgaW50ZWxfYmJfb2Zmc2V0X3JlbG9jKHN0 cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJICAgdWludDMyX3QgaGFuZGxlLAorCQkJICAgdWludDMy X3QgcmVhZF9kb21haW5zLAorCQkJICAgdWludDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJICAgdWlu dDMyX3Qgb2Zmc2V0LAorCQkJICAgdWludDY0X3QgcHJlc3VtZWRfb2Zmc2V0KTsKKworaW50IF9f aW50ZWxfYmJfZXhlYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCwK KwkJICAgIHVpbnQzMl90IGN0eCwgdWludDY0X3QgZmxhZ3MsIGJvb2wgc3luYyk7CisKK3ZvaWQg aW50ZWxfYmJfZXhlYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCwK KwkJICAgdWludDY0X3QgZmxhZ3MsIGJvb2wgc3luYyk7CisKK3ZvaWQgaW50ZWxfYmJfZXhlY193 aXRoX2NvbnRleHQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGVuZF9vZmZzZXQsCisJ CQkJdWludDMyX3QgY3R4LCB1aW50NjRfdCBmbGFncywgYm9vbCBzeW5jKTsKKwordWludDY0X3Qg aW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90 IGhhbmRsZSk7CisKICNlbmRpZgotLSAKMi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2lndC1kZXYK