From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id D64CF6E3FC for ; Mon, 18 May 2020 09:09:32 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Mon, 18 May 2020 11:09:15 +0200 Message-Id: <20200518090919.14756-4-zbigniew.kempczynski@intel.com> In-Reply-To: <20200518090919.14756-1-zbigniew.kempczynski@intel.com> References: <20200518090919.14756-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 3/7] 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 djM6IGZpeCBjb21waWxpbmcgaXNzdWVzIG9uIG5vbi14ODYgYXJjaAoKU2lnbmVkLW9mZi1ieTog WmJpZ25pZXcgS2VtcGN6ecWEc2tpIDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+CkNj OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBsaWIvaW50ZWxf YmF0Y2hidWZmZXIuYyB8IDM4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiBsaWIvaW50ZWxfYmF0Y2hidWZmZXIuaCB8ICA4OSArKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDQ3NCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNoYnVm ZmVyLmMgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwppbmRleCBmMWE0NWI0Ny4uNTgwZmVhYmIg MTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCisrKyBiL2xpYi9pbnRlbF9iYXRj aGJ1ZmZlci5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAicmVuZGVyY29weS5oIgogI2lu Y2x1ZGUgIm1lZGlhX2ZpbGwuaCIKICNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgorI2luY2x1 ZGUgImk5MTUvZ2VtX21tYW4uaCIKICNpbmNsdWRlICJtZWRpYV9zcGluLmgiCiAjaW5jbHVkZSAi Z3BncHVfZmlsbC5oIgogI2luY2x1ZGUgImlndF9hdXguaCIKQEAgLTExNzEsMyArMTE3MiwzODcg QEAgaWd0X21lZGlhX3NwaW5mdW5jX3QgaWd0X2dldF9tZWRpYV9zcGluZnVuYyhpbnQgZGV2aWQp CiAKIAlyZXR1cm4gc3BpbjsKIH0KKworLyogSW50ZWwgYmF0Y2hidWZmZXIgdjIgKi8KKworLyoK KyAqIF9faW50ZWxfYmJfY3JlYXRlOgorICogQGk5MTU6IGRybSBmZAorICogQHNpemU6IHNpemUg b2YgdGhlIGJhdGNoYnVmZmVyCisgKgorICogUmV0dXJuczoKKyAqCisgKiBQb2ludGVyIHRoZSBp bnRlbF9iYiwgYXNzZXJ0cyBvbiBmYWlsdXJlLgorICovCitzdHJ1Y3QgaW50ZWxfYmIgKmludGVs X2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfYmIg KmliYiA9IGNhbGxvYygxLCBzaXplb2YoKmliYikpOworCisJaWd0X2Fzc2VydChpYmIpOworCisJ aWJiLT5pOTE1ID0gaTkxNTsKKwlpYmItPmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChpOTE1 KTsKKwlpYmItPmdlbiA9IGludGVsX2dlbihpYmItPmRldmlkKTsKKwlpYmItPmhhbmRsZSA9IGdl bV9jcmVhdGUoaTkxNSwgc2l6ZSk7CisJaWJiLT5zaXplID0gc2l6ZTsKKwlpYmItPmJhdGNoID0g Y2FsbG9jKDEsIHNpemUpOworCWlndF9hc3NlcnQoaWJiLT5iYXRjaCk7CisJaWJiLT5wdHIgPSBp YmItPmJhdGNoOworCWliYi0+b2JqZWN0cyA9IE5VTEw7CisKKwlyZXR1cm4gaWJiOworfQorCisv KioKKyAqIGludGVsX2JiX2Rlc3Ryb3k6CisgKiBAaWJiOiBwb2ludGVyIHRvIGludGVsX2JiCisg KgorICogRnJlZXMgYWxsIHJlbG9jYXRpb25zIC8gb2JqZWN0cyBhbGxvY2F0ZWQgZHVyaW5nIGZp bGxpbmcgdGhlIGJhdGNoLgorICovCit2b2lkIGludGVsX2JiX2Rlc3Ryb3koc3RydWN0IGludGVs X2JiICppYmIpCit7CisJdWludDMyX3QgaTsKKwl2b2lkICpwdHI7CisKKwlpZ3RfYXNzZXJ0KGli Yik7CisKKwkvKiBGcmVlIHJlbG9jYXRpb25zICovCisJZm9yIChpID0gMDsgaSA8IGliYi0+bnVt X29iamVjdHM7IGkrKykgeworCQlwdHIgPSBmcm9tX3VzZXJfcG9pbnRlcihpYmItPm9iamVjdHNb aV0ucmVsb2NzX3B0cik7CisJCWlmIChwdHIpCisJCQlmcmVlKHB0cik7CisJfQorCisJZnJlZShp YmItPm9iamVjdHMpOworCisJbXVubWFwKGliYi0+YmF0Y2gsIGliYi0+c2l6ZSk7CisJZ2VtX2Ns b3NlKGliYi0+aTkxNSwgaWJiLT5oYW5kbGUpOworCisJZnJlZShpYmIpOworfQorCisvKioKKyAq IGludGVsX2JiX3NldF9kZWJ1ZzoKKyAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBk ZWJ1ZzogdHJ1ZSAvIGZhbHNlCisgKgorICogU2V0cyBkZWJ1ZyB0byB0cnVlIC8gZmFsc2UuIEV4 ZWNidWYgaXMgdGhlbiBjYWxsZWQgc3luY2hyb25vdXNseSBhbmQKKyAqIG9iamVjdC9yZWxvYyBh cnJheXMgYXJlIHByaW50ZWQgYWZ0ZXIgZXhlY3V0aW9uLgorICovCit2b2lkIGludGVsX2JiX3Nl dF9kZWJ1ZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBkZWJ1ZykKK3sKKwlpYmItPmRlYnVn ID0gZGVidWc7Cit9CisKKy8qCisgKiBpbnRlbF9iYl9hZGRfaGFuZGxlOgorICogQGliYjogcG9p bnRlciB0byBpbnRlbF9iYgorICogQGhhbmRsZTogd2hpY2ggaGFuZGxlIHRvIGFkZCB0byBvYmpl Y3RzIGFycmF5CisgKiBAb2Zmc2V0OiBwcmVzdW1lZCBvZmZzZXQgb2YgdGhlIG9iamVjdCB3aGVu IEk5MTVfRVhFQ19OT19SRUxPQyBmbGFnIGlzCisgKiB1c2VkIGluIGV4ZWNidWYgY2FsbAorICoK KyAqIEZ1bmN0aW9uIGFsbG9jYXRlcyBhZGRpdGlvbmFsIGV4ZWNvYmogc2xvdCBpbiBvYmplY3Qg YXJyYXkgZm9yIGEgaGFuZGxlLgorICogRm9yIGJhdGNoYnVmZmVyIG9ubHkgcHJlc3VtZWQgYWRk cmVzcyBpcyBzYXZlZC4KKyAqLworc3RhdGljIHZvaWQgaW50ZWxfYmJfYWRkX2hhbmRsZShzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQl1aW50MzJfdCBoYW5kbGUsCisJCQkJdWludDY0X3Qgb2Zm c2V0KQoreworCXVpbnQzMl90IGk7CisKKwkvKiBTa2lwIGJiIGFzIG9iamVjdCwgaXQgd2lsbCBi ZSBhZGRlZCBiZWZvcmUgZXhlYyAqLworCWlmIChpYmItPmhhbmRsZSA9PSBoYW5kbGUpIHsKKwkJ aWd0X2Fzc2VydChpYmItPmJhdGNoX29mZnNldCA9PSAwIHx8CisJCQkgICBpYmItPmJhdGNoX29m ZnNldCA9PSBvZmZzZXQpOworCQlpYmItPmJhdGNoX29mZnNldCA9IG9mZnNldDsKKwkJcmV0dXJu OworCX0KKworCWZvciAoaSA9IDA7IGkgPCBpYmItPm51bV9vYmplY3RzOyBpKyspCisJCWlmIChp YmItPm9iamVjdHNbaV0uaGFuZGxlID09IGhhbmRsZSkKKwkJCXJldHVybjsKKworCWkgPSBpYmIt Pm51bV9vYmplY3RzKys7CisJaWJiLT5vYmplY3RzID0gcmVhbGxvYyhpYmItPm9iamVjdHMsCisJ CQkgICAgICAgc2l6ZW9mKCppYmItPm9iamVjdHMpICogKGkgKyAxKSk7CisJaWd0X2Fzc2VydChp YmItPm9iamVjdHMpOworCisJbWVtc2V0KCZpYmItPm9iamVjdHNbaV0sIDAsIHNpemVvZigqaWJi LT5vYmplY3RzKSk7CisJaWJiLT5vYmplY3RzW2ldLmhhbmRsZSA9IGhhbmRsZTsKKwlpYmItPm9i amVjdHNbaV0ub2Zmc2V0ID0gb2Zmc2V0OworfQorCisvKgorICogaW50ZWxfYmJfYWRkX3JlbG9j OgorICogQGliYjogcG9pbnRlciB0byBpbnRlbF9iYgorICogQGhhbmRsZTogb2JqZWN0IGhhbmRs ZSB3aGljaCBhZGRyZXNzIHdpbGwgYmUgdGFrZW4gdG8gcGF0Y2ggdGhlIGJiCisgKiBAcmVhZF9k b21haW5zOiBnZW0gZG9tYWluIGJpdHMgZm9yIHRoZSByZWxvY2F0aW9uCisgKiBAd3JpdGVfZG9t YWluOiBnZW0gZG9tYWluIGJpdCBmb3IgdGhlIHJlbG9jYXRpb24KKyAqIEBkZWx0YTogZGVsdGEg dmFsdWUgdG8gYWRkIHRvIEBidWZmZXIncyBncHUgYWRkcmVzcworICogQG9mZnNldDogb2Zmc2V0 IHdpdGhpbiBiYiB0byBiZSBwYXRjaGVkCisgKiBAcHJlc3VtZWRfb2Zmc2V0OiBhZGRyZXNzIG9m IHRoZSBvYmplY3QgaW4gYWRkcmVzcyBzcGFjZSwgaW1wb3J0YW50IGZvcgorICogSTkxNV9FWEVD X05PX1JFTE9DIGZsYWcKKyAqCisgKiBGdW5jdGlvbiBhbGxvY2F0ZXMgYWRkaXRpb25hbCByZWxv Y2F0aW9uIHNsb3QgaW4gcmVsb2MgYXJyYXkgZm9yIGEgaGFuZGxlLgorICovCitzdGF0aWMgdm9p ZCBpbnRlbF9iYl9hZGRfcmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsCisJCQkgICAgICAgdWlu dDMyX3QgaGFuZGxlLAorCQkJICAgICAgIHVpbnQzMl90IHJlYWRfZG9tYWlucywKKwkJCSAgICAg ICB1aW50MzJfdCB3cml0ZV9kb21haW4sCisJCQkgICAgICAgdWludDY0X3QgZGVsdGEsCisJCQkg ICAgICAgdWludDY0X3Qgb2Zmc2V0LAorCQkJICAgICAgIHVpbnQ2NF90IHByZXN1bWVkX29mZnNl dCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jczsKKwl1 aW50MzJfdCBpOworCisJaW50ZWxfYmJfYWRkX2hhbmRsZShpYmIsIGhhbmRsZSwgcHJlc3VtZWRf b2Zmc2V0KTsKKworCXJlbG9jcyA9IGliYi0+cmVsb2NzOworCWlmIChpYmItPm51bV9yZWxvY3Mg PT0gaWJiLT5hbGxvY2F0ZWRfcmVsb2NzKSB7CisJCWliYi0+YWxsb2NhdGVkX3JlbG9jcyArPSA0 MDk2IC8gc2l6ZW9mKCpyZWxvY3MpOworCQlyZWxvY3MgPSByZWFsbG9jKHJlbG9jcywgc2l6ZW9m KCpyZWxvY3MpICogaWJiLT5hbGxvY2F0ZWRfcmVsb2NzKTsKKwkJaWd0X2Fzc2VydChyZWxvY3Mp OworCQlpYmItPnJlbG9jcyA9IHJlbG9jczsKKwl9CisKKwlpID0gaWJiLT5udW1fcmVsb2NzKys7 CisJbWVtc2V0KCZyZWxvY3NbaV0sIDAsIHNpemVvZigqcmVsb2NzKSk7CisJcmVsb2NzW2ldLnRh cmdldF9oYW5kbGUgPSBoYW5kbGU7CisJcmVsb2NzW2ldLnJlYWRfZG9tYWlucyA9IHJlYWRfZG9t YWluczsKKwlyZWxvY3NbaV0ud3JpdGVfZG9tYWluID0gd3JpdGVfZG9tYWluOworCXJlbG9jc1tp XS5kZWx0YSA9IGRlbHRhOworCXJlbG9jc1tpXS5vZmZzZXQgPSBvZmZzZXQ7CisJcmVsb2NzW2ld LnByZXN1bWVkX29mZnNldCA9IHByZXN1bWVkX29mZnNldDsKKworCWlndF9kZWJ1ZygiYWRkIHJl bG9jOiBoYW5kbGU6ICV1LCByL3c6IDB4JXgvMHgleCwgIgorCQkgICJkZWx0YTogMHglIiBQUkl4 NjQgIiwgIgorCQkgICJvZmZzZXQ6IDB4JSIgUFJJeDY0ICIsICIKKwkJICAicG9mZnNldDogMHgl IiBQUkl4NjQgIlxuIiwKKwkJICBoYW5kbGUsIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluLAor CQkgIGRlbHRhLCBvZmZzZXQsIHByZXN1bWVkX29mZnNldCk7Cit9CisKKy8qKgorICogaW50ZWxf YmJfZW1pdF9yZWxvYzoKKyAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBoYW5kbGU6 IG9iamVjdCBoYW5kbGUgd2hpY2ggYWRkcmVzcyB3aWxsIGJlIHRha2VuIHRvIHBhdGNoIHRoZSBi YgorICogQHJlYWRfZG9tYWluczogZ2VtIGRvbWFpbiBiaXRzIGZvciB0aGUgcmVsb2NhdGlvbgor ICogQHdyaXRlX2RvbWFpbjogZ2VtIGRvbWFpbiBiaXQgZm9yIHRoZSByZWxvY2F0aW9uCisgKiBA ZGVsdGE6IGRlbHRhIHZhbHVlIHRvIGFkZCB0byBAYnVmZmVyJ3MgZ3B1IGFkZHJlc3MKKyAqIEBw cmVzdW1lZF9vZmZzZXQ6IGFkZHJlc3Mgb2YgdGhlIG9iamVjdCBpbiBhZGRyZXNzIHNwYWNlLCBp bXBvcnRhbnQgZm9yCisgKiBJOTE1X0VYRUNfTk9fUkVMT0MgZmxhZworICoKKyAqIEZ1bmN0aW9u IHByZXBhcmVzIHJlbG9jYXRpb24gKGV4ZWNvYmogaWYgcmVxdWlyZWQgKyByZWxvYykgYW5kIGVt aXRzCisgKiBvZmZzZXQgaW4gYmIuIEZvciBJOTE1X0VYRUNfTk9fUkVMT0MgcHJlc3VtZWRfb2Zm c2V0IGlzIGEgaGludCB3ZSBhbHJlYWR5CisgKiBoYXZlIG9iamVjdCBpbiB2YWxpZCBwbGFjZSBh bmQgcmVsb2NhdGlvbiBzdGVwIGNhbiBiZSBza2lwcGVkIGluIHRoaXMgY2FzZS4KKyAqCisgKiBO b3RlOiBkZWx0YSBpcyB2YWx1ZSBhZGRlZCB0byBhZGRyZXNzLCBtb3N0bHkgdXNlZCB3aGVuIHNv bWUgaW5zdHJ1Y3Rpb25zCisgKiByZXF1aXJlIG1vZGlmeS1iaXQgc2V0IHRvIGFwcGx5IGNoYW5n ZS4gV2hpY2ggZGVsdGEgaXMgdmFsaWQgZGVwZW5kcworICogb24gaW5zdHJ1Y3Rpb24gKHNlZSBp bnN0cnVjdGlvbiBzcGVjaWZpY2F0aW9uKS4KKyAqLwordm9pZCBpbnRlbF9iYl9lbWl0X3JlbG9j KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJIHVpbnQzMl90IGhhbmRsZSwKKwkJCSB1aW50MzJf dCByZWFkX2RvbWFpbnMsCisJCQkgdWludDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJIHVpbnQ2NF90 IGRlbHRhLAorCQkJIHVpbnQ2NF90IHByZXN1bWVkX29mZnNldCkKK3sKKwlpZ3RfYXNzZXJ0KGli Yik7CisKKwlpbnRlbF9iYl9hZGRfcmVsb2MoaWJiLCBoYW5kbGUsIHJlYWRfZG9tYWlucywgd3Jp dGVfZG9tYWluLAorCQkJICAgZGVsdGEsIGludGVsX2JiX29mZnNldChpYmIpLCBwcmVzdW1lZF9v ZmZzZXQpOworCisJaW50ZWxfYmJfb3V0KGliYiwgZGVsdGEgKyBwcmVzdW1lZF9vZmZzZXQpOwor CWlmIChpYmItPmdlbiA+PSA4KQorCQlpbnRlbF9iYl9vdXQoaWJiLCBwcmVzdW1lZF9vZmZzZXQg Pj4gMzIpOworfQorCisvKioKKyAqIGludGVsX2JiX29mZnNldF9yZWxvYzoKKyAqIEBpYmI6IHBv aW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBoYW5kbGU6IG9iamVjdCBoYW5kbGUgd2hpY2ggYWRkcmVz cyB3aWxsIGJlIHRha2VuIHRvIHBhdGNoIHRoZSBiYgorICogQHJlYWRfZG9tYWluczogZ2VtIGRv bWFpbiBiaXRzIGZvciB0aGUgcmVsb2NhdGlvbgorICogQHdyaXRlX2RvbWFpbjogZ2VtIGRvbWFp biBiaXQgZm9yIHRoZSByZWxvY2F0aW9uCisgKiBAb2Zmc2V0OiBvZmZzZXQgd2l0aGluIGJiIHRv IGJlIHBhdGNoZWQKKyAqIEBwcmVzdW1lZF9vZmZzZXQ6IGFkZHJlc3Mgb2YgdGhlIG9iamVjdCBp biBhZGRyZXNzIHNwYWNlLCBpbXBvcnRhbnQgZm9yCisgKiBJOTE1X0VYRUNfTk9fUkVMT0MgZmxh ZworICoKKyAqIEZ1bmN0aW9uIHByZXBhcmVzIHJlbG9jYXRpb24gKGV4ZWNvYmogaWYgcmVxdWly ZWQgKyByZWxvYykuIEl0IGl0IHVzZWQKKyAqIGZvciBlZGl0aW5nIGJhdGNoYnVmZmVyIHZpYSBt b2RpZnlpbmcgc3RydWN0dXJlcy4gSXQgbWVhbnMgd2hlbiB3ZSdyZQorICogcHJlcGFyaW5nIGJh dGNoYnVmZmVyIGl0IGlzIG1vcmUgZGVzY3JpcHRpdmUgdG8gZWRpdCB0aGUgc3RydWN0dXJlCisg KiB0aGFuIGVtaXR0aW5nIGR3b3Jkcy4gQnV0IGl0IHJlcXVpcmUgZm9yIHNvbWUgZmllbGRzIHRv IHBvaW50IHRoZQorICogcmVsb2NhdGlvbi4gRm9yIHRoYXQgY2FzZSBAb2Zmc2V0IGlzIHBhc3Nl ZCBieSB0aGUgdXNlciBhbmQgaXQgcG9pbnRzCisgKiB0byB0aGUgb2Zmc2V0IGluIGJiIHdoZXJl IHRoZSByZWxvY2F0aW9uIHdpbGwgYmUgYXBwbGllZC4KKyAqLwordm9pZCBpbnRlbF9iYl9vZmZz ZXRfcmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsCisJCQkgICB1aW50MzJfdCBoYW5kbGUsCisJ CQkgICB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkgICB1aW50MzJfdCB3cml0ZV9kb21haW4s CisJCQkgICB1aW50MzJfdCBvZmZzZXQsCisJCQkgICB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQp Cit7CisJaWd0X2Fzc2VydChpYmIpOworCisJaW50ZWxfYmJfYWRkX3JlbG9jKGliYiwgaGFuZGxl LCByZWFkX2RvbWFpbnMsIHdyaXRlX2RvbWFpbiwKKwkJCSAgIDAsIG9mZnNldCwgcHJlc3VtZWRf b2Zmc2V0KTsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfYmJfZHVtcF9leGVjYnVmKHN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmV4ZWNidWYpCit7CisJc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgKm9iamVjdHM7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9u X2VudHJ5ICpyZWxvY3MsICpyZWxvYzsKKwlpbnQgaSwgajsKKworCWlndF9pbmZvKCJleGVjYnVm IGJhdGNoIGxlbjogJXUsIHN0YXJ0IG9mZnNldDogMHgleCwgIgorCQkgIkRSMTogMHgleCwgRFI0 OiAweCV4LCAiCisJCSAibnVtIGNsaXA6ICV1LCBjbGlwcHRyOiAweCVsbHgsICIKKwkJICJmbGFn czogMHglbGx4LCByc3ZkMTogMHglbGx4LCByc3ZkMjogMHglbGx4XG4iLAorCQkgZXhlY2J1Zi0+ YmF0Y2hfbGVuLCBleGVjYnVmLT5iYXRjaF9zdGFydF9vZmZzZXQsCisJCSBleGVjYnVmLT5EUjEs IGV4ZWNidWYtPkRSNCwKKwkJIGV4ZWNidWYtPm51bV9jbGlwcmVjdHMsIGV4ZWNidWYtPmNsaXBy ZWN0c19wdHIsCisJCSBleGVjYnVmLT5mbGFncywgZXhlY2J1Zi0+cnN2ZDEsIGV4ZWNidWYtPnJz dmQyKTsKKworCWlndF9pbmZvKCJleGVjYnVmIGJ1ZmZlcl9jb3VudDogJWRcbiIsIGV4ZWNidWYt PmJ1ZmZlcl9jb3VudCk7CisJZm9yIChpID0gMDsgaSA8IGV4ZWNidWYtPmJ1ZmZlcl9jb3VudDsg aSsrKSB7CisJCW9iamVjdHMgPSAmKChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAq KQorCQkJICAgIGZyb21fdXNlcl9wb2ludGVyKGV4ZWNidWYtPmJ1ZmZlcnNfcHRyKSlbaV07CisJ CXJlbG9jcyA9IGZyb21fdXNlcl9wb2ludGVyKG9iamVjdHMtPnJlbG9jc19wdHIpOworCQlpZ3Rf aW5mbygiIFslZF0gPGhhbmRsZTogJXUsIHJlbG9jX2NvdW50OiAlZCwgcmVsb2NfcHRyOiAlcCwg IgorCQkJICJhbGlnbjogMHglbGx4LCBvZmZzZXQ6IDB4JWxseCwgZmxhZ3M6IDB4JWxseCwgIgor CQkJICJyc3ZkMTogMHglbGx4LCByc3ZkMjogMHglbGx4XG4iLAorCQkJIGksIG9iamVjdHMtPmhh bmRsZSwgb2JqZWN0cy0+cmVsb2NhdGlvbl9jb3VudCwKKwkJCSByZWxvY3MsCisJCQkgb2JqZWN0 cy0+YWxpZ25tZW50LAorCQkJIG9iamVjdHMtPm9mZnNldCwgb2JqZWN0cy0+ZmxhZ3MsCisJCQkg b2JqZWN0cy0+cnN2ZDEsIG9iamVjdHMtPnJzdmQyKTsKKwkJaWYgKG9iamVjdHMtPnJlbG9jYXRp b25fY291bnQpIHsKKwkJCWlndF9pbmZvKCJleGVjYnVmIHJlbG9jczpcbiIpOworCQkJZm9yIChq ID0gMDsgaiA8IG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQ7IGorKykgeworCQkJCXJlbG9jID0g JnJlbG9jc1tqXTsKKwkJCQlpZ3RfaW5mbygiIFslZF0gPHRhcmdldCBoYW5kbGU6ICV1LCAiCisJ CQkJCSAib2Zmc2V0OiAweCVsbHgsIGRlbHRhOiAweCV4LCAiCisJCQkJCSAicHJlc3VtZWRfb2Zm c2V0OiAweCVsbHgsICIKKwkJCQkJICJyZWFkX2RvbWFpbnM6IDB4JXgsICIKKwkJCQkJICJ3cml0 ZV9kb21haW46IDB4JXhcbiIsCisJCQkJCSBqLCByZWxvYy0+dGFyZ2V0X2hhbmRsZSwKKwkJCQkJ IHJlbG9jLT5vZmZzZXQsIHJlbG9jLT5kZWx0YSwKKwkJCQkJIHJlbG9jLT5wcmVzdW1lZF9vZmZz ZXQsCisJCQkJCSByZWxvYy0+cmVhZF9kb21haW5zLAorCQkJCQkgcmVsb2MtPndyaXRlX2RvbWFp bik7CisJCQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBAX19pbnRlbF9iYl9leGVjOgorICogQGli YjogcG9pbnRlciB0byBpbnRlbF9iYgorICogQGVuZF9vZmZzZXQ6IG9mZnNldCBvZiB0aGUgbGFz dCBpbnN0cnVjdGlvbiBpbiB0aGUgYmIKKyAqIEBmbGFnczogZmxhZ3MgcGFzc2VkIGRpcmVjdGx5 IHRvIGV4ZWNidWYKKyAqIEBjdHg6IGNvbnRleHQKKyAqIEBzeW5jOiBpZiB0cnVlIHdhaXQgZm9y IGV4ZWNidWYgY29tcGxldGlvbiwgb3RoZXJ3aXNlIGNhbGxlciBpcyByZXNwb25zaWJsZQorICog dG8gd2FpdCBmb3IgY29tcGxldGlvbgorICoKKyAqIFJldHVybnM6IDAgb24gc3VjY2Vzcywgb3Ro ZXJ3aXNlIGVycm5vLgorICoKKyAqIE5vdGU6IEluIHRoaXMgc3RlcCBleGVjb2JqIGZvciBiYiBp cyBhbGxvY2F0ZWQgYW5kIGluc2VydGVkIHRvIHRoZSBvYmplY3RzCisgKiBhcnJheS4KKyovCitp bnQgX19pbnRlbF9iYl9leGVjKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBlbmRfb2Zm c2V0LAorCQkgICAgdWludDMyX3QgY3R4LCB1aW50NjRfdCBmbGFncywgYm9vbCBzeW5jKQorewor CXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwl1aW50MzJfdCBpOwor CWludCByZXQ7CisKKwlpID0gaWJiLT5udW1fb2JqZWN0czsKKworCWlmIChpID09IDAgfHwgaWJi LT5vYmplY3RzW2kgLSAxXS5oYW5kbGUgIT0gaWJiLT5oYW5kbGUpIHsKKwkJaWJiLT5vYmplY3Rz ID0gcmVhbGxvYyhpYmItPm9iamVjdHMsIHNpemVvZigqaWJiLT5vYmplY3RzKSAqIChpICsgMSkp OworCQlpZ3RfYXNzZXJ0KGliYi0+b2JqZWN0cyk7CisKKwkJZ2VtX3dyaXRlKGliYi0+aTkxNSwg aWJiLT5oYW5kbGUsIDAsIGliYi0+YmF0Y2gsIGliYi0+c2l6ZSk7CisKKwkJbWVtc2V0KCZpYmIt Pm9iamVjdHNbaV0sIDAsIHNpemVvZigqaWJiLT5vYmplY3RzKSk7CisJCWliYi0+b2JqZWN0c1tp XS5yZWxvY3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKGliYi0+cmVsb2NzKTsKKwkJaWJiLT5vYmpl Y3RzW2ldLnJlbG9jYXRpb25fY291bnQgPSBpYmItPm51bV9yZWxvY3M7CisJCWliYi0+b2JqZWN0 c1tpXS5oYW5kbGUgPSBpYmItPmhhbmRsZTsKKwkJaWJiLT5vYmplY3RzW2ldLm9mZnNldCA9IGli Yi0+YmF0Y2hfb2Zmc2V0OworCQlpYmItPm51bV9vYmplY3RzKys7CisJfQorCisJbWVtc2V0KCZl eGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOworCWV4ZWNidWYuYnVmZmVyc19wdHIgPSAodWlu dHB0cl90KSBpYmItPm9iamVjdHM7CisJZXhlY2J1Zi5idWZmZXJfY291bnQgPSBpYmItPm51bV9v YmplY3RzOworCWV4ZWNidWYuYmF0Y2hfbGVuID0gZW5kX29mZnNldDsKKwlleGVjYnVmLnJzdmQx ID0gY3R4OworCWV4ZWNidWYuZmxhZ3MgPSBmbGFnczsKKworCXJldCA9IF9fZ2VtX2V4ZWNidWYo aWJiLT5pOTE1LCAmZXhlY2J1Zik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChz eW5jIHx8IGliYi0+ZGVidWcpCisJCWdlbV9zeW5jKGliYi0+aTkxNSwgaWJiLT5oYW5kbGUpOwor CisJaWYgKGliYi0+ZGVidWcpCisJCWludGVsX2JiX2R1bXBfZXhlY2J1ZigmZXhlY2J1Zik7CisK KwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBpbnRlbF9iYl9leGVjOgorICogQGliYjogcG9pbnRl ciB0byBpbnRlbF9iYgorICogQGVuZF9vZmZzZXQ6IG9mZnNldCBvZiB0aGUgbGFzdCBpbnN0cnVj dGlvbiBpbiB0aGUgYmIKKyAqIEBmbGFnczogZmxhZ3MgcGFzc2VkIGRpcmVjdGx5IHRvIGV4ZWNi dWYKKyAqIEBzeW5jOiBpZiB0cnVlIHdhaXQgZm9yIGV4ZWNidWYgY29tcGxldGlvbiwgb3RoZXJ3 aXNlIGNhbGxlciBpcyByZXNwb25zaWJsZQorICogdG8gd2FpdCBmb3IgY29tcGxldGlvbgorICoK KyAqIERvIGV4ZWNidWYgd2l0aCBkZWZhdWx0IGNvbnRleHQuIEFzc2VydHMgb24gZmFpbHVyZS4K KyovCit2b2lkIGludGVsX2JiX2V4ZWMoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGVu ZF9vZmZzZXQsCisJCSAgIHVpbnQ2NF90IGZsYWdzLCBib29sIHN5bmMpCit7CisJaWd0X2Fzc2Vy dF9lcShfX2ludGVsX2JiX2V4ZWMoaWJiLCBlbmRfb2Zmc2V0LCAwLCBmbGFncywgc3luYyksIDAp OworfQorCisvKgorICogaW50ZWxfYmJfZXhlY193aXRoX2NvbnRleHQ6CisgKiBAaWJiOiBwb2lu dGVyIHRvIGludGVsX2JiCisgKiBAZW5kX29mZnNldDogb2Zmc2V0IG9mIHRoZSBsYXN0IGluc3Ry dWN0aW9uIGluIHRoZSBiYgorICogQGZsYWdzOiBmbGFncyBwYXNzZWQgZGlyZWN0bHkgdG8gZXhl Y2J1ZgorICogQGN0eDogY29udGV4dAorICogQHN5bmM6IGlmIHRydWUgd2FpdCBmb3IgZXhlY2J1 ZiBjb21wbGV0aW9uLCBvdGhlcndpc2UgY2FsbGVyIGlzIHJlc3BvbnNpYmxlCisgKiB0byB3YWl0 IGZvciBjb21wbGV0aW9uCisgKgorICogRG8gZXhlY2J1ZiB3aXRoIGNvbnRleHQgQGNvbnRleHQu CisqLwordm9pZCBpbnRlbF9iYl9leGVjX3dpdGhfY29udGV4dChzdHJ1Y3QgaW50ZWxfYmIgKmli YiwgdWludDMyX3QgZW5kX29mZnNldCwKKwkJCQl1aW50MzJfdCBjdHgsIHVpbnQ2NF90IGZsYWdz LCBib29sIHN5bmMpCit7CisJaWd0X2Fzc2VydF9lcShfX2ludGVsX2JiX2V4ZWMoaWJiLCBlbmRf b2Zmc2V0LCBjdHgsIGZsYWdzLCBzeW5jKSwgMCk7Cit9CisKKy8qKgorICogaW50ZWxfYmJfZ2V0 X3ByZXN1bWVkX2FkZHJlc3M6CisgKiBAaWJiOiBwb2ludGVyIHRvIGludGVsX2JiCisgKiBAaGFu ZGxlOiBvYmplY3QgaGFuZGxlCisgKgorICogV2hlbiBvYmplY3RzIGFkZHJlc3NlcyBhcmUgcHJl dmlvdXNseSBwaW5uZWQgYW5kIHdlIGRvbid0IHdhbnQgdG8gcmVsb2NhdGUKKyAqIHdlIG5lZWQg dG8gYWNxdWlyZSB0aGVtIGZyb20gcHJldmlvdXMgZXhlY2J1Zi4gRnVuY3Rpb24gY2hlY2tzIHBy ZXZpb3VzCisgKiByZWxvY2F0aW9uIGVudHJ5IGZvciBAaGFuZGxlIGFuZCByZXR1cm5zIHByZXN1 bWVkX29mZnNldCBmaWVsZC4KKyAqLwordWludDY0X3QgaW50ZWxfYmJfZ2V0X3ByZXN1bWVkX29m ZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKQoreworCXVpbnQzMl90 IGk7CisKKwlpZ3RfYXNzZXJ0KGliYik7CisKKwlmb3IgKGkgPSAwOyBpIDwgaWJiLT5udW1fcmVs b2NzOyBpKyspCisJCWlmIChpYmItPnJlbG9jc1tpXS50YXJnZXRfaGFuZGxlID09IGhhbmRsZSkK KwkJCXJldHVybiBpYmItPnJlbG9jc1tpXS5wcmVzdW1lZF9vZmZzZXQ7CisKKwlyZXR1cm4gMDsK K30KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIGIvbGliL2ludGVsX2JhdGNo YnVmZmVyLmgKaW5kZXggNDQyZjNhMTguLjVmM2JkOTc0IDEwMDY0NAotLS0gYS9saWIvaW50ZWxf YmF0Y2hidWZmZXIuaAorKysgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaApAQCAtNyw2ICs3LDcg QEAKIAogI2luY2x1ZGUgImlndF9jb3JlLmgiCiAjaW5jbHVkZSAiaW50ZWxfcmVnLmgiCisjaW5j bHVkZSAiZHJtdGVzdC5oIgogCiAjZGVmaW5lIEJBVENIX1NaIDQwOTYKICNkZWZpbmUgQkFUQ0hf UkVTRVJWRUQgMTYKQEAgLTQyMiw0ICs0MjMsOTIgQEAgdHlwZWRlZiB2b2lkICgqaWd0X21lZGlh X3NwaW5mdW5jX3QpKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAKIGlndF9tZWRp YV9zcGluZnVuY190IGlndF9nZXRfbWVkaWFfc3BpbmZ1bmMoaW50IGRldmlkKTsKIAorCisvKgor ICogQmF0Y2hidWZmZXIgd2l0aG91dCBsaWJkcm0gZGVwZW5kZW5jeQorICovCitzdHJ1Y3QgaW50 ZWxfYmIgeworCWludCBpOTE1OworCWludCBnZW47CisJYm9vbCBkZWJ1ZzsKKwl1aW50MzJfdCBk ZXZpZDsKKwl1aW50MzJfdCBoYW5kbGU7CisJdWludDMyX3Qgc2l6ZTsKKwl1aW50MzJfdCAqYmF0 Y2g7CisJdWludDMyX3QgKnB0cjsKKworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3Qy ICpvYmplY3RzOworCXVpbnQzMl90IG51bV9vYmplY3RzOworCXVpbnQ2NF90IGJhdGNoX29mZnNl dDsKKworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2NzOworCXVp bnQzMl90IG51bV9yZWxvY3M7CisJdWludDMyX3QgYWxsb2NhdGVkX3JlbG9jczsKK307CisKK3N0 cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBzaXplKTsK Kwordm9pZCBpbnRlbF9iYl9kZXN0cm95KHN0cnVjdCBpbnRlbF9iYiAqaWJiKTsKK3ZvaWQgaW50 ZWxfYmJfc2V0X2RlYnVnKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBib29sIGRlYnVnKTsKKworaW5s aW5lIHVpbnQzMl90IGludGVsX2JiX29mZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK3sKKwly ZXR1cm4gKHVpbnQzMl90KSAoKHVpbnQ4X3QgKikgaWJiLT5wdHIgLSAodWludDhfdCAqKSBpYmIt PmJhdGNoKTsKK30KKworaW5saW5lIHZvaWQgaW50ZWxfYmJfcHRyX3NldChzdHJ1Y3QgaW50ZWxf YmIgKmliYiwgdWludDMyX3Qgb2Zmc2V0KQoreworCWliYi0+cHRyID0gKHZvaWQgKikgKCh1aW50 OF90ICopIGliYi0+YmF0Y2ggKyBvZmZzZXQpOworCisJaWd0X2Fzc2VydChpbnRlbF9iYl9vZmZz ZXQoaWJiKSA8IGliYi0+c2l6ZSk7Cit9CisKK2lubGluZSB2b2lkIGludGVsX2JiX3B0cl9hZGQo c3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IG9mZnNldCkKK3sKKwlpbnRlbF9iYl9wdHJf c2V0KGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYikgKyBvZmZzZXQpOworfQorCitpbmxpbmUgdm9p ZCBpbnRlbF9iYl9wdHJfYWxpZ24oc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGFsaWdu bWVudCkKK3sKKwlpbnRlbF9iYl9wdHJfc2V0KGliYiwgQUxJR04oaW50ZWxfYmJfb2Zmc2V0KGli YiksIGFsaWdubWVudCkpOworfQorCitpbmxpbmUgdm9pZCAqaW50ZWxfYmJfcHRyKHN0cnVjdCBp bnRlbF9iYiAqaWJiKQoreworCXJldHVybiAodm9pZCAqKSBpYmItPnB0cjsKK30KKworaW5saW5l IHZvaWQgaW50ZWxfYmJfb3V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBkd29yZCkK K3sKKwkqaWJiLT5wdHIgPSBkd29yZDsKKwlpYmItPnB0cisrOworCisJaWd0X2Fzc2VydChpbnRl bF9iYl9vZmZzZXQoaWJiKSA8IGliYi0+c2l6ZSk7Cit9CisKK3ZvaWQgaW50ZWxfYmJfZW1pdF9y ZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSB1aW50MzJfdCBoYW5kbGUsCisJCQkgdWlu dDMyX3QgcmVhZF9kb21haW5zLAorCQkJIHVpbnQzMl90IHdyaXRlX2RvbWFpbiwKKwkJCSB1aW50 NjRfdCBkZWx0YSwKKwkJCSB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQpOworCit2b2lkIGludGVs X2JiX29mZnNldF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSAgIHVpbnQzMl90IGhh bmRsZSwKKwkJCSAgIHVpbnQzMl90IHJlYWRfZG9tYWlucywKKwkJCSAgIHVpbnQzMl90IHdyaXRl X2RvbWFpbiwKKwkJCSAgIHVpbnQzMl90IG9mZnNldCwKKwkJCSAgIHVpbnQ2NF90IHByZXN1bWVk X29mZnNldCk7CisKK2ludCBfX2ludGVsX2JiX2V4ZWMoc3RydWN0IGludGVsX2JiICppYmIsIHVp bnQzMl90IGVuZF9vZmZzZXQsCisJCSAgICB1aW50MzJfdCBjdHgsIHVpbnQ2NF90IGZsYWdzLCBi b29sIHN5bmMpOworCit2b2lkIGludGVsX2JiX2V4ZWMoc3RydWN0IGludGVsX2JiICppYmIsIHVp bnQzMl90IGVuZF9vZmZzZXQsCisJCSAgIHVpbnQ2NF90IGZsYWdzLCBib29sIHN5bmMpOworCit2 b2lkIGludGVsX2JiX2V4ZWNfd2l0aF9jb250ZXh0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50 MzJfdCBlbmRfb2Zmc2V0LAorCQkJCXVpbnQzMl90IGN0eCwgdWludDY0X3QgZmxhZ3MsIGJvb2wg c3luYyk7CisKK3VpbnQ2NF90IGludGVsX2JiX2dldF9wcmVzdW1lZF9vZmZzZXQoc3RydWN0IGlu dGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSk7CisKICNlbmRpZgotLSAKMi4yNi4wCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxp bmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK