From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E20A6EBD0 for ; Fri, 15 May 2020 06:44:54 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Fri, 15 May 2020 08:44:31 +0200 Message-Id: <20200515064435.25926-4-zbigniew.kempczynski@intel.com> In-Reply-To: <20200515064435.25926-1-zbigniew.kempczynski@intel.com> References: <20200515064435.25926-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 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 ClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5z a2lAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Ci0tLQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmMgfCAzMzcgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogbGliL2ludGVsX2JhdGNoYnVmZmVyLmggfCAgODIgKysrKysr KysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0MTkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2xp Yi9pbnRlbF9iYXRjaGJ1ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKaW5kZXggZjFh NDViNDcuLjk2NWUwN2RkIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYworKysg Yi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgInJl bmRlcmNvcHkuaCIKICNpbmNsdWRlICJtZWRpYV9maWxsLmgiCiAjaW5jbHVkZSAiaW9jdGxfd3Jh cHBlcnMuaCIKKyNpbmNsdWRlICJpOTE1L2dlbV9tbWFuLmgiCiAjaW5jbHVkZSAibWVkaWFfc3Bp bi5oIgogI2luY2x1ZGUgImdwZ3B1X2ZpbGwuaCIKICNpbmNsdWRlICJpZ3RfYXV4LmgiCkBAIC0x MTcxLDMgKzExNzIsMzM5IEBAIGlndF9tZWRpYV9zcGluZnVuY190IGlndF9nZXRfbWVkaWFfc3Bp bmZ1bmMoaW50IGRldmlkKQogCiAJcmV0dXJuIHNwaW47CiB9CisKKy8qIEludGVsIGJhdGNoYnVm ZmVyIHYyICovCisKKy8qKgorICogaW50ZWxfYmJfY3JlYXRlOgorICogQGk5MTU6IGRybSBmZAor ICogQHNpemU6IHNpemUgb2YgdGhlIGJhdGNoYnVmZmVyCisgKgorICogUmV0dXJuczoKKyAqCisg KiBQb2ludGVyIHRoZSBpbnRlbF9iYiwgYXNzZXJ0cyBvbiBmYWlsdXJlLgorICovCitzdHJ1Y3Qg aW50ZWxfYmIgKmludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qgc2l6ZSkKK3sKKwlz dHJ1Y3QgaW50ZWxfYmIgKmliYiA9IGNhbGxvYygxLCBzaXplb2YoKmliYikpOworCisJaWd0X2Fz c2VydChpYmIpOworCisJaWJiLT5pOTE1ID0gaTkxNTsKKwlpYmItPmRldmlkID0gaW50ZWxfZ2V0 X2RybV9kZXZpZChpOTE1KTsKKwlpYmItPmdlbiA9IGludGVsX2dlbihpYmItPmRldmlkKTsKKwlp YmItPmhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwgc2l6ZSk7CisJaWJiLT5zaXplID0gc2l6ZTsK KwlpYmItPmJhdGNoID0gY2FsbG9jKDEsIHNpemUpOworCWlndF9hc3NlcnQoaWJiLT5iYXRjaCk7 CisJaWJiLT5wdHIgPSBpYmItPmJhdGNoOworCWliYi0+b2JqZWN0cyA9IE5VTEw7CisKKwlyZXR1 cm4gaWJiOworfQorCisvKioKKyAqIGludGVsX2JiX2Rlc3Ryb3k6CisgKiBAaWJiOiBwb2ludGVy IHRvIGludGVsX2JiCisgKgorICogRnJlZXMgYWxsIHJlbG9jYXRpb25zIC8gb2JqZWN0cyBhbGxv Y2F0ZWQgZHVyaW5nIGZpbGxpbmcgdGhlIGJhdGNoLgorICovCit2b2lkIGludGVsX2JiX2Rlc3Ry b3koc3RydWN0IGludGVsX2JiICppYmIpCit7CisJdWludDMyX3QgaTsKKworCWlndF9hc3NlcnQo aWJiKTsKKworCS8qIEZyZWUgcmVsb2NhdGlvbnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgaWJiLT5u dW1fb2JqZWN0czsgaSsrKSB7CisJCWlmICgodm9pZCAqKSBpYmItPm9iamVjdHMtPnJlbG9jc19w dHIpCisJCQlmcmVlKGZyb21fdXNlcl9wb2ludGVyKGliYi0+b2JqZWN0cy0+cmVsb2NzX3B0cikp OworCX0KKworCWZyZWUoaWJiLT5vYmplY3RzKTsKKworCW11bm1hcChpYmItPmJhdGNoLCBpYmIt PnNpemUpOworCWdlbV9jbG9zZShpYmItPmk5MTUsIGliYi0+aGFuZGxlKTsKKworCWZyZWUoaWJi KTsKK30KKworLyoqCisgKiBpbnRlbF9iYl9zZXRfZGVidWc6CisgKiBAaWJiOiBwb2ludGVyIHRv IGludGVsX2JiCisgKiBAZGVidWc6IHRydWUgLyBmYWxzZQorICoKKyAqIFNldHMgZGVidWcgdG8g dHJ1ZSAvIGZhbHNlLiBFeGVjYnVmIGlzIHRoZW4gY2FsbGVkIHN5bmNocm9ub3VzbHkgYW5kCisg KiBvYmplY3QvcmVsb2MgYXJyYXlzIGFyZSBwcmludGVkIGFmdGVyIGV4ZWN1dGlvbi4KKyAqLwor dm9pZCBpbnRlbF9iYl9zZXRfZGVidWcoc3RydWN0IGludGVsX2JiICppYmIsIGJvb2wgZGVidWcp Cit7CisJaWJiLT5kZWJ1ZyA9IGRlYnVnOworfQorCisvKgorICogaW50ZWxfYmJfYWRkX2hhbmRs ZToKKyAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBoYW5kbGU6IHdoaWNoIGhhbmRs ZSB0byBhZGQgdG8gb2JqZWN0cyBhcnJheQorICogQG9mZnNldDogcHJlc3VtZWQgb2Zmc2V0IG9m IHRoZSBvYmplY3Qgd2hlbiBJOTE1X0VYRUNfTk9fUkVMT0MgZmxhZyBpcworICogdXNlZCBpbiBl eGVjYnVmIGNhbGwKKyAqCisgKiBGdW5jdGlvbiBhbGxvY2F0ZXMgYWRkaXRpb25hbCBleGVjb2Jq IHNsb3QgaW4gb2JqZWN0IGFycmF5IGZvciBhIGhhbmRsZS4KKyAqIEZvciBiYXRjaGJ1ZmZlciBv bmx5IHByZXN1bWVkIGFkZHJlc3MgaXMgc2F2ZWQuCisgKi8KK3N0YXRpYyB2b2lkIGludGVsX2Ji X2FkZF9oYW5kbGUoc3RydWN0IGludGVsX2JiICppYmIsCisJCQkJdWludDMyX3QgaGFuZGxlLAor CQkJCXVpbnQ2NF90IG9mZnNldCkKK3sKKwl1aW50MzJfdCBpOworCisJLyogU2tpcCBiYiBhcyBv YmplY3QsIGl0IHdpbGwgYmUgYWRkZWQgYmVmb3JlIGV4ZWMgKi8KKwlpZiAoaWJiLT5oYW5kbGUg PT0gaGFuZGxlKSB7CisJCWlndF9hc3NlcnQoaWJiLT5iYXRjaF9vZmZzZXQgPT0gMCB8fAorCQkJ ICAgaWJiLT5iYXRjaF9vZmZzZXQgPT0gb2Zmc2V0KTsKKwkJaWJiLT5iYXRjaF9vZmZzZXQgPSBv ZmZzZXQ7CisJCXJldHVybjsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgaWJiLT5udW1fb2JqZWN0 czsgaSsrKQorCQlpZiAoaWJiLT5vYmplY3RzW2ldLmhhbmRsZSA9PSBoYW5kbGUpCisJCQlyZXR1 cm47CisKKwlpID0gaWJiLT5udW1fb2JqZWN0cysrOworCWliYi0+b2JqZWN0cyA9IHJlYWxsb2Mo aWJiLT5vYmplY3RzLAorCQkJICAgICAgIHNpemVvZigqaWJiLT5vYmplY3RzKSAqIChpICsgMSkp OworCWlndF9hc3NlcnQoaWJiLT5vYmplY3RzKTsKKworCW1lbXNldCgmaWJiLT5vYmplY3RzW2ld LCAwLCBzaXplb2YoKmliYi0+b2JqZWN0cykpOworCWliYi0+b2JqZWN0c1tpXS5oYW5kbGUgPSBo YW5kbGU7CisJaWJiLT5vYmplY3RzW2ldLm9mZnNldCA9IG9mZnNldDsKK30KKworLyoKKyAqIGlu dGVsX2JiX2FkZF9yZWxvYzoKKyAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBoYW5k bGU6IG9iamVjdCBoYW5kbGUgd2hpY2ggYWRkcmVzcyB3aWxsIGJlIHRha2VuIHRvIHBhdGNoIHRo ZSBiYgorICogQHJlYWRfZG9tYWluczogZ2VtIGRvbWFpbiBiaXRzIGZvciB0aGUgcmVsb2NhdGlv bgorICogQHdyaXRlX2RvbWFpbjogZ2VtIGRvbWFpbiBiaXQgZm9yIHRoZSByZWxvY2F0aW9uCisg KiBAZGVsdGE6IGRlbHRhIHZhbHVlIHRvIGFkZCB0byBAYnVmZmVyJ3MgZ3B1IGFkZHJlc3MKKyAq IEBvZmZzZXQ6IG9mZnNldCB3aXRoaW4gYmIgdG8gYmUgcGF0Y2hlZAorICogQHByZXN1bWVkX29m ZnNldDogYWRkcmVzcyBvZiB0aGUgb2JqZWN0IGluIGFkZHJlc3Mgc3BhY2UsIGltcG9ydGFudCBm b3IKKyAqIEk5MTVfRVhFQ19OT19SRUxPQyBmbGFnCisgKgorICogRnVuY3Rpb24gYWxsb2NhdGVz IGFkZGl0aW9uYWwgcmVsb2NhdGlvbiBzbG90IGluIHJlbG9jIGFycmF5IGZvciBhIGhhbmRsZS4K KyAqLworc3RhdGljIHZvaWQgaW50ZWxfYmJfYWRkX3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJi LAorCQkJICAgICAgIHVpbnQzMl90IGhhbmRsZSwKKwkJCSAgICAgICB1aW50MzJfdCByZWFkX2Rv bWFpbnMsCisJCQkgICAgICAgdWludDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJICAgICAgIHVpbnQ2 NF90IGRlbHRhLAorCQkJICAgICAgIHVpbnQ2NF90IG9mZnNldCwKKwkJCSAgICAgICB1aW50NjRf dCBwcmVzdW1lZF9vZmZzZXQpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2Vu dHJ5ICpyZWxvY3M7CisJdWludDMyX3QgaTsKKworCWludGVsX2JiX2FkZF9oYW5kbGUoaWJiLCBo YW5kbGUsIHByZXN1bWVkX29mZnNldCk7CisKKwlyZWxvY3MgPSBpYmItPnJlbG9jczsKKwlpZiAo aWJiLT5udW1fcmVsb2NzID09IGliYi0+YWxsb2NhdGVkX3JlbG9jcykgeworCQlpYmItPmFsbG9j YXRlZF9yZWxvY3MgKz0gNDA5NiAvIHNpemVvZigqcmVsb2NzKTsKKwkJcmVsb2NzID0gcmVhbGxv YyhyZWxvY3MsIHNpemVvZigqcmVsb2NzKSAqIGliYi0+YWxsb2NhdGVkX3JlbG9jcyk7CisJCWln dF9hc3NlcnQocmVsb2NzKTsKKwkJaWJiLT5yZWxvY3MgPSByZWxvY3M7CisJfQorCisJaSA9IGli Yi0+bnVtX3JlbG9jcysrOworCW1lbXNldCgmcmVsb2NzW2ldLCAwLCBzaXplb2YoKnJlbG9jcykp OworCXJlbG9jc1tpXS50YXJnZXRfaGFuZGxlID0gaGFuZGxlOworCXJlbG9jc1tpXS5yZWFkX2Rv bWFpbnMgPSByZWFkX2RvbWFpbnM7CisJcmVsb2NzW2ldLndyaXRlX2RvbWFpbiA9IHdyaXRlX2Rv bWFpbjsKKwlyZWxvY3NbaV0uZGVsdGEgPSBkZWx0YTsKKwlyZWxvY3NbaV0ub2Zmc2V0ID0gb2Zm c2V0OworCXJlbG9jc1tpXS5wcmVzdW1lZF9vZmZzZXQgPSBwcmVzdW1lZF9vZmZzZXQ7CisKKwlp Z3RfZGVidWcoImFkZCByZWxvYzogaGFuZGxlOiAldSwgci93OiAweCV4LzB4JXgsIGRlbHRhOiAw eCVseCwgIgorCQkgICJvZmZzZXQ6IDB4JWx4LCBwb2Zmc2V0OiAweCVseFxuIiwKKwkJICBoYW5k bGUsIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluLAorCQkgIGRlbHRhLCBvZmZzZXQsIHByZXN1 bWVkX29mZnNldCk7Cit9CisKKy8qKgorICogaW50ZWxfYmJfZW1pdF9yZWxvYzoKKyAqIEBpYmI6 IHBvaW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBoYW5kbGU6IG9iamVjdCBoYW5kbGUgd2hpY2ggYWRk cmVzcyB3aWxsIGJlIHRha2VuIHRvIHBhdGNoIHRoZSBiYgorICogQHJlYWRfZG9tYWluczogZ2Vt IGRvbWFpbiBiaXRzIGZvciB0aGUgcmVsb2NhdGlvbgorICogQHdyaXRlX2RvbWFpbjogZ2VtIGRv bWFpbiBiaXQgZm9yIHRoZSByZWxvY2F0aW9uCisgKiBAZGVsdGE6IGRlbHRhIHZhbHVlIHRvIGFk ZCB0byBAYnVmZmVyJ3MgZ3B1IGFkZHJlc3MKKyAqIEBwcmVzdW1lZF9vZmZzZXQ6IGFkZHJlc3Mg b2YgdGhlIG9iamVjdCBpbiBhZGRyZXNzIHNwYWNlLCBpbXBvcnRhbnQgZm9yCisgKiBJOTE1X0VY RUNfTk9fUkVMT0MgZmxhZworICoKKyAqIEZ1bmN0aW9uIHByZXBhcmVzIHJlbG9jYXRpb24gKGV4 ZWNvYmogaWYgcmVxdWlyZWQgKyByZWxvYykgYW5kIGVtaXRzCisgKiBvZmZzZXQgaW4gYmIuIEZv ciBJOTE1X0VYRUNfTk9fUkVMT0MgcHJlc3VtZWRfb2Zmc2V0IGlzIGEgaGludCB3ZSBhbHJlYWR5 CisgKiBoYXZlIG9iamVjdCBpbiB2YWxpZCBwbGFjZSBhbmQgcmVsb2NhdGlvbiBzdGVwIGNhbiBi ZSBza2lwcGVkIGluIHRoaXMgY2FzZS4KKyAqCisgKiBOb3RlOiBkZWx0YSBpcyB2YWx1ZSBhZGRl ZCB0byBhZGRyZXNzLCBtb3N0bHkgdXNlZCB3aGVuIHNvbWUgaW5zdHJ1Y3Rpb25zCisgKiByZXF1 aXJlIG1vZGlmeS1iaXQgc2V0IHRvIGFwcGx5IGNoYW5nZS4gV2hpY2ggZGVsdGEgaXMgdmFsaWQg ZGVwZW5kcworICogb24gaW5zdHJ1Y3Rpb24gKHNlZSBpbnN0cnVjdGlvbiBzcGVjaWZpY2F0aW9u KS4KKyAqLwordm9pZCBpbnRlbF9iYl9lbWl0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAor CQkJIHVpbnQzMl90IGhhbmRsZSwKKwkJCSB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkgdWlu dDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJIHVpbnQ2NF90IGRlbHRhLAorCQkJIHVpbnQ2NF90IHBy ZXN1bWVkX29mZnNldCkKK3sKKwlpZ3RfYXNzZXJ0KGliYik7CisKKwlpbnRlbF9iYl9hZGRfcmVs b2MoaWJiLCBoYW5kbGUsIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluLAorCQkJICAgZGVsdGEs IGludGVsX2JiX29mZnNldChpYmIpLCBwcmVzdW1lZF9vZmZzZXQpOworCisJaW50ZWxfYmJfb3V0 KGliYiwgZGVsdGEgKyBwcmVzdW1lZF9vZmZzZXQpOworCWlmIChpYmItPmdlbiA+PSA4KQorCQlp bnRlbF9iYl9vdXQoaWJiLCBwcmVzdW1lZF9vZmZzZXQgPj4gMzIpOworfQorCisvKioKKyAqIGlu dGVsX2JiX29mZnNldF9yZWxvYzoKKyAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBo YW5kbGU6IG9iamVjdCBoYW5kbGUgd2hpY2ggYWRkcmVzcyB3aWxsIGJlIHRha2VuIHRvIHBhdGNo IHRoZSBiYgorICogQHJlYWRfZG9tYWluczogZ2VtIGRvbWFpbiBiaXRzIGZvciB0aGUgcmVsb2Nh dGlvbgorICogQHdyaXRlX2RvbWFpbjogZ2VtIGRvbWFpbiBiaXQgZm9yIHRoZSByZWxvY2F0aW9u CisgKiBAb2Zmc2V0OiBvZmZzZXQgd2l0aGluIGJiIHRvIGJlIHBhdGNoZWQKKyAqIEBwcmVzdW1l ZF9vZmZzZXQ6IGFkZHJlc3Mgb2YgdGhlIG9iamVjdCBpbiBhZGRyZXNzIHNwYWNlLCBpbXBvcnRh bnQgZm9yCisgKiBJOTE1X0VYRUNfTk9fUkVMT0MgZmxhZworICoKKyAqIEZ1bmN0aW9uIHByZXBh cmVzIHJlbG9jYXRpb24gKGV4ZWNvYmogaWYgcmVxdWlyZWQgKyByZWxvYykuIEl0IGl0IHVzZWQK KyAqIGZvciBlZGl0aW5nIGJhdGNoYnVmZmVyIHZpYSBtb2RpZnlpbmcgc3RydWN0dXJlcy4gSXQg bWVhbnMgd2hlbiB3ZSdyZQorICogcHJlcGFyaW5nIGJhdGNoYnVmZmVyIGl0IGlzIG1vcmUgZGVz Y3JpcHRpdmUgdG8gZWRpdCB0aGUgc3RydWN0dXJlCisgKiB0aGFuIGVtaXR0aW5nIGR3b3Jkcy4g QnV0IGl0IHJlcXVpcmUgZm9yIHNvbWUgZmllbGRzIHRvIHBvaW50IHRoZQorICogcmVsb2NhdGlv bi4gRm9yIHRoYXQgY2FzZSBAb2Zmc2V0IGlzIHBhc3NlZCBieSB0aGUgdXNlciBhbmQgaXQgcG9p bnRzCisgKiB0byB0aGUgb2Zmc2V0IGluIGJiIHdoZXJlIHRoZSByZWxvY2F0aW9uIHdpbGwgYmUg YXBwbGllZC4KKyAqLwordm9pZCBpbnRlbF9iYl9vZmZzZXRfcmVsb2Moc3RydWN0IGludGVsX2Ji ICppYmIsCisJCQkgICB1aW50MzJfdCBoYW5kbGUsCisJCQkgICB1aW50MzJfdCByZWFkX2RvbWFp bnMsCisJCQkgICB1aW50MzJfdCB3cml0ZV9kb21haW4sCisJCQkgICB1aW50MzJfdCBvZmZzZXQs CisJCQkgICB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQpCit7CisJaWd0X2Fzc2VydChpYmIpOwor CisJaW50ZWxfYmJfYWRkX3JlbG9jKGliYiwgaGFuZGxlLCByZWFkX2RvbWFpbnMsIHdyaXRlX2Rv bWFpbiwKKwkJCSAgIDAsIG9mZnNldCwgcHJlc3VtZWRfb2Zmc2V0KTsKK30KKworc3RhdGljIHZv aWQgaW50ZWxfYmJfZHVtcF9leGVjYnVmKHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIg KmV4ZWNidWYpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iamVjdHM7 CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxvY3MsICpyZWxvYzsK KwlpbnQgaSwgajsKKworCWlndF9pbmZvKCJleGVjYnVmIGJhdGNoIGxlbjogJXUsIHN0YXJ0IG9m ZnNldDogMHgleCwgIgorCQkgIkRSMTogMHgleCwgRFI0OiAweCV4LCAiCisJCSAibnVtIGNsaXA6 ICV1LCBjbGlwcHRyOiAweCVsbHgsICIKKwkJICJmbGFnczogMHglbGx4LCByc3ZkMTogMHglbGx4 LCByc3ZkMjogMHglbGx4XG4iLAorCQkgZXhlY2J1Zi0+YmF0Y2hfbGVuLCBleGVjYnVmLT5iYXRj aF9zdGFydF9vZmZzZXQsCisJCSBleGVjYnVmLT5EUjEsIGV4ZWNidWYtPkRSNCwKKwkJIGV4ZWNi dWYtPm51bV9jbGlwcmVjdHMsIGV4ZWNidWYtPmNsaXByZWN0c19wdHIsCisJCSBleGVjYnVmLT5m bGFncywgZXhlY2J1Zi0+cnN2ZDEsIGV4ZWNidWYtPnJzdmQyKTsKKworCWlndF9pbmZvKCJleGVj YnVmIGJ1ZmZlcl9jb3VudDogJWRcbiIsIGV4ZWNidWYtPmJ1ZmZlcl9jb3VudCk7CisJZm9yIChp ID0gMDsgaSA8IGV4ZWNidWYtPmJ1ZmZlcl9jb3VudDsgaSsrKSB7CisJCW9iamVjdHMgPSAmKChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqKSBleGVjYnVmLT5idWZmZXJzX3B0cilb aV07CisJCXJlbG9jcyA9IChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKikg b2JqZWN0cy0+cmVsb2NzX3B0cjsKKwkJaWd0X2luZm8oIiBbJWRdIDxoYW5kbGU6ICV1LCByZWxv Y19jb3VudDogJWQsIHJlbG9jX3B0cjogJXAsICIKKwkJCSAiYWxpZ246IDB4JWxseCwgb2Zmc2V0 OiAweCVsbHgsIGZsYWdzOiAweCVsbHgsICIKKwkJCSAicnN2ZDE6IDB4JWxseCwgcnN2ZDI6IDB4 JWxseFxuIiwKKwkJCSBpLCBvYmplY3RzLT5oYW5kbGUsIG9iamVjdHMtPnJlbG9jYXRpb25fY291 bnQsCisJCQkgZnJvbV91c2VyX3BvaW50ZXIob2JqZWN0cy0+cmVsb2NzX3B0ciksCisJCQkgb2Jq ZWN0cy0+YWxpZ25tZW50LAorCQkJIG9iamVjdHMtPm9mZnNldCwgb2JqZWN0cy0+ZmxhZ3MsCisJ CQkgb2JqZWN0cy0+cnN2ZDEsIG9iamVjdHMtPnJzdmQyKTsKKwkJaWYgKG9iamVjdHMtPnJlbG9j YXRpb25fY291bnQpIHsKKwkJCWlndF9pbmZvKCJleGVjYnVmIHJlbG9jczpcbiIpOworCQkJZm9y IChqID0gMDsgaiA8IG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQ7IGorKykgeworCQkJCXJlbG9j ID0gJnJlbG9jc1tqXTsKKwkJCQlpZ3RfaW5mbygiIFslZF0gPHRhcmdldCBoYW5kbGU6ICV1LCAi CisJCQkJCSAib2Zmc2V0OiAlbGx4LCBkZWx0YTogJXgsICIKKwkJCQkJICJwcmVzdW1lZF9vZmZz ZXQ6ICVsbHgsICIKKwkJCQkJICJyZWFkX2RvbWFpbnM6ICV4LCB3cml0ZV9kb21haW46ICV4XG4i LAorCQkJCQkgaiwgcmVsb2MtPnRhcmdldF9oYW5kbGUsCisJCQkJCSByZWxvYy0+b2Zmc2V0LCBy ZWxvYy0+ZGVsdGEsCisJCQkJCSByZWxvYy0+cHJlc3VtZWRfb2Zmc2V0LAorCQkJCQkgcmVsb2Mt PnJlYWRfZG9tYWlucywKKwkJCQkJIHJlbG9jLT53cml0ZV9kb21haW4pOworCQkJfQorCQl9CisJ fQorfQorCisvKioKKyAqIGludGVsX2JiX2V4ZWM6CisgKiBAaWJiOiBwb2ludGVyIHRvIGludGVs X2JiCisgKiBAZW5kX29mZnNldDogb2Zmc2V0IG9mIHRoZSBsYXN0IGluc3RydWN0aW9uIGluIHRo ZSBiYgorICogQGZsYWdzOiBmbGFncyBwYXNzZWQgZGlyZWN0bHkgdG8gZXhlY2J1ZgorICogQHN5 bmM6IGlmIHRydWUgd2FpdCBmb3IgZXhlY2J1ZiBjb21wbGV0aW9uLCBvdGhlcndpc2UgY2FsbGVy IGlzIHJlc3BvbnNpYmxlCisgKiB0byB3YWl0IGZvciBjb21wbGV0aW9uCisgKgorICogTm90ZTog SW4gdGhpcyBzdGVwIGV4ZWNvYmogZm9yIGJiIGlzIGFsbG9jYXRlZCBhbmQgaW5zZXJ0ZWQgdG8g dGhlIG9iamVjdHMKKyAqIGFycmF5LgorKi8KK3ZvaWQgaW50ZWxfYmJfZXhlYyhzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCwKKwkJICAgdWludDY0X3QgZmxhZ3MsIGJv b2wgc3luYykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7CisJ dWludDMyX3QgaTsKKworCWkgPSBpYmItPm51bV9vYmplY3RzOworCisJaWYgKGkgPT0gMCB8fCBp YmItPm9iamVjdHNbaSAtIDFdLmhhbmRsZSAhPSBpYmItPmhhbmRsZSkgeworCQlpYmItPm9iamVj dHMgPSByZWFsbG9jKGliYi0+b2JqZWN0cywgc2l6ZW9mKCppYmItPm9iamVjdHMpICogKGkgKyAx KSk7CisJCWlndF9hc3NlcnQoaWJiLT5vYmplY3RzKTsKKworCQlnZW1fd3JpdGUoaWJiLT5pOTE1 LCBpYmItPmhhbmRsZSwgMCwgaWJiLT5iYXRjaCwgaWJiLT5zaXplKTsKKworCQltZW1zZXQoJmli Yi0+b2JqZWN0c1tpXSwgMCwgc2l6ZW9mKCppYmItPm9iamVjdHMpKTsKKwkJaWJiLT5vYmplY3Rz W2ldLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoaWJiLT5yZWxvY3MpOworCQlpYmItPm9i amVjdHNbaV0ucmVsb2NhdGlvbl9jb3VudCA9IGliYi0+bnVtX3JlbG9jczsKKwkJaWJiLT5vYmpl Y3RzW2ldLmhhbmRsZSA9IGliYi0+aGFuZGxlOworCQlpYmItPm9iamVjdHNbaV0ub2Zmc2V0ID0g aWJiLT5iYXRjaF9vZmZzZXQ7CisJCWliYi0+bnVtX29iamVjdHMrKzsKKwl9CisKKwltZW1zZXQo JmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CisJZXhlY2J1Zi5idWZmZXJzX3B0ciA9ICh1 aW50cHRyX3QpIGliYi0+b2JqZWN0czsKKwlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IGliYi0+bnVt X29iamVjdHM7CisJZXhlY2J1Zi5iYXRjaF9sZW4gPSBlbmRfb2Zmc2V0OworCWV4ZWNidWYuZmxh Z3MgPSBmbGFnczsKKworCWdlbV9leGVjYnVmKGliYi0+aTkxNSwgJmV4ZWNidWYpOworCisJaWYg KHN5bmMgfHwgaWJiLT5kZWJ1ZykKKwkJZ2VtX3N5bmMoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7 CisKKwlpZiAoaWJiLT5kZWJ1ZykKKwkJaW50ZWxfYmJfZHVtcF9leGVjYnVmKCZleGVjYnVmKTsK K30KKworLyoqCisgKiBpbnRlbF9iYl9nZXRfcHJlc3VtZWRfYWRkcmVzczoKKyAqIEBpYmI6IHBv aW50ZXIgdG8gaW50ZWxfYmIKKyAqIEBoYW5kbGU6IG9iamVjdCBoYW5kbGUKKyAqCisgKiBXaGVu IG9iamVjdHMgYWRkcmVzc2VzIGFyZSBwcmV2aW91c2x5IHBpbm5lZCBhbmQgd2UgZG9uJ3Qgd2Fu dCB0byByZWxvY2F0ZQorICogd2UgbmVlZCB0byBhY3F1aXJlIHRoZW0gZnJvbSBwcmV2aW91cyBl eGVjYnVmLiBGdW5jdGlvbiBjaGVja3MgcHJldmlvdXMKKyAqIHJlbG9jYXRpb24gZW50cnkgZm9y IEBoYW5kbGUgYW5kIHJldHVybnMgcHJlc3VtZWRfb2Zmc2V0IGZpZWxkLgorICovCit1aW50NjRf dCBpbnRlbF9iYl9nZXRfcHJlc3VtZWRfb2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50 MzJfdCBoYW5kbGUpCit7CisJdWludDMyX3QgaTsKKworCWlndF9hc3NlcnQoaWJiKTsKKworCWZv ciAoaSA9IDA7IGkgPCBpYmItPm51bV9yZWxvY3M7IGkrKykKKwkJaWYgKGliYi0+cmVsb2NzW2ld LnRhcmdldF9oYW5kbGUgPT0gaGFuZGxlKQorCQkJcmV0dXJuIGliYi0+cmVsb2NzW2ldLnByZXN1 bWVkX29mZnNldDsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNo YnVmZmVyLmggYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaAppbmRleCA0NDJmM2ExOC4uYzg5OWVj OWIgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCisrKyBiL2xpYi9pbnRlbF9i YXRjaGJ1ZmZlci5oCkBAIC03LDYgKzcsNyBAQAogCiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKICNp bmNsdWRlICJpbnRlbF9yZWcuaCIKKyNpbmNsdWRlICJkcm10ZXN0LmgiCiAKICNkZWZpbmUgQkFU Q0hfU1ogNDA5NgogI2RlZmluZSBCQVRDSF9SRVNFUlZFRCAxNgpAQCAtNDIyLDQgKzQyMyw4NSBA QCB0eXBlZGVmIHZvaWQgKCppZ3RfbWVkaWFfc3BpbmZ1bmNfdCkoc3RydWN0IGludGVsX2JhdGNo YnVmZmVyICpiYXRjaCwKIAogaWd0X21lZGlhX3NwaW5mdW5jX3QgaWd0X2dldF9tZWRpYV9zcGlu ZnVuYyhpbnQgZGV2aWQpOwogCisKKy8qCisgKiBCYXRjaGJ1ZmZlciB3aXRob3V0IGxpYmRybSBk ZXBlbmRlbmN5CisgKi8KK3N0cnVjdCBpbnRlbF9iYiB7CisJaW50IGk5MTU7CisJaW50IGdlbjsK Kwlib29sIGRlYnVnOworCXVpbnQzMl90IGRldmlkOworCXVpbnQzMl90IGhhbmRsZTsKKwl1aW50 MzJfdCBzaXplOworCXVpbnQzMl90ICpiYXRjaDsKKwl1aW50MzJfdCAqcHRyOworCisJc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKm9iamVjdHM7CisJdWludDMyX3QgbnVtX29iamVj dHM7CisJdWludDY0X3QgYmF0Y2hfb2Zmc2V0OworCisJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxv Y2F0aW9uX2VudHJ5ICpyZWxvY3M7CisJdWludDMyX3QgbnVtX3JlbG9jczsKKwl1aW50MzJfdCBh bGxvY2F0ZWRfcmVsb2NzOworfTsKKworc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9jcmVhdGUo aW50IGk5MTUsIHVpbnQzMl90IHNpemUpOwordm9pZCBpbnRlbF9iYl9kZXN0cm95KHN0cnVjdCBp bnRlbF9iYiAqaWJiKTsKK3ZvaWQgaW50ZWxfYmJfc2V0X2RlYnVnKHN0cnVjdCBpbnRlbF9iYiAq aWJiLCBib29sIGRlYnVnKTsKKworaW5saW5lIHVpbnQzMl90IGludGVsX2JiX29mZnNldChzdHJ1 Y3QgaW50ZWxfYmIgKmliYikKK3sKKwlyZXR1cm4gKHVpbnQzMl90KSAoKHVpbnQ4X3QgKikgaWJi LT5wdHIgLSAodWludDhfdCAqKSBpYmItPmJhdGNoKTsKK30KKworaW5saW5lIHZvaWQgaW50ZWxf YmJfcHRyX3NldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3Qgb2Zmc2V0KQoreworCWli Yi0+cHRyID0gKHZvaWQgKikgKCh1aW50OF90ICopIGliYi0+YmF0Y2ggKyBvZmZzZXQpOworCisJ aWd0X2Fzc2VydChpbnRlbF9iYl9vZmZzZXQoaWJiKSA8IGliYi0+c2l6ZSk7Cit9CisKK2lubGlu ZSB2b2lkIGludGVsX2JiX3B0cl9hZGQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IG9m ZnNldCkKK3sKKwlpbnRlbF9iYl9wdHJfc2V0KGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYikgKyBv ZmZzZXQpOworfQorCitpbmxpbmUgdm9pZCBpbnRlbF9iYl9wdHJfYWxpZ24oc3RydWN0IGludGVs X2JiICppYmIsIHVpbnQzMl90IGFsaWdubWVudCkKK3sKKwlpbnRlbF9iYl9wdHJfc2V0KGliYiwg QUxJR04oaW50ZWxfYmJfb2Zmc2V0KGliYiksIGFsaWdubWVudCkpOworfQorCitpbmxpbmUgdm9p ZCAqaW50ZWxfYmJfcHRyKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCXJldHVybiAodm9pZCAq KSBpYmItPnB0cjsKK30KKworaW5saW5lIHZvaWQgaW50ZWxfYmJfb3V0KHN0cnVjdCBpbnRlbF9i YiAqaWJiLCB1aW50MzJfdCBkd29yZCkKK3sKKwkqaWJiLT5wdHIgPSBkd29yZDsKKwlpYmItPnB0 cisrOworCisJaWd0X2Fzc2VydChpbnRlbF9iYl9vZmZzZXQoaWJiKSA8IGliYi0+c2l6ZSk7Cit9 CisKK3ZvaWQgaW50ZWxfYmJfZW1pdF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSB1 aW50MzJfdCBoYW5kbGUsCisJCQkgdWludDMyX3QgcmVhZF9kb21haW5zLAorCQkJIHVpbnQzMl90 IHdyaXRlX2RvbWFpbiwKKwkJCSB1aW50NjRfdCBkZWx0YSwKKwkJCSB1aW50NjRfdCBwcmVzdW1l ZF9vZmZzZXQpOworCit2b2lkIGludGVsX2JiX29mZnNldF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIg KmliYiwKKwkJCSAgIHVpbnQzMl90IGhhbmRsZSwKKwkJCSAgIHVpbnQzMl90IHJlYWRfZG9tYWlu cywKKwkJCSAgIHVpbnQzMl90IHdyaXRlX2RvbWFpbiwKKwkJCSAgIHVpbnQzMl90IG9mZnNldCwK KwkJCSAgIHVpbnQ2NF90IHByZXN1bWVkX29mZnNldCk7CisKK3ZvaWQgaW50ZWxfYmJfZXhlYyhz dHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCwKKwkJICAgdWludDY0X3Qg ZmxhZ3MsIGJvb2wgc3luYyk7CisKK3VpbnQ2NF90IGludGVsX2JiX2dldF9wcmVzdW1lZF9vZmZz ZXQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSk7CisKICNlbmRpZgotLSAK Mi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK