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 EB4696E10A for ; Wed, 1 Jul 2020 19:20:53 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Wed, 1 Jul 2020 21:20:42 +0200 Message-Id: <20200701192045.13196-2-zbigniew.kempczynski@intel.com> In-Reply-To: <20200701192045.13196-1-zbigniew.kempczynski@intel.com> References: <20200701192045.13196-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v13 1/4] lib/intel_batchbuffer: Extend 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: QXMgd2UncmUgZ29pbmcgdG93YXJkIHJlbW92aW5nIGxpYmRybSBmcm9tIHJlbmRlcmNvcHkgdGVz dHMgc29tZQphZGRpdGlvbmFsIGNvZGUgaW4gaW50ZWxfYmIgaXMgcmVxdWlyZWQuIFNvIGFkZCBu ZXcgZnVuY3Rpb25zCmFuZCBmaXggbWVtb3J5IGlzc3VlcyBpbiB0aGUgcmVzZXQgcGF0aC4KClNp Z25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5za2lA aW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0t LQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmMgfCA0MDggKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmggfCAgODAgKysrKysrKy0K IDIgZmlsZXMgY2hhbmdlZCwgNDU5IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVmZmVy LmMKaW5kZXggMmE4ODI2MjcuLmE1YWE2YjY2IDEwMDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hi dWZmZXIuYworKysgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwpAQCAtMjYsNiArMjYsNyBAQAog ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwogCiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxw b2xsLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRl IDxzdHJpbmcuaD4KQEAgLTQyLDYgKzQzLDcgQEAKICNpbmNsdWRlICJyZW5kZXJjb3B5LmgiCiAj aW5jbHVkZSAibWVkaWFfZmlsbC5oIgogI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisjaW5j bHVkZSAic3dfc3luYy5oIgogI2luY2x1ZGUgImk5MTUvZ2VtX21tYW4uaCIKICNpbmNsdWRlICJt ZWRpYV9zcGluLmgiCiAjaW5jbHVkZSAiZ3BncHVfZmlsbC5oIgpAQCAtMTA0NSw4ICsxMDQ3LDYg QEAgdm9pZCBpZ3RfYmxpdHRlcl9mYXN0X2NvcHkoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpi YXRjaCwKIAlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaChiYXRjaCk7CiB9CiAKLSN1bmRlZiBDSEVD S19SQU5HRQotCiAvKioKICAqIGlndF9nZXRfcmVuZGVyX2NvcHlmdW5jOgogICogQGRldmlkOiBw Y2kgZGV2aWNlIGlkCkBAIC0xMjExLDcgKzEyMTEsOCBAQCBzdGF0aWMgdm9pZCBfX3JlYWxsb2Nh dGVfb2JqZWN0cyhzdHJ1Y3QgaW50ZWxfYmIgKmliYikKICAqCiAgKiBQb2ludGVyIHRoZSBpbnRl bF9iYiwgYXNzZXJ0cyBvbiBmYWlsdXJlLgogICovCi1zdHJ1Y3QgaW50ZWxfYmIgKmludGVsX2Ji X2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qgc2l6ZSkKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYmIg KgorX19pbnRlbF9iYl9jcmVhdGUoaW50IGk5MTUsIHVpbnQzMl90IHNpemUsIGJvb2wgZG9fcmVs b2NzKQogewogCXN0cnVjdCBpbnRlbF9iYiAqaWJiID0gY2FsbG9jKDEsIHNpemVvZigqaWJiKSk7 CiAJdWludDY0X3QgZ3R0X3NpemU7CkBAIC0xMjIxLDEyICsxMjIyLDE0IEBAIHN0cnVjdCBpbnRl bF9iYiAqaW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBzaXplKQogCWliYi0+aTkx NSA9IGk5MTU7CiAJaWJiLT5kZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSk7CiAJaWJi LT5nZW4gPSBpbnRlbF9nZW4oaWJiLT5kZXZpZCk7CisJaWJiLT5lbmZvcmNlX3JlbG9jcyA9IGRv X3JlbG9jczsKIAlpYmItPmhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwgc2l6ZSk7CiAJaWJiLT5z aXplID0gc2l6ZTsKIAlpYmItPmJhdGNoID0gY2FsbG9jKDEsIHNpemUpOwogCWlndF9hc3NlcnQo aWJiLT5iYXRjaCk7CiAJaWJiLT5wdHIgPSBpYmItPmJhdGNoOwogCWliYi0+cHJuZyA9ICh1aW50 MzJfdCkgdG9fdXNlcl9wb2ludGVyKGliYik7CisJaWJiLT5mZW5jZSA9IC0xOwogCiAJZ3R0X3Np emUgPSBnZW1fYXBlcnR1cmVfc2l6ZShpOTE1KTsKIAlpZiAoIWdlbV91c2VzX2Z1bGxfcHBndHQo aTkxNSkpCkBAIC0xMjM4LDkgKzEyNDEsNDIgQEAgc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9j cmVhdGUoaW50IGk5MTUsIHVpbnQzMl90IHNpemUpCiAJX19yZWFsbG9jYXRlX29iamVjdHMoaWJi KTsKIAlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaWJiLT5oYW5kbGUsIDAsIGZhbHNlKTsKIAor CWliYi0+cmVmY291bnQgPSAxOworCiAJcmV0dXJuIGliYjsKIH0KIAorLyoqCisgKiBpbnRlbF9i Yl9jcmVhdGU6CisgKiBAaTkxNTogZHJtIGZkCisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmF0Y2hi dWZmZXIKKyAqCisgKiBSZXR1cm5zOgorICoKKyAqIFBvaW50ZXIgdGhlIGludGVsX2JiLCBhc3Nl cnRzIG9uIGZhaWx1cmUuCisgKi8KK3N0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlKGlu dCBpOTE1LCB1aW50MzJfdCBzaXplKQoreworCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1 LCBzaXplLCBmYWxzZSk7Cit9CisKKy8qKgorICogaW50ZWxfYmJfY3JlYXRlX3dpdGhfcmVsb2Nz OgorICogQGk5MTU6IGRybSBmZAorICogQHNpemU6IHNpemUgb2YgdGhlIGJhdGNoYnVmZmVyCisg KgorICogRGlzYWJsZSBwYXNzaW5nIG9yIHJhbmRvbWl6aW5nIGFkZHJlc3Nlcy4gVGhpcyB3aWxs IGxlYWQgdG8gcmVsb2NhdGlvbnMKKyAqIHdoZW4gb2JqZWN0cyBhcmUgbm90IHByZXZpb3VzbHkg cGlubmVkLgorICoKKyAqIFJldHVybnM6CisgKgorICogUG9pbnRlciB0aGUgaW50ZWxfYmIsIGFz c2VydHMgb24gZmFpbHVyZS4KKyAqLworc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9jcmVhdGVf d2l0aF9yZWxvY3MoaW50IGk5MTUsIHVpbnQzMl90IHNpemUpCit7CisJcmV0dXJuIF9faW50ZWxf YmJfY3JlYXRlKGk5MTUsIHNpemUsIHRydWUpOworfQorCiAvKgogICogdGRlc3Ryb3koKSBjYWxs cyBmcmVlIGZ1bmN0aW9uIGZvciBlYWNoIG5vZGUsIGJ1dCB3ZSBzcHJlYWQgdHJlZQogICogb24g b2JqZWN0cyBhcnJheSwgc28gZG8gbm90aGluZy4KQEAgLTEyNTAsMjQgKzEyODYsMzIgQEAgc3Rh dGljIHZvaWQgX19kb19ub3RoaW5nKHZvaWQgKm5vZGUpCiAJKHZvaWQpIG5vZGU7CiB9CiAKLXN0 YXRpYyB2b2lkIF9faW50ZWxfYmJfZGVzdHJveV9vYmplY3RzKHN0cnVjdCBpbnRlbF9iYiAqaWJi KQorc3RhdGljIHZvaWQgX19pbnRlbF9iYl9kZXN0cm95X3JlbG9jYXRpb25zKHN0cnVjdCBpbnRl bF9iYiAqaWJiKQogewogCXVpbnQzMl90IGk7CiAKIAkvKiBGcmVlIHJlbG9jYXRpb25zICovCi0J Zm9yIChpID0gMDsgaSA8IGliYi0+bnVtX29iamVjdHM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwg aWJiLT5udW1fb2JqZWN0czsgaSsrKSB7CiAJCWZyZWUoZnJvbV91c2VyX3BvaW50ZXIoaWJiLT5v YmplY3RzW2ldLnJlbG9jc19wdHIpKTsKKwkJaWJiLT5vYmplY3RzW2ldLnJlbG9jc19wdHIgPSB0 b191c2VyX3BvaW50ZXIoTlVMTCk7CisJCWliYi0+b2JqZWN0c1tpXS5yZWxvY2F0aW9uX2NvdW50 ID0gMDsKKwl9CiAKLQlmcmVlKGliYi0+b2JqZWN0cyk7Ci0JdGRlc3Ryb3koaWJiLT5yb290LCBf X2RvX25vdGhpbmcpOworCWliYi0+cmVsb2NzID0gTlVMTDsKKwlpYmItPm51bV9yZWxvY3MgPSAw OworCWliYi0+YWxsb2NhdGVkX3JlbG9jcyA9IDA7Cit9CiAKK3N0YXRpYyB2b2lkIF9faW50ZWxf YmJfZGVzdHJveV9vYmplY3RzKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCWZyZWUoaWJiLT5v YmplY3RzKTsKIAlpYmItPm9iamVjdHMgPSBOVUxMOworCisJdGRlc3Ryb3koaWJiLT5yb290LCBf X2RvX25vdGhpbmcpOwogCWliYi0+cm9vdCA9IE5VTEw7CisKIAlpYmItPm51bV9vYmplY3RzID0g MDsKLQlpYmItPm51bV9yZWxvY3MgPSAwOwogCWliYi0+YWxsb2NhdGVkX29iamVjdHMgPSAwOwot CWliYi0+YWxsb2NhdGVkX3JlbG9jcyA9IDA7Ci0JaWJiLT5wdHIgPSBpYmItPmJhdGNoOwogfQog CiAvKioKQEAgLTEyODAsOSArMTMyNCwxNiBAQCB2b2lkIGludGVsX2JiX2Rlc3Ryb3koc3RydWN0 IGludGVsX2JiICppYmIpCiB7CiAJaWd0X2Fzc2VydChpYmIpOwogCisJaWJiLT5yZWZjb3VudC0t OworCWlndF9hc3NlcnRfZihpYmItPnJlZmNvdW50ID09IDAsICJUcnlpbmcgdG8gZGVzdHJveSBy ZWZlcmVuY2VkIGJiISIpOworCisJX19pbnRlbF9iYl9kZXN0cm95X3JlbG9jYXRpb25zKGliYik7 CiAJX19pbnRlbF9iYl9kZXN0cm95X29iamVjdHMoaWJiKTsKIAlnZW1fY2xvc2UoaWJiLT5pOTE1 LCBpYmItPmhhbmRsZSk7CiAKKwlpZiAoaWJiLT5mZW5jZSA+PSAwKQorCQljbG9zZShpYmItPmZl bmNlKTsKKwogCWZyZWUoaWJiKTsKIH0KIApAQCAtMTI5MSwxMCArMTM0MiwxOSBAQCB2b2lkIGlu dGVsX2JiX2Rlc3Ryb3koc3RydWN0IGludGVsX2JiICppYmIpCiAgKiBAaWJiOiBwb2ludGVyIHRv IGludGVsX2JiCiAgKiBAcHVyZ2Vfb2JqZWN0c19jYWNoZTogaWYgdHJ1ZSBkZXN0cm95IGludGVy bmFsIGV4ZWNvYmogYW5kIHJlbG9jcyArIGNhY2hlCiAgKgotICogUmVjcmVhdGUgYmF0Y2ggYm8u CisgKiBSZWNyZWF0ZSBiYXRjaCBibyB3aGVuIHRoZXJlJ3Mgbm8gYWRkaXRpb25hbCByZWZlcmVu Y2UuCiAqLwogdm9pZCBpbnRlbF9iYl9yZXNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBw dXJnZV9vYmplY3RzX2NhY2hlKQogeworCWlmIChwdXJnZV9vYmplY3RzX2NhY2hlICYmIGliYi0+ cmVmY291bnQgPiAxKQorCQlpZ3Rfd2FybigiQ2Fubm90IHB1cmdlIG9iamVjdHMgY2FjaGUgb24g YmIsIHJlZmNvdW50ID4gMSEiKTsKKworCS8qIFNvbWVvbmUga2VlcHMgcmVmZXJlbmNlLCBqdXN0 IGV4aXQgKi8KKwlpZiAoaWJiLT5yZWZjb3VudCA+IDEpCisJCXJldHVybjsKKworCV9faW50ZWxf YmJfZGVzdHJveV9yZWxvY2F0aW9ucyhpYmIpOworCiAJaWYgKHB1cmdlX29iamVjdHNfY2FjaGUp IHsKIAkJX19pbnRlbF9iYl9kZXN0cm95X29iamVjdHMoaWJiKTsKIAkJX19yZWFsbG9jYXRlX29i amVjdHMoaWJiKTsKQEAgLTEzMDUsNiArMTM2NSw3MiBAQCB2b2lkIGludGVsX2JiX3Jlc2V0KHN0 cnVjdCBpbnRlbF9iYiAqaWJiLCBib29sIHB1cmdlX29iamVjdHNfY2FjaGUpCiAKIAlpbnRlbF9i Yl9hZGRfb2JqZWN0KGliYiwgaWJiLT5oYW5kbGUsIDAsIGZhbHNlKTsKIAlpYmItPnB0ciA9IGli Yi0+YmF0Y2g7CisJbWVtc2V0KGliYi0+YmF0Y2gsIDAsIGliYi0+c2l6ZSk7Cit9CisKKy8qCisg KiBpbnRlbF9iYl9zeW5jOgorICogQGliYjogcG9pbnRlciB0byBpbnRlbF9iYgorICoKKyAqIFdh aXRzIGZvciBiYiBjb21wbGV0aW9uLiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIGVy cm5vLgorICovCitpbnQgaW50ZWxfYmJfc3luYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK3sKKwlp bnQgcmV0OworCisJaWYgKGliYi0+ZmVuY2UgPCAwKQorCQlyZXR1cm4gMDsKKworCXJldCA9IHN5 bmNfZmVuY2Vfd2FpdChpYmItPmZlbmNlLCAtMSk7CisJaWYgKHJldCA9PSAwKSB7CisJCWNsb3Nl KGliYi0+ZmVuY2UpOworCQlpYmItPmZlbmNlID0gLTE7CisJfQorCisJcmV0dXJuIHJldDsKK30K KworLyoKKyAqIGludGVsX2JiX3ByaW50OgorICogQGliYjogcG9pbnRlciB0byBpbnRlbF9iYgor ICoKKyAqIFByaW50cyBiYXRjaCB0byBzdGRvdXQuCisgKi8KK3ZvaWQgaW50ZWxfYmJfcHJpbnQo c3RydWN0IGludGVsX2JiICppYmIpCit7CisJaWd0X2luZm8oImRybSBmZDogJWQsIGdlbjogJWQs IGRldmlkOiAldSwgZGVidWc6ICVkXG4iLAorCQkgaWJiLT5pOTE1LCBpYmItPmdlbiwgaWJiLT5k ZXZpZCwgaWJiLT5kZWJ1Zyk7CisJaWd0X2luZm8oImhhbmRsZTogJXUsIHNpemU6ICV1LCBiYXRj aDogJXAsIHB0cjogJXBcbiIsCisJCSBpYmItPmhhbmRsZSwgaWJiLT5zaXplLCBpYmItPmJhdGNo LCBpYmItPnB0cik7CisJaWd0X2luZm8oInBybmc6ICV1LCBndHRfc2l6ZTogJSIgUFJJdTY0ICIs IHN1cHBvcnRzIDQ4Yml0OiAlZFxuIiwKKwkJIGliYi0+cHJuZywgaWJiLT5ndHRfc2l6ZSwgaWJi LT5zdXBwb3J0c180OGJfYWRkcmVzcyk7CisJaWd0X2luZm8oImN0eDogJXVcbiIsIGliYi0+Y3R4 KTsKKwlpZ3RfaW5mbygicm9vdDogJXBcbiIsIGliYi0+cm9vdCk7CisJaWd0X2luZm8oIm9iamVj dHM6ICVwLCBudW1fb2JqZWN0czogJXUsIGFsbG9jYXRlZCBvYmo6ICV1XG4iLAorCQkgaWJiLT5v YmplY3RzLCBpYmItPm51bV9vYmplY3RzLCBpYmItPmFsbG9jYXRlZF9vYmplY3RzKTsKKwlpZ3Rf aW5mbygicmVsb2NzOiAlcCwgbnVtX3JlbG9jczogJXUsIGFsbG9jYXRlZF9yZWxvY3M6ICV1XG4t LS0tXG4iLAorCQkgaWJiLT5yZWxvY3MsIGliYi0+bnVtX3JlbG9jcywgaWJiLT5hbGxvY2F0ZWRf cmVsb2NzKTsKK30KKworLyoKKyAqIGludGVsX2JiX2R1bXA6CisgKiBAaWJiOiBwb2ludGVyIHRv IGludGVsX2JiCisgKiBAZmlsZW5hbWU6IG5hbWUgdG8gd2hpY2ggd3JpdGUgYmIKKyAqCisgKiBE dW1wIGJhdGNoIGJvIHRvIGZpbGUuCisgKi8KK3ZvaWQgaW50ZWxfYmJfZHVtcChzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisJRklMRSAqb3V0OworCXZvaWQg KnB0cjsKKworCXB0ciA9IGdlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQoaWJiLT5pOTE1LCBpYmIt PmhhbmRsZSwgMCwgaWJiLT5zaXplLAorCQkJCQlQUk9UX1JFQUQpOworCW91dCA9IGZvcGVuKGZp bGVuYW1lLCAid2IiKTsKKwlpZ3RfYXNzZXJ0KG91dCk7CisJZndyaXRlKHB0ciwgaWJiLT5zaXpl LCAxLCBvdXQpOworCWZjbG9zZShvdXQpOworCW11bm1hcChwdHIsIGliYi0+c2l6ZSk7CiB9CiAK IC8qKgpAQCAtMTM2MSw3ICsxNDg3LDkgQEAgaW50ZWxfYmJfYWRkX29iamVjdChzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLAogCQlvYmplY3QgPSAqZm91bmQ7CiAKIAkvKiBB c3NpZ24gYWRkcmVzcyBvbmNlICovCi0JaWYgKG9iamVjdC0+b2Zmc2V0ID09IDApIHsKKwlpZiAo aWJiLT5lbmZvcmNlX3JlbG9jcykKKwkJb2JqZWN0LT5vZmZzZXQgPSAwOworCWVsc2UgaWYgKG9i amVjdC0+b2Zmc2V0ID09IDApIHsKIAkJaWYgKG9mZnNldCkgewogCQkJb2JqZWN0LT5vZmZzZXQg PSBvZmZzZXQ7CiAJCX0gZWxzZSB7CkBAIC0xMzgyLDYgKzE1MTAsMjMgQEAgaW50ZWxfYmJfYWRk X29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLAogCXJldHVybiBv YmplY3Q7CiB9CiAKK3N0YXRpYyBib29sIGludGVsX2JiX29iamVjdF9zZXRfZmVuY2Uoc3RydWN0 IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2V4ZWNfb2JqZWN0MiBvYmplY3QgPSB7IC5oYW5kbGUgPSBoYW5kbGUgfTsKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqKmZvdW5kOworCisJZm91bmQgPSB0ZmluZCgodm9pZCAq KSAmb2JqZWN0LCAmaWJiLT5yb290LCBfX2NvbXBhcmVfb2JqZWN0cyk7CisJaWYgKCFmb3VuZCkg eworCQlpZ3Rfd2FybigiVHJ5aW5nIHRvIHNldCBmZW5jZSBvbiBub3QgZm91bmQgaGFuZGxlOiAl dVxuIiwKKwkJCSBoYW5kbGUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJKCpmb3VuZCktPmZs YWdzIHw9IEVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOworCisJcmV0dXJuIHRydWU7Cit9CisKIC8q CiAgKiBpbnRlbF9iYl9hZGRfcmVsb2M6CiAgKiBAaWJiOiBwb2ludGVyIHRvIGludGVsX2JiCkBA IC0xNDMxLDkgKzE1NzYsMTAgQEAgc3RhdGljIHVpbnQ2NF90IGludGVsX2JiX2FkZF9yZWxvYyhz dHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAlpZ3RfZGVidWcoImFkZCByZWxvYzogaGFuZGxlOiAldSwg ci93OiAweCV4LzB4JXgsICIKIAkJICAiZGVsdGE6IDB4JSIgUFJJeDY0ICIsICIKIAkJICAib2Zm c2V0OiAweCUiIFBSSXg2NCAiLCAiCi0JCSAgInBvZmZzZXQ6IDB4JSIgUFJJeDY0ICJcbiIsCisJ CSAgInBvZmZzZXQ6ICVwXG4iLAogCQkgIGhhbmRsZSwgcmVhZF9kb21haW5zLCB3cml0ZV9kb21h aW4sCi0JCSAgZGVsdGEsIG9mZnNldCwgcHJlc3VtZWRfb2Zmc2V0KTsKKwkJICBkZWx0YSwgb2Zm c2V0LAorCQkgIGZyb21fdXNlcl9wb2ludGVyKHJlbG9jc1tpXS5wcmVzdW1lZF9vZmZzZXQpKTsK IAogCXJldHVybiBvYmplY3QtPm9mZnNldDsKIH0KQEAgLTE0NzksNiArMTYyNSwyMyBAQCB1aW50 NjRfdCBpbnRlbF9iYl9lbWl0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCXJldHVybiBh ZGRyZXNzOwogfQogCit1aW50NjRfdCBpbnRlbF9iYl9lbWl0X3JlbG9jX2ZlbmNlZChzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwKKwkJCQkgICAgdWludDMyX3QgaGFuZGxlLAorCQkJCSAgICB1aW50MzJf dCByZWFkX2RvbWFpbnMsCisJCQkJICAgIHVpbnQzMl90IHdyaXRlX2RvbWFpbiwKKwkJCQkgICAg dWludDY0X3QgZGVsdGEsCisJCQkJICAgIHVpbnQ2NF90IHByZXN1bWVkX29mZnNldCkKK3sKKwl1 aW50NjRfdCBhZGRyZXNzOworCisJYWRkcmVzcyA9IGludGVsX2JiX2VtaXRfcmVsb2MoaWJiLCBo YW5kbGUsIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluLAorCQkJCSAgICAgIGRlbHRhLCBwcmVz dW1lZF9vZmZzZXQpOworCisJaW50ZWxfYmJfb2JqZWN0X3NldF9mZW5jZShpYmIsIGhhbmRsZSk7 CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKwogLyoqCiAgKiBpbnRlbF9iYl9vZmZzZXRfcmVsb2M6 CiAgKiBAaWJiOiBwb2ludGVyIHRvIGludGVsX2JiCkBAIC0xNTA5LDcgKzE2NzIsMjIgQEAgdWlu dDY0X3QgaW50ZWxfYmJfb2Zmc2V0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQkJCSAg MCwgb2Zmc2V0LCBwcmVzdW1lZF9vZmZzZXQpOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9iYl9k dW1wX2V4ZWNidWYoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZXhlY2J1ZikKK3Vp bnQ2NF90IGludGVsX2JiX29mZnNldF9yZWxvY193aXRoX2RlbHRhKHN0cnVjdCBpbnRlbF9iYiAq aWJiLAorCQkJCQkgIHVpbnQzMl90IGhhbmRsZSwKKwkJCQkJICB1aW50MzJfdCByZWFkX2RvbWFp bnMsCisJCQkJCSAgdWludDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJCQkgIHVpbnQzMl90IGRlbHRh LAorCQkJCQkgIHVpbnQzMl90IG9mZnNldCwKKwkJCQkJICB1aW50NjRfdCBwcmVzdW1lZF9vZmZz ZXQpCit7CisJaWd0X2Fzc2VydChpYmIpOworCisJcmV0dXJuIGludGVsX2JiX2FkZF9yZWxvYyhp YmIsIGhhbmRsZSwgcmVhZF9kb21haW5zLCB3cml0ZV9kb21haW4sCisJCQkJICBkZWx0YSwgb2Zm c2V0LCBwcmVzdW1lZF9vZmZzZXQpOworfQorCitzdGF0aWMgdm9pZCBpbnRlbF9iYl9kdW1wX2V4 ZWNidWYoc3RydWN0IGludGVsX2JiICppYmIsCisJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIyICpleGVjYnVmKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3Qy ICpvYmplY3RzOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2Nz LCAqcmVsb2M7CkBAIC0xNTM1LDcgKzE3MTMsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iYl9kdW1w X2V4ZWNidWYoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZXhlY2J1ZikKIAkJCSBp LCBvYmplY3RzLT5oYW5kbGUsIG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQsCiAJCQkgcmVsb2Nz LAogCQkJIG9iamVjdHMtPmFsaWdubWVudCwKLQkJCSBvYmplY3RzLT5vZmZzZXQsIG9iamVjdHMt PmZsYWdzLAorCQkJIG9iamVjdHMtPm9mZnNldCAmIChpYmItPmd0dF9zaXplIC0gMSksCisJCQkg b2JqZWN0cy0+ZmxhZ3MsCiAJCQkgb2JqZWN0cy0+cnN2ZDEsIG9iamVjdHMtPnJzdmQyKTsKIAkJ aWYgKG9iamVjdHMtPnJlbG9jYXRpb25fY291bnQpIHsKIAkJCWlndF9pbmZvKCJcdGV4ZWNidWYg cmVsb2NzOlxuIik7CkBAIC0xNTQ4LDcgKzE3MjcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iYl9k dW1wX2V4ZWNidWYoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZXhlY2J1ZikKIAkJ CQkJICJ3cml0ZV9kb21haW46IDB4JXhcbiIsCiAJCQkJCSBqLCByZWxvYy0+dGFyZ2V0X2hhbmRs ZSwKIAkJCQkJIHJlbG9jLT5vZmZzZXQsIHJlbG9jLT5kZWx0YSwKLQkJCQkJIHJlbG9jLT5wcmVz dW1lZF9vZmZzZXQsCisJCQkJCSByZWxvYy0+cHJlc3VtZWRfb2Zmc2V0ICYgKGliYi0+Z3R0X3Np emUgLSAxKSwKIAkJCQkJIHJlbG9jLT5yZWFkX2RvbWFpbnMsCiAJCQkJCSByZWxvYy0+d3JpdGVf ZG9tYWluKTsKIAkJCX0KQEAgLTE1OTMsNyArMTc3Miw3IEBAIGludCBfX2ludGVsX2JiX2V4ZWMo c3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGVuZF9vZmZzZXQsCiAJCSAgICB1aW50MzJf dCBjdHgsIHVpbnQ2NF90IGZsYWdzLCBib29sIHN5bmMpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dl bV9leGVjYnVmZmVyMiBleGVjYnVmOwotCWludCByZXQ7CisJaW50IHJldCwgZmVuY2UsIG5ld19m ZW5jZTsKIAogCWliYi0+b2JqZWN0c1swXS5yZWxvY3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKGli Yi0+cmVsb2NzKTsKIAlpYmItPm9iamVjdHNbMF0ucmVsb2NhdGlvbl9jb3VudCA9IGliYi0+bnVt X3JlbG9jczsKQEAgLTE2MDYsMTcgKzE3ODUsMzIgQEAgaW50IF9faW50ZWxfYmJfZXhlYyhzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCwKIAlleGVjYnVmLmJ1ZmZlcl9j b3VudCA9IGliYi0+bnVtX29iamVjdHM7CiAJZXhlY2J1Zi5iYXRjaF9sZW4gPSBlbmRfb2Zmc2V0 OwogCWV4ZWNidWYucnN2ZDEgPSBpYmItPmN0eCA9IGN0eDsKLQlleGVjYnVmLmZsYWdzID0gZmxh Z3MgfCBJOTE1X0VYRUNfQkFUQ0hfRklSU1Q7CisJZXhlY2J1Zi5mbGFncyA9IGZsYWdzIHwgSTkx NV9FWEVDX0JBVENIX0ZJUlNUIHwgSTkxNV9FWEVDX0ZFTkNFX09VVDsKKwlleGVjYnVmLnJzdmQy ID0gMDsKIAotCXJldCA9IF9fZ2VtX2V4ZWNidWYoaWJiLT5pOTE1LCAmZXhlY2J1Zik7Ci0JaWYg KHJldCkKKwlyZXQgPSBfX2dlbV9leGVjYnVmX3dyKGliYi0+aTkxNSwgJmV4ZWNidWYpOworCWlm IChyZXQpIHsKKwkJaW50ZWxfYmJfZHVtcF9leGVjYnVmKGliYiwgJmV4ZWNidWYpOwogCQlyZXR1 cm4gcmV0OworCX0KKworCS8qIFNhdmUvbWVyZ2UgZmVuY2VzICovCisJZmVuY2UgPSBleGVjYnVm LnJzdmQyID4+IDMyOworCisJaWYgKGliYi0+ZmVuY2UgPCAwKSB7CisJCWliYi0+ZmVuY2UgPSBm ZW5jZTsKKwl9IGVsc2UgeworCQluZXdfZmVuY2UgPSBzeW5jX2ZlbmNlX21lcmdlKGliYi0+ZmVu Y2UsIGZlbmNlKTsKKwkJY2xvc2UoaWJiLT5mZW5jZSk7CisJCWNsb3NlKGZlbmNlKTsKKwkJaWJi LT5mZW5jZSA9IG5ld19mZW5jZTsKKwl9CiAKIAlpZiAoc3luYyB8fCBpYmItPmRlYnVnKQotCQln ZW1fc3luYyhpYmItPmk5MTUsIGliYi0+aGFuZGxlKTsKKwkJaWd0X2Fzc2VydChpbnRlbF9iYl9z eW5jKGliYikgPT0gMCk7CiAKIAlpZiAoaWJiLT5kZWJ1ZykgewotCQlpbnRlbF9iYl9kdW1wX2V4 ZWNidWYoJmV4ZWNidWYpOworCQlpbnRlbF9iYl9kdW1wX2V4ZWNidWYoaWJiLCAmZXhlY2J1Zik7 CiAJCWlmIChpbnRlbF9iYl9kZWJ1Z190cmVlKSB7CiAJCQlpZ3RfaW5mbygiXG5UcmVlOlxuIik7 CiAJCQl0d2FsayhpYmItPnJvb3QsIHByaW50X25vZGUpOwpAQCAtMTY3OSw3ICsxODczLDcgQEAg dWludDY0X3QgaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoc3RydWN0IGludGVsX2JiICppYmIs IHVpbnQzMl90IGhhbmRsZSkKIAlpZiAoIWZvdW5kKQogCQlyZXR1cm4gMDsKIAotCXJldHVybiAo KmZvdW5kKS0+b2Zmc2V0OworCXJldHVybiAoKmZvdW5kKS0+b2Zmc2V0ICYgKGliYi0+Z3R0X3Np emUgLSAxKTsKIH0KIAogLyoqCkBAIC0xNzA2LDggKzE5MDAsMTcyIEBAIGJvb2wgaW50ZWxfYmJf b2JqZWN0X29mZnNldF90b19idWYoc3RydWN0IGludGVsX2JiICppYmIsIHN0cnVjdCBpbnRlbF9i dWYgKmJ1ZikKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCWJ1Zi0+YWRkci5vZmZzZXQgPSAoKmZv dW5kKS0+b2Zmc2V0OworCWJ1Zi0+YWRkci5vZmZzZXQgPSAoKmZvdW5kKS0+b2Zmc2V0ICYgKGli Yi0+Z3R0X3NpemUgLSAxKTsKIAlidWYtPmFkZHIuY3R4ID0gaWJiLT5jdHg7CiAKIAlyZXR1cm4g dHJ1ZTsKIH0KKworLyoKKyAqIGludGVsX2JiX2VtaXRfYmJlOgorICogQGliYjogYmF0Y2hidWZm ZXIKKyAqCisgKiBPdXRwdXRzIE1JX0JBVENIX0JVRkZFUl9FTkQgYW5kIGVuc3VyZXMgYmF0Y2gg aXMgcHJvcGVybHkgYWxpZ25lZC4KKyAqLwordWludDMyX3QgaW50ZWxfYmJfZW1pdF9iYmUoc3Ry dWN0IGludGVsX2JiICppYmIpCit7CisJLyogTWFyayB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICov CisJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7CisJaW50ZWxfYmJfcHRy X2FsaWduKGliYiwgOCk7CisKKwlyZXR1cm4gaW50ZWxfYmJfb2Zmc2V0KGliYik7Cit9CisKKy8q CisgKiBpbnRlbF9iYl9mbHVzaF93aXRoX2NvbnRleHRfcmluZzoKKyAqIEBpYmI6IGJhdGNoYnVm ZmVyCisgKiBAY3R4OiBjb250ZXh0IGlkCisgKiBAcmluZzogcmluZworICoKKyAqIFN1Ym1pdHMg dGhlIGJhdGNoIGZvciBleGVjdXRpb24gb24gdGhlIEByaW5nIGVuZ2luZSB3aXRoIHRoZSBzdXBw bGllZAorICogaGFyZHdhcmUgY29udGV4dCBAY3R4LgorICovCitzdGF0aWMgdm9pZCBpbnRlbF9i Yl9mbHVzaF93aXRoX2NvbnRleHRfcmluZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkJICAg ICB1aW50MzJfdCBjdHgsIHVpbnQzMl90IHJpbmcpCit7CisJaW50ZWxfYmJfZXhlY193aXRoX2Nv bnRleHQoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwgY3R4LAorCQkJCSAgIHJpbmcgfCBJOTE1 X0VYRUNfTk9fUkVMT0MsCisJCQkJICAgZmFsc2UpOworCWludGVsX2JiX3Jlc2V0KGliYiwgZmFs c2UpOworfQorCit2b2lkIGludGVsX2JiX2ZsdXNoX3JlbmRlcihzdHJ1Y3QgaW50ZWxfYmIgKmli YikKK3sKKwl1aW50MzJfdCByaW5nID0gSTkxNV9FWEVDX1JFTkRFUjsKKworCWludGVsX2JiX2Zs dXNoX3dpdGhfY29udGV4dF9yaW5nKGliYiwgaWJiLT5jdHgsIHJpbmcpOworfQorCit2b2lkIGlu dGVsX2JiX2ZsdXNoX2JsaXQoc3RydWN0IGludGVsX2JiICppYmIpCit7CisJdWludDMyX3Qgcmlu ZyA9IEk5MTVfRVhFQ19ERUZBVUxUOworCisJaWYgKEhBU19CTFRfUklORyhpYmItPmRldmlkKSkK KwkJcmluZyA9IEk5MTVfRVhFQ19CTFQ7CisKKwlpbnRlbF9iYl9mbHVzaF93aXRoX2NvbnRleHRf cmluZyhpYmIsIGliYi0+Y3R4LCByaW5nKTsKK30KKwordWludDMyX3QgaW50ZWxfYmJfY29weV9k YXRhKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJICAgIGNvbnN0IHZvaWQgKmRhdGEsIHVuc2ln bmVkIGludCBieXRlcywKKwkJCSAgICB1aW50MzJfdCBhbGlnbikKK3sKKwl1aW50MzJfdCAqc3Vi ZGF0YSwgb2Zmc2V0OworCisJaWd0X2Fzc2VydCgoYnl0ZXMgJiAzKSA9PSAwKTsKKworCWludGVs X2JiX3B0cl9hbGlnbihpYmIsIGFsaWduKTsKKwlvZmZzZXQgPSBpbnRlbF9iYl9vZmZzZXQoaWJi KTsKKwlpZ3RfYXNzZXJ0KG9mZnNldCArIGJ5dGVzIDwgaWJiLT5zaXplKTsKKworCXN1YmRhdGEg PSBpbnRlbF9iYl9wdHIoaWJiKTsKKwltZW1jcHkoc3ViZGF0YSwgZGF0YSwgYnl0ZXMpOworCWlu dGVsX2JiX3B0cl9hZGQoaWJiLCBieXRlcyk7CisKKwlyZXR1cm4gb2Zmc2V0OworfQorCit2b2lk IGludGVsX2JiX2JsaXRfc3RhcnQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGZsYWdz KQoreworCWludGVsX2JiX291dChpYmIsIFhZX1NSQ19DT1BZX0JMVF9DTUQgfAorCQkgICAgIFhZ X1NSQ19DT1BZX0JMVF9XUklURV9BTFBIQSB8CisJCSAgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRF X1JHQiB8CisJCSAgICAgKGZsYWdzKSB8CisJCSAgICAgKDYgKyAyKihpYmItPmdlbiA+PSA4KSkp OworfQorCit2b2lkIGludGVsX2JiX2VtaXRfYmx0X2NvcHkoc3RydWN0IGludGVsX2JiICppYmIs CisJCQkgICAgc3RydWN0IGludGVsX2J1ZiAqc3JjLAorCQkJICAgIGludCBzcmNfeDEsIGludCBz cmNfeTEsIGludCBzcmNfcGl0Y2gsCisJCQkgICAgc3RydWN0IGludGVsX2J1ZiAqZHN0LAorCQkJ ICAgIGludCBkc3RfeDEsIGludCBkc3RfeTEsIGludCBkc3RfcGl0Y2gsCisJCQkgICAgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwKQoreworCWNvbnN0IGludCBnZW4gPSBpYmItPmdlbjsK Kwl1aW50MzJfdCBjbWRfYml0cyA9IDA7CisJdWludDMyX3QgYnIxM19iaXRzOworCisJaWd0X2Fz c2VydChicHAqKHNyY194MSArIHdpZHRoKSA8PSA4KnNyY19waXRjaCk7CisJaWd0X2Fzc2VydChi cHAqKGRzdF94MSArIHdpZHRoKSA8PSA4KmRzdF9waXRjaCk7CisJaWd0X2Fzc2VydChzcmNfcGl0 Y2ggKiAoc3JjX3kxICsgaGVpZ2h0KSA8PSBzcmMtPnNpemUpOworCWlndF9hc3NlcnQoZHN0X3Bp dGNoICogKGRzdF95MSArIGhlaWdodCkgPD0gZHN0LT5zaXplKTsKKworCWlmIChnZW4gPj0gNCAm JiBzcmMtPnRpbGluZyAhPSBJOTE1X1RJTElOR19OT05FKSB7CisJCXNyY19waXRjaCAvPSA0Owor CQljbWRfYml0cyB8PSBYWV9TUkNfQ09QWV9CTFRfU1JDX1RJTEVEOworCX0KKworCWlmIChnZW4g Pj0gNCAmJiBkc3QtPnRpbGluZyAhPSBJOTE1X1RJTElOR19OT05FKSB7CisJCWRzdF9waXRjaCAv PSA0OworCQljbWRfYml0cyB8PSBYWV9TUkNfQ09QWV9CTFRfRFNUX1RJTEVEOworCX0KKworCUNI RUNLX1JBTkdFKHNyY194MSk7IENIRUNLX1JBTkdFKHNyY195MSk7CisJQ0hFQ0tfUkFOR0UoZHN0 X3gxKTsgQ0hFQ0tfUkFOR0UoZHN0X3kxKTsKKwlDSEVDS19SQU5HRSh3aWR0aCk7IENIRUNLX1JB TkdFKGhlaWdodCk7CisJQ0hFQ0tfUkFOR0Uoc3JjX3gxICsgd2lkdGgpOyBDSEVDS19SQU5HRShz cmNfeTEgKyBoZWlnaHQpOworCUNIRUNLX1JBTkdFKGRzdF94MSArIHdpZHRoKTsgQ0hFQ0tfUkFO R0UoZHN0X3kxICsgaGVpZ2h0KTsKKwlDSEVDS19SQU5HRShzcmNfcGl0Y2gpOyBDSEVDS19SQU5H RShkc3RfcGl0Y2gpOworCisJYnIxM19iaXRzID0gMDsKKwlzd2l0Y2ggKGJwcCkgeworCWNhc2Ug ODoKKwkJYnJlYWs7CisJY2FzZSAxNjoJCS8qIHN1cHBvcnRpbmcgb25seSBSR0I1NjUsIG5vdCBB UkdCMTU1NSAqLworCQlicjEzX2JpdHMgfD0gMSA8PCAyNDsKKwkJYnJlYWs7CisJY2FzZSAzMjoK KwkJYnIxM19iaXRzIHw9IDMgPDwgMjQ7CisJCWNtZF9iaXRzIHw9IFhZX1NSQ19DT1BZX0JMVF9X UklURV9BTFBIQSB8CisJCQkgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX1JHQjsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJaWd0X2ZhaWwoSUdUX0VYSVRfRkFJTFVSRSk7CisJfQorCisJaW50ZWxf YmJfYmxpdF9zdGFydChpYmIsIGNtZF9iaXRzKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAoYnIxM19i aXRzKSB8CisJCSAgKDB4Y2MgPDwgMTYpIHwgLyogY29weSBST1AgKi8KKwkJICBkc3RfcGl0Y2gp OworCWludGVsX2JiX291dChpYmIsIChkc3RfeTEgPDwgMTYpIHwgZHN0X3gxKTsgLyogZHN0IHgx LHkxICovCisJaW50ZWxfYmJfb3V0KGliYiwgKChkc3RfeTEgKyBoZWlnaHQpIDw8IDE2KSB8IChk c3RfeDEgKyB3aWR0aCkpOyAvKiBkc3QgeDIseTIgKi8KKwlpbnRlbF9iYl9lbWl0X3JlbG9jX2Zl bmNlZChpYmIsIGRzdC0+aGFuZGxlLAorCQkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsIEk5 MTVfR0VNX0RPTUFJTl9SRU5ERVIsCisJCQkJICAgMCwgZHN0LT5hZGRyLm9mZnNldCk7CisJaW50 ZWxfYmJfb3V0KGliYiwgKHNyY195MSA8PCAxNikgfCBzcmNfeDEpOyAvKiBzcmMgeDEseTEgKi8K KwlpbnRlbF9iYl9vdXQoaWJiLCBzcmNfcGl0Y2gpOworCWludGVsX2JiX2VtaXRfcmVsb2NfZmVu Y2VkKGliYiwgc3JjLT5oYW5kbGUsCisJCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCwK KwkJCQkgICAwLCBzcmMtPmFkZHIub2Zmc2V0KTsKKworCWlmIChnZW4gPj0gNiAmJiBzcmMtPmhh bmRsZSA9PSBkc3QtPmhhbmRsZSkgeworCQlpbnRlbF9iYl9vdXQoaWJiLCBYWV9TRVRVUF9DTElQ X0JMVF9DTUQpOworCQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwkJaW50ZWxfYmJfb3V0KGliYiwg MCk7CisJfQorCit9CisKK3ZvaWQgaW50ZWxfYmJfYmx0X2NvcHkoc3RydWN0IGludGVsX2JiICpp YmIsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsCisJCSAgICAgICBpbnQgc3JjX3gx LCBpbnQgc3JjX3kxLCBpbnQgc3JjX3BpdGNoLAorCQkgICAgICAgc3RydWN0IGludGVsX2J1ZiAq ZHN0LAorCQkgICAgICAgaW50IGRzdF94MSwgaW50IGRzdF95MSwgaW50IGRzdF9waXRjaCwKKwkJ ICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJwcCkKK3sKKwlpbnRlbF9iYl9lbWl0 X2JsdF9jb3B5KGliYiwgc3JjLCBzcmNfeDEsIHNyY195MSwgc3JjX3BpdGNoLAorCQkJICAgICAg IGRzdCwgZHN0X3gxLCBkc3RfeTEsIGRzdF9waXRjaCwKKwkJCSAgICAgICB3aWR0aCwgaGVpZ2h0 LCBicHApOworCWludGVsX2JiX2VtaXRfYmJlKGliYik7CisJaW50ZWxfYmJfZmx1c2hfYmxpdChp YmIpOworfQpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmggYi9saWIvaW50ZWxf YmF0Y2hidWZmZXIuaAppbmRleCAwNjQ5ZmMyMi4uMDIxNjhiOWQgMTAwNjQ0Ci0tLSBhL2xpYi9p bnRlbF9iYXRjaGJ1ZmZlci5oCisrKyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCkBAIC00MzMs MTEgKzQzMywxMyBAQCBzdHJ1Y3QgaW50ZWxfYmIgewogCWludCBpOTE1OwogCWludCBnZW47CiAJ Ym9vbCBkZWJ1ZzsKKwlib29sIGVuZm9yY2VfcmVsb2NzOwogCXVpbnQzMl90IGRldmlkOwogCXVp bnQzMl90IGhhbmRsZTsKIAl1aW50MzJfdCBzaXplOwogCXVpbnQzMl90ICpiYXRjaDsKIAl1aW50 MzJfdCAqcHRyOworCWludCBmZW5jZTsKIAogCXVpbnQzMl90IHBybmc7CiAJdWludDY0X3QgZ3R0 X3NpemU7CkBAIC00NTQsMTIgKzQ1NiwzNCBAQCBzdHJ1Y3QgaW50ZWxfYmIgewogCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2NzOwogCXVpbnQzMl90IG51bV9yZWxv Y3M7CiAJdWludDMyX3QgYWxsb2NhdGVkX3JlbG9jczsKKworCS8qCisJICogQk8gcmVjcmVhdGUg aW4gcmVzZXQgcGF0aCBvbmx5IHdoZW4gcmVmY291bnQgPT0gMAorCSAqIEN1cnJlbnRseSB3ZSBk b24ndCBuZWVkIHRvIHVzZSBhdG9taWNzIGJlY2F1c2UgaW50ZWxfYmIKKwkgKiBpcyBub3QgdGhy ZWFkLXNhZmUuCisJICovCisJaW50MzJfdCByZWZjb3VudDsKIH07CiAKIHN0cnVjdCBpbnRlbF9i YiAqaW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBzaXplKTsKLQorc3RydWN0IGlu dGVsX2JiICppbnRlbF9iYl9jcmVhdGVfd2l0aF9yZWxvY3MoaW50IGk5MTUsIHVpbnQzMl90IHNp emUpOwogdm9pZCBpbnRlbF9iYl9kZXN0cm95KHN0cnVjdCBpbnRlbF9iYiAqaWJiKTsKKworc3Rh dGljIGlubGluZSB2b2lkIGludGVsX2JiX3JlZihzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK3sKKwlp YmItPnJlZmNvdW50Kys7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9iYl91bnJlZihz dHJ1Y3QgaW50ZWxfYmIgKmliYikKK3sKKwlpZ3RfYXNzZXJ0X2YoaWJiLT5yZWZjb3VudCA+IDAs ICJpbnRlbF9iYiByZWZjb3VudCBpcyAwISIpOworCWliYi0+cmVmY291bnQtLTsKK30KKwogdm9p ZCBpbnRlbF9iYl9yZXNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBwdXJnZV9vYmplY3Rz X2NhY2hlKTsKK2ludCBpbnRlbF9iYl9zeW5jKHN0cnVjdCBpbnRlbF9iYiAqaWJiKTsKK3ZvaWQg aW50ZWxfYmJfcHJpbnQoc3RydWN0IGludGVsX2JiICppYmIpOwordm9pZCBpbnRlbF9iYl9kdW1w KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7CiB2b2lkIGludGVs X2JiX3NldF9kZWJ1ZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBkZWJ1Zyk7CiAKIHN0YXRp YyBpbmxpbmUgdWludDMyX3QgaW50ZWxfYmJfb2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQpA QCAtNDcxLDcgKzQ5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9iYl9wdHJfc2V0KHN0 cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBvZmZzZXQpCiB7CiAJaWJiLT5wdHIgPSAodm9p ZCAqKSAoKHVpbnQ4X3QgKikgaWJiLT5iYXRjaCArIG9mZnNldCk7CiAKLQlpZ3RfYXNzZXJ0KGlu dGVsX2JiX29mZnNldChpYmIpIDwgaWJiLT5zaXplKTsKKwlpZ3RfYXNzZXJ0KGludGVsX2JiX29m ZnNldChpYmIpIDw9IGliYi0+c2l6ZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9i Yl9wdHJfYWRkKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBvZmZzZXQpCkBAIC00Nzks MTAgKzUwMywyMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfYmJfcHRyX2FkZChzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwgdWludDMyX3Qgb2Zmc2V0KQogCWludGVsX2JiX3B0cl9zZXQoaWJiLCBp bnRlbF9iYl9vZmZzZXQoaWJiKSArIG9mZnNldCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBp bnRlbF9iYl9wdHJfYWxpZ24oc3RydWN0IGludGVsX2JiICppYmIsCitzdGF0aWMgaW5saW5lIHVp bnQzMl90IGludGVsX2JiX3B0cl9hZGRfcmV0dXJuX3ByZXZfb2Zmc2V0KHN0cnVjdCBpbnRlbF9i YiAqaWJiLAorCQkJCQkJCSAgIHVpbnQzMl90IG9mZnNldCkKK3sKKwl1aW50MzJfdCBwcmV2aW91 c19vZmZzZXQgPSBpbnRlbF9iYl9vZmZzZXQoaWJiKTsKKworCWludGVsX2JiX3B0cl9zZXQoaWJi LCBwcmV2aW91c19vZmZzZXQgKyBvZmZzZXQpOworCisJcmV0dXJuIHByZXZpb3VzX29mZnNldDsK K30KKworc3RhdGljIGlubGluZSB2b2lkICppbnRlbF9iYl9wdHJfYWxpZ24oc3RydWN0IGludGVs X2JiICppYmIsCiAJCQkJICAgICAgdWludDMyX3QgYWxpZ25tZW50KQogewogCWludGVsX2JiX3B0 cl9zZXQoaWJiLCBBTElHTihpbnRlbF9iYl9vZmZzZXQoaWJiKSwgYWxpZ25tZW50KSk7CisKKwly ZXR1cm4gKHZvaWQgKikgaWJiLT5wdHI7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCAqaW50ZWxf YmJfcHRyKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQpAQCAtNDk1LDcgKzUzMSw3IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBpbnRlbF9iYl9vdXQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGR3 b3JkKQogCSppYmItPnB0ciA9IGR3b3JkOwogCWliYi0+cHRyKys7CiAKLQlpZ3RfYXNzZXJ0KGlu dGVsX2JiX29mZnNldChpYmIpIDwgaWJiLT5zaXplKTsKKwlpZ3RfYXNzZXJ0KGludGVsX2JiX29m ZnNldChpYmIpIDw9IGliYi0+c2l6ZSk7CiB9CiAKIApAQCAtNTEwLDYgKzU0NiwxMyBAQCB1aW50 NjRfdCBpbnRlbF9iYl9lbWl0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQkJIHVpbnQ2 NF90IGRlbHRhLAogCQkJIHVpbnQ2NF90IHByZXN1bWVkX29mZnNldCk7CiAKK3VpbnQ2NF90IGlu dGVsX2JiX2VtaXRfcmVsb2NfZmVuY2VkKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJCSAgICB1 aW50MzJfdCBoYW5kbGUsCisJCQkJICAgIHVpbnQzMl90IHJlYWRfZG9tYWlucywKKwkJCQkgICAg dWludDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJCSAgICB1aW50NjRfdCBkZWx0YSwKKwkJCQkgICAg dWludDY0X3QgcHJlc3VtZWRfb2Zmc2V0KTsKKwogdWludDY0X3QgaW50ZWxfYmJfb2Zmc2V0X3Jl bG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQkJICAgICAgIHVpbnQzMl90IGhhbmRsZSwKIAkJ CSAgICAgICB1aW50MzJfdCByZWFkX2RvbWFpbnMsCkBAIC01MTcsNiArNTYwLDE0IEBAIHVpbnQ2 NF90IGludGVsX2JiX29mZnNldF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAkJCSAgICAg ICB1aW50MzJfdCBvZmZzZXQsCiAJCQkgICAgICAgdWludDY0X3QgcHJlc3VtZWRfb2Zmc2V0KTsK IAordWludDY0X3QgaW50ZWxfYmJfb2Zmc2V0X3JlbG9jX3dpdGhfZGVsdGEoc3RydWN0IGludGVs X2JiICppYmIsCisJCQkJCSAgdWludDMyX3QgaGFuZGxlLAorCQkJCQkgIHVpbnQzMl90IHJlYWRf ZG9tYWlucywKKwkJCQkJICB1aW50MzJfdCB3cml0ZV9kb21haW4sCisJCQkJCSAgdWludDMyX3Qg ZGVsdGEsCisJCQkJCSAgdWludDMyX3Qgb2Zmc2V0LAorCQkJCQkgIHVpbnQ2NF90IHByZXN1bWVk X29mZnNldCk7CisKIGludCBfX2ludGVsX2JiX2V4ZWMoc3RydWN0IGludGVsX2JiICppYmIsIHVp bnQzMl90IGVuZF9vZmZzZXQsCiAJCSAgICB1aW50MzJfdCBjdHgsIHVpbnQ2NF90IGZsYWdzLCBi b29sIHN5bmMpOwogCkBAIC01MjksNCArNTgwLDI1IEBAIHZvaWQgaW50ZWxfYmJfZXhlY193aXRo X2NvbnRleHQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGVuZF9vZmZzZXQsCiB1aW50 NjRfdCBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWlu dDMyX3QgaGFuZGxlKTsKIGJvb2wgaW50ZWxfYmJfb2JqZWN0X29mZnNldF90b19idWYoc3RydWN0 IGludGVsX2JiICppYmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1Zik7CiAKK3VpbnQzMl90IGludGVs X2JiX2VtaXRfYmJlKHN0cnVjdCBpbnRlbF9iYiAqaWJiKTsKK3ZvaWQgaW50ZWxfYmJfZmx1c2hf cmVuZGVyKHN0cnVjdCBpbnRlbF9iYiAqaWJiKTsKK3ZvaWQgaW50ZWxfYmJfZmx1c2hfYmxpdChz dHJ1Y3QgaW50ZWxfYmIgKmliYik7CisKK3VpbnQzMl90IGludGVsX2JiX2NvcHlfZGF0YShzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSAgICBjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQg Ynl0ZXMsCisJCQkgICAgdWludDMyX3QgYWxpZ24pOworCit2b2lkIGludGVsX2JiX2JsaXRfc3Rh cnQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGZsYWdzKTsKK3ZvaWQgaW50ZWxfYmJf ZW1pdF9ibHRfY29weShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSAgICBzdHJ1Y3QgaW50ZWxf YnVmICpzcmMsCisJCQkgICAgaW50IHNyY194MSwgaW50IHNyY195MSwgaW50IHNyY19waXRjaCwK KwkJCSAgICBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJCQkgICAgaW50IGRzdF94MSwgaW50IGRz dF95MSwgaW50IGRzdF9waXRjaCwKKwkJCSAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBi cHApOwordm9pZCBpbnRlbF9iYl9ibHRfY29weShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJICAg ICAgIHN0cnVjdCBpbnRlbF9idWYgKnNyYywKKwkJICAgICAgIGludCBzcmNfeDEsIGludCBzcmNf eTEsIGludCBzcmNfcGl0Y2gsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpkc3QsCisJCSAg ICAgICBpbnQgZHN0X3gxLCBpbnQgZHN0X3kxLCBpbnQgZHN0X3BpdGNoLAorCQkgICAgICAgaW50 IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwKTsKICNlbmRpZgotLSAKMi4yNi4wCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcg bGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK