From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 733216EAD3 for ; Wed, 24 Jun 2020 10:54:54 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Wed, 24 Jun 2020 12:54:45 +0200 Message-Id: <20200624105448.26583-2-zbigniew.kempczynski@intel.com> In-Reply-To: <20200624105448.26583-1-zbigniew.kempczynski@intel.com> References: <20200624105448.26583-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v6 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 LQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmMgfCAzOTAgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmggfCAgNTIgKysrKystCiAy IGZpbGVzIGNoYW5nZWQsIDQxMyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5j CmluZGV4IDJhODgyNjI3Li5iYzQzYjBkMSAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVm ZmVyLmMKKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKQEAgLTEwNDUsOCArMTA0NSw2IEBA IHZvaWQgaWd0X2JsaXR0ZXJfZmFzdF9jb3B5KHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0 Y2gsCiAJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2goYmF0Y2gpOwogfQogCi0jdW5kZWYgQ0hFQ0tf UkFOR0UKLQogLyoqCiAgKiBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYzoKICAqIEBkZXZpZDogcGNp IGRldmljZSBpZApAQCAtMTIxMSw3ICsxMjA5LDggQEAgc3RhdGljIHZvaWQgX19yZWFsbG9jYXRl X29iamVjdHMoc3RydWN0IGludGVsX2JiICppYmIpCiAgKgogICogUG9pbnRlciB0aGUgaW50ZWxf YmIsIGFzc2VydHMgb24gZmFpbHVyZS4KICAqLwotc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9j cmVhdGUoaW50IGk5MTUsIHVpbnQzMl90IHNpemUpCitzdGF0aWMgc3RydWN0IGludGVsX2JiICoK K19faW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBzaXplLCBib29sIGRvX3JlbG9j cykKIHsKIAlzdHJ1Y3QgaW50ZWxfYmIgKmliYiA9IGNhbGxvYygxLCBzaXplb2YoKmliYikpOwog CXVpbnQ2NF90IGd0dF9zaXplOwpAQCAtMTIyMSw2ICsxMjIwLDcgQEAgc3RydWN0IGludGVsX2Ji ICppbnRlbF9iYl9jcmVhdGUoaW50IGk5MTUsIHVpbnQzMl90IHNpemUpCiAJaWJiLT5pOTE1ID0g aTkxNTsKIAlpYmItPmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChpOTE1KTsKIAlpYmItPmdl biA9IGludGVsX2dlbihpYmItPmRldmlkKTsKKwlpYmItPmVuZm9yY2VfcmVsb2NzID0gZG9fcmVs b2NzOwogCWliYi0+aGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCBzaXplKTsKIAlpYmItPnNpemUg PSBzaXplOwogCWliYi0+YmF0Y2ggPSBjYWxsb2MoMSwgc2l6ZSk7CkBAIC0xMjQxLDYgKzEyNDEs MzcgQEAgc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9jcmVhdGUoaW50IGk5MTUsIHVpbnQzMl90 IHNpemUpCiAJcmV0dXJuIGliYjsKIH0KIAorLyoqCisgKiBpbnRlbF9iYl9jcmVhdGU6CisgKiBA aTkxNTogZHJtIGZkCisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgYmF0Y2hidWZmZXIKKyAqCisgKiBS ZXR1cm5zOgorICoKKyAqIFBvaW50ZXIgdGhlIGludGVsX2JiLCBhc3NlcnRzIG9uIGZhaWx1cmUu CisgKi8KK3N0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJf dCBzaXplKQoreworCXJldHVybiBfX2ludGVsX2JiX2NyZWF0ZShpOTE1LCBzaXplLCBmYWxzZSk7 Cit9CisKKy8qKgorICogaW50ZWxfYmJfY3JlYXRlX3dpdGhfcmVsb2NzOgorICogQGk5MTU6IGRy bSBmZAorICogQHNpemU6IHNpemUgb2YgdGhlIGJhdGNoYnVmZmVyCisgKgorICogRGlzYWJsZSBw YXNzaW5nIG9yIHJhbmRvbWl6aW5nIGFkZHJlc3Nlcy4gVGhpcyB3aWxsIGxlYWQgdG8gcmVsb2Nh dGlvbnMKKyAqIHdoZW4gb2JqZWN0cyBhcmUgbm90IHByZXZpb3VzbHkgcGlubmVkLgorICoKKyAq IFJldHVybnM6CisgKgorICogUG9pbnRlciB0aGUgaW50ZWxfYmIsIGFzc2VydHMgb24gZmFpbHVy ZS4KKyAqLworc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9jcmVhdGVfd2l0aF9yZWxvY3MoaW50 IGk5MTUsIHVpbnQzMl90IHNpemUpCit7CisJcmV0dXJuIF9faW50ZWxfYmJfY3JlYXRlKGk5MTUs IHNpemUsIHRydWUpOworfQorCiAvKgogICogdGRlc3Ryb3koKSBjYWxscyBmcmVlIGZ1bmN0aW9u IGZvciBlYWNoIG5vZGUsIGJ1dCB3ZSBzcHJlYWQgdHJlZQogICogb24gb2JqZWN0cyBhcnJheSwg c28gZG8gbm90aGluZy4KQEAgLTEyNTAsMjMgKzEyODEsMzQgQEAgc3RhdGljIHZvaWQgX19kb19u b3RoaW5nKHZvaWQgKm5vZGUpCiAJKHZvaWQpIG5vZGU7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW50 ZWxfYmJfZGVzdHJveV9vYmplY3RzKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQorc3RhdGljIHZvaWQg X19pbnRlbF9iYl9kZXN0cm95X3JlbG9jYXRpb25zKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogewog CXVpbnQzMl90IGk7CiAKIAkvKiBGcmVlIHJlbG9jYXRpb25zICovCi0JZm9yIChpID0gMDsgaSA8 IGliYi0+bnVtX29iamVjdHM7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgaWJiLT5udW1fb2JqZWN0 czsgaSsrKSB7CiAJCWZyZWUoZnJvbV91c2VyX3BvaW50ZXIoaWJiLT5vYmplY3RzW2ldLnJlbG9j c19wdHIpKTsKKwkJaWJiLT5vYmplY3RzW2ldLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIo TlVMTCk7CisJfQogCi0JZnJlZShpYmItPm9iamVjdHMpOwotCXRkZXN0cm95KGliYi0+cm9vdCwg X19kb19ub3RoaW5nKTsKKwlpYmItPnJlbG9jcyA9IE5VTEw7CisJaWJiLT5udW1fcmVsb2NzID0g MDsKKwlpYmItPmFsbG9jYXRlZF9yZWxvY3MgPSAwOworfQogCitzdGF0aWMgdm9pZCBfX2ludGVs X2JiX2Rlc3Ryb3lfb2JqZWN0cyhzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK3sKKwlmcmVlKGliYi0+ b2JqZWN0cyk7CiAJaWJiLT5vYmplY3RzID0gTlVMTDsKKworCXRkZXN0cm95KGliYi0+cm9vdCwg X19kb19ub3RoaW5nKTsKIAlpYmItPnJvb3QgPSBOVUxMOworCisJbWVtc2V0KGliYi0+YmF0Y2gs IDAsIGliYi0+c2l6ZSk7CisKIAlpYmItPm51bV9vYmplY3RzID0gMDsKLQlpYmItPm51bV9yZWxv Y3MgPSAwOwogCWliYi0+YWxsb2NhdGVkX29iamVjdHMgPSAwOwotCWliYi0+YWxsb2NhdGVkX3Jl bG9jcyA9IDA7CisKIAlpYmItPnB0ciA9IGliYi0+YmF0Y2g7CiB9CiAKQEAgLTEyODAsNiArMTMy Miw3IEBAIHZvaWQgaW50ZWxfYmJfZGVzdHJveShzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIHsKIAlp Z3RfYXNzZXJ0KGliYik7CiAKKwlfX2ludGVsX2JiX2Rlc3Ryb3lfcmVsb2NhdGlvbnMoaWJiKTsK IAlfX2ludGVsX2JiX2Rlc3Ryb3lfb2JqZWN0cyhpYmIpOwogCWdlbV9jbG9zZShpYmItPmk5MTUs IGliYi0+aGFuZGxlKTsKIApAQCAtMTI5NSw2ICsxMzM4LDggQEAgdm9pZCBpbnRlbF9iYl9kZXN0 cm95KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogKi8KIHZvaWQgaW50ZWxfYmJfcmVzZXQoc3RydWN0 IGludGVsX2JiICppYmIsIGJvb2wgcHVyZ2Vfb2JqZWN0c19jYWNoZSkKIHsKKwlfX2ludGVsX2Ji X2Rlc3Ryb3lfcmVsb2NhdGlvbnMoaWJiKTsKKwogCWlmIChwdXJnZV9vYmplY3RzX2NhY2hlKSB7 CiAJCV9faW50ZWxfYmJfZGVzdHJveV9vYmplY3RzKGliYik7CiAJCV9fcmVhbGxvY2F0ZV9vYmpl Y3RzKGliYik7CkBAIC0xMzA3LDYgKzEzNTIsNjAgQEAgdm9pZCBpbnRlbF9iYl9yZXNldChzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBwdXJnZV9vYmplY3RzX2NhY2hlKQogCWliYi0+cHRyID0g aWJiLT5iYXRjaDsKIH0KIAorLyoKKyAqIGludGVsX2JiX3N5bmM6CisgKiBAaWJiOiBwb2ludGVy IHRvIGludGVsX2JiCisgKgorICogV2FpdHMgZm9yIGJiIGNvbXBsZXRpb24uCisqLwordm9pZCBp bnRlbF9iYl9zeW5jKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCWdlbV9zeW5jKGliYi0+aTkx NSwgaWJiLT5oYW5kbGUpOworfQorCisvKgorICogaW50ZWxfYmJfcHJpbnQ6CisgKiBAaWJiOiBw b2ludGVyIHRvIGludGVsX2JiCisgKgorICogUHJpbnRzIGJhdGNoIHRvIHN0ZG91dC4KKyovCit2 b2lkIGludGVsX2JiX3ByaW50KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCWlndF9pbmZvKCJk cm0gZmQ6ICVkLCBnZW46ICVkLCBkZXZpZDogJXUsIGRlYnVnOiAlZFxuIiwKKwkJIGliYi0+aTkx NSwgaWJiLT5nZW4sIGliYi0+ZGV2aWQsIGliYi0+ZGVidWcpOworCWlndF9pbmZvKCJoYW5kbGU6 ICV1LCBzaXplOiAldSwgYmF0Y2g6ICVwLCBwdHI6ICVwXG4iLAorCQkgaWJiLT5oYW5kbGUsIGli Yi0+c2l6ZSwgaWJiLT5iYXRjaCwgaWJiLT5wdHIpOworCWlndF9pbmZvKCJwcm5nOiAldSwgZ3R0 X3NpemU6ICUiIFBSSXU2NCAiLCBzdXBwb3J0cyA0OGJpdDogJWRcbiIsCisJCSBpYmItPnBybmcs IGliYi0+Z3R0X3NpemUsIGliYi0+c3VwcG9ydHNfNDhiX2FkZHJlc3MpOworCWlndF9pbmZvKCJj dHg6ICV1XG4iLCBpYmItPmN0eCk7CisJaWd0X2luZm8oInJvb3Q6ICVwXG4iLCBpYmItPnJvb3Qp OworCWlndF9pbmZvKCJvYmplY3RzOiAlcCwgbnVtX29iamVjdHM6ICV1LCBhbGxvY2F0ZWQgb2Jq OiAldVxuIiwKKwkJIGliYi0+b2JqZWN0cywgaWJiLT5udW1fb2JqZWN0cywgaWJiLT5hbGxvY2F0 ZWRfb2JqZWN0cyk7CisJaWd0X2luZm8oInJlbG9jczogJXAsIG51bV9yZWxvY3M6ICV1LCBhbGxv Y2F0ZWRfcmVsb2NzOiAldVxuLS0tLVxuIiwKKwkJIGliYi0+cmVsb2NzLCBpYmItPm51bV9yZWxv Y3MsIGliYi0+YWxsb2NhdGVkX3JlbG9jcyk7Cit9CisKKy8qCisgKiBpbnRlbF9iYl9kdW1wOgor ICogQGliYjogcG9pbnRlciB0byBpbnRlbF9iYgorICogQGZpbGVuYW1lOiBuYW1lIHRvIHdoaWNo IHdyaXRlIGJiCisgKgorICogRHVtcCBiYXRjaCBibyB0byBmaWxlLgorKi8KK3ZvaWQgaW50ZWxf YmJfZHVtcChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisJ RklMRSAqb3V0OworCXZvaWQgKnB0cjsKKworCXB0ciA9IGdlbV9tbWFwX19kZXZpY2VfY29oZXJl bnQoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSwgMCwgaWJiLT5zaXplLAorCQkJCQlQUk9UX1JFQUQp OworCW91dCA9IGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKKwlpZ3RfYXNzZXJ0KG91dCk7CisJZndy aXRlKHB0ciwgaWJiLT5zaXplLCAxLCBvdXQpOworCWZjbG9zZShvdXQpOworCW11bm1hcChwdHIs IGliYi0+c2l6ZSk7Cit9CisKIC8qKgogICogaW50ZWxfYmJfc2V0X2RlYnVnOgogICogQGliYjog cG9pbnRlciB0byBpbnRlbF9iYgpAQCAtMTM2MSw3ICsxNDYwLDcgQEAgaW50ZWxfYmJfYWRkX29i amVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLAogCQlvYmplY3QgPSAq Zm91bmQ7CiAKIAkvKiBBc3NpZ24gYWRkcmVzcyBvbmNlICovCi0JaWYgKG9iamVjdC0+b2Zmc2V0 ID09IDApIHsKKwlpZiAoIWliYi0+ZW5mb3JjZV9yZWxvY3MgJiYgb2JqZWN0LT5vZmZzZXQgPT0g MCkgewogCQlpZiAob2Zmc2V0KSB7CiAJCQlvYmplY3QtPm9mZnNldCA9IG9mZnNldDsKIAkJfSBl bHNlIHsKQEAgLTEzODIsNiArMTQ4MSwyMyBAQCBpbnRlbF9iYl9hZGRfb2JqZWN0KHN0cnVjdCBp bnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUsCiAJcmV0dXJuIG9iamVjdDsKIH0KIAorc3Rh dGljIGJvb2wgaW50ZWxfYmJfb2JqZWN0X3NldF9mZW5jZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwg dWludDMyX3QgaGFuZGxlKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9i amVjdCA9IHsgLmhhbmRsZSA9IGhhbmRsZSB9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19v YmplY3QyICoqZm91bmQ7CisKKwlmb3VuZCA9IHRmaW5kKCh2b2lkICopICZvYmplY3QsICZpYmIt PnJvb3QsIF9fY29tcGFyZV9vYmplY3RzKTsKKwlpZiAoIWZvdW5kKSB7CisJCWlndF93YXJuKCJU cnlpbmcgdG8gc2V0IGZlbmNlIG9uIG5vdCBmb3VuZCBoYW5kbGU6ICV1XG4iLAorCQkJIGhhbmRs ZSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkoKmZvdW5kKS0+ZmxhZ3MgfD0gRVhFQ19PQkpF Q1RfTkVFRFNfRkVOQ0U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIGludGVsX2JiX2Fk ZF9yZWxvYzoKICAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKQEAgLTE0NzksNiArMTU5NSwy MyBAQCB1aW50NjRfdCBpbnRlbF9iYl9lbWl0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAog CXJldHVybiBhZGRyZXNzOwogfQogCit1aW50NjRfdCBpbnRlbF9iYl9lbWl0X3JlbG9jX2ZlbmNl ZChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkgICAgdWludDMyX3QgaGFuZGxlLAorCQkJCSAg ICB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkJICAgIHVpbnQzMl90IHdyaXRlX2RvbWFpbiwK KwkJCQkgICAgdWludDY0X3QgZGVsdGEsCisJCQkJICAgIHVpbnQ2NF90IHByZXN1bWVkX29mZnNl dCkKK3sKKwl1aW50NjRfdCBhZGRyZXNzOworCisJYWRkcmVzcyA9IGludGVsX2JiX2VtaXRfcmVs b2MoaWJiLCBoYW5kbGUsIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluLAorCQkJCSAgICAgIGRl bHRhLCBwcmVzdW1lZF9vZmZzZXQpOworCisJaW50ZWxfYmJfb2JqZWN0X3NldF9mZW5jZShpYmIs IGhhbmRsZSk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKwogLyoqCiAgKiBpbnRlbF9iYl9vZmZz ZXRfcmVsb2M6CiAgKiBAaWJiOiBwb2ludGVyIHRvIGludGVsX2JiCkBAIC0xNTA5LDcgKzE2NDIs MjMgQEAgdWludDY0X3QgaW50ZWxfYmJfb2Zmc2V0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJi LAogCQkJCSAgMCwgb2Zmc2V0LCBwcmVzdW1lZF9vZmZzZXQpOwogfQogCi1zdGF0aWMgdm9pZCBp bnRlbF9iYl9kdW1wX2V4ZWNidWYoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZXhl Y2J1ZikKK3VpbnQ2NF90IGludGVsX2JiX29mZnNldF9yZWxvY193aXRoX2RlbHRhKHN0cnVjdCBp bnRlbF9iYiAqaWJiLAorCQkJCQkgIHVpbnQzMl90IGhhbmRsZSwKKwkJCQkJICB1aW50MzJfdCBy ZWFkX2RvbWFpbnMsCisJCQkJCSAgdWludDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJCQkgIHVpbnQz Ml90IGRlbHRhLAorCQkJCQkgIHVpbnQzMl90IG9mZnNldCwKKwkJCQkJICB1aW50NjRfdCBwcmVz dW1lZF9vZmZzZXQpCit7CisJaWd0X2Fzc2VydChpYmIpOworCisJcmV0dXJuIGludGVsX2JiX2Fk ZF9yZWxvYyhpYmIsIGhhbmRsZSwgcmVhZF9kb21haW5zLCB3cml0ZV9kb21haW4sCisJCQkJICBk ZWx0YSwgb2Zmc2V0LCBwcmVzdW1lZF9vZmZzZXQpOworfQorCisKK3N0YXRpYyB2b2lkIGludGVs X2JiX2R1bXBfZXhlY2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkgIHN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmV4ZWNidWYpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgKm9iamVjdHM7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2Vu dHJ5ICpyZWxvY3MsICpyZWxvYzsKQEAgLTE1MzUsNyArMTY4NCw4IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2JiX2R1bXBfZXhlY2J1ZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICpleGVj YnVmKQogCQkJIGksIG9iamVjdHMtPmhhbmRsZSwgb2JqZWN0cy0+cmVsb2NhdGlvbl9jb3VudCwK IAkJCSByZWxvY3MsCiAJCQkgb2JqZWN0cy0+YWxpZ25tZW50LAotCQkJIG9iamVjdHMtPm9mZnNl dCwgb2JqZWN0cy0+ZmxhZ3MsCisJCQkgb2JqZWN0cy0+b2Zmc2V0ICYgKGliYi0+Z3R0X3NpemUg LSAxKSwKKwkJCSBvYmplY3RzLT5mbGFncywKIAkJCSBvYmplY3RzLT5yc3ZkMSwgb2JqZWN0cy0+ cnN2ZDIpOwogCQlpZiAob2JqZWN0cy0+cmVsb2NhdGlvbl9jb3VudCkgewogCQkJaWd0X2luZm8o Ilx0ZXhlY2J1ZiByZWxvY3M6XG4iKTsKQEAgLTE1NDgsNyArMTY5OCw3IEBAIHN0YXRpYyB2b2lk IGludGVsX2JiX2R1bXBfZXhlY2J1ZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICpl eGVjYnVmKQogCQkJCQkgIndyaXRlX2RvbWFpbjogMHgleFxuIiwKIAkJCQkJIGosIHJlbG9jLT50 YXJnZXRfaGFuZGxlLAogCQkJCQkgcmVsb2MtPm9mZnNldCwgcmVsb2MtPmRlbHRhLAotCQkJCQkg cmVsb2MtPnByZXN1bWVkX29mZnNldCwKKwkJCQkJIHJlbG9jLT5wcmVzdW1lZF9vZmZzZXQgJiAo aWJiLT5ndHRfc2l6ZSAtIDEpLAogCQkJCQkgcmVsb2MtPnJlYWRfZG9tYWlucywKIAkJCQkJIHJl bG9jLT53cml0ZV9kb21haW4pOwogCQkJfQpAQCAtMTYxNiw3ICsxNzY2LDcgQEAgaW50IF9faW50 ZWxfYmJfZXhlYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCwKIAkJ Z2VtX3N5bmMoaWJiLT5pOTE1LCBpYmItPmhhbmRsZSk7CiAKIAlpZiAoaWJiLT5kZWJ1Zykgewot CQlpbnRlbF9iYl9kdW1wX2V4ZWNidWYoJmV4ZWNidWYpOworCQlpbnRlbF9iYl9kdW1wX2V4ZWNi dWYoaWJiLCAmZXhlY2J1Zik7CiAJCWlmIChpbnRlbF9iYl9kZWJ1Z190cmVlKSB7CiAJCQlpZ3Rf aW5mbygiXG5UcmVlOlxuIik7CiAJCQl0d2FsayhpYmItPnJvb3QsIHByaW50X25vZGUpOwpAQCAt MTY3OSw3ICsxODI5LDcgQEAgdWludDY0X3QgaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoc3Ry dWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKIAlpZiAoIWZvdW5kKQogCQlyZXR1 cm4gMDsKIAotCXJldHVybiAoKmZvdW5kKS0+b2Zmc2V0OworCXJldHVybiAoKmZvdW5kKS0+b2Zm c2V0ICYgKGliYi0+Z3R0X3NpemUgLSAxKTsKIH0KIAogLyoqCkBAIC0xNjkyLDIyICsxODQyLDIw OCBAQCB1aW50NjRfdCBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChzdHJ1Y3QgaW50ZWxfYmIg KmliYiwgdWludDMyX3QgaGFuZGxlKQogICovCiBib29sIGludGVsX2JiX29iamVjdF9vZmZzZXRf dG9fYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7Ci0J c3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqZWN0ID0geyAuaGFuZGxlID0gYnVm LT5oYW5kbGUgfTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqKmZvdW5kOwor ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iamVjdCA9IHsgLmhhbmRs ZSA9IGJ1Zi0+aGFuZGxlIH07CisgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgKipmb3VuZDsKIAotCWlndF9hc3NlcnQoaWJiKTsKLQlpZ3RfYXNzZXJ0KGJ1Zik7CisgICAg ICAgaWd0X2Fzc2VydChpYmIpOworICAgICAgIGlndF9hc3NlcnQoYnVmKTsKIAotCWZvdW5kID0g dGZpbmQoKHZvaWQgKikgJm9iamVjdCwgJmliYi0+cm9vdCwgX19jb21wYXJlX29iamVjdHMpOwot CWlmICghZm91bmQpIHsKLQkJYnVmLT5hZGRyLm9mZnNldCA9IDA7Ci0JCWJ1Zi0+YWRkci5jdHgg PSAwOworICAgICAgIGZvdW5kID0gdGZpbmQoKHZvaWQgKikgJm9iamVjdCwgJmliYi0+cm9vdCwg X19jb21wYXJlX29iamVjdHMpOworICAgICAgIGlmICghZm91bmQpIHsKKwkgICAgICAgYnVmLT5h ZGRyLm9mZnNldCA9IDA7CisJICAgICAgIGJ1Zi0+YWRkci5jdHggPSAwOwogCi0JCXJldHVybiBm YWxzZTsKKwkgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgIH0KKworICAgICAgIGJ1Zi0+YWRk ci5vZmZzZXQgPSAoKmZvdW5kKS0+b2Zmc2V0ICYgKGliYi0+Z3R0X3NpemUgLSAxKTsKKyAgICAg ICBidWYtPmFkZHIuY3R4ID0gaWJiLT5jdHg7CisKKyAgICAgICByZXR1cm4gdHJ1ZTsKK30KKwor LyoKKyAqIGludGVsX2JiX291dF9mbHVzaDoKKyAqIEBpYmI6IGJhdGNoYnVmZmVyCisgKgorICog T3V0cHV0cyBmbHVzaGluZyBjb2RlIHRvIHRoZSBiYXRjaC4KKyAqLworI2RlZmluZSBDTURfUE9M WV9TVElQUExFX09GRlNFVCAgICAgICAweDc5MDYKK3VpbnQzMl90IGludGVsX2JiX291dF9mbHVz aChzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK3sKKwlpZiAoaW50ZWxfYmJfb2Zmc2V0KGliYikgPT0g MCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoaWJiLT5nZW4gPT0gNSkgeworCQlpbnRlbF9iYl9vdXQo aWJiLCBDTURfUE9MWV9TVElQUExFX09GRlNFVCA8PCAxNik7CisJCWludGVsX2JiX291dChpYmIs IDApOwogCX0KIAotCWJ1Zi0+YWRkci5vZmZzZXQgPSAoKmZvdW5kKS0+b2Zmc2V0OwotCWJ1Zi0+ YWRkci5jdHggPSBpYmItPmN0eDsKKwkvKiBSb3VuZCBiYXRjaGJ1ZmZlciB1c2FnZSB0byAyIERX T1JEcy4gKi8KKwlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA4KTsKKworCWlmIChpYmItPmdlbiA8 PSA0KSB7CisJCWludGVsX2JiX291dChpYmIsIE1JX0ZMVVNIKTsKKwl9IGVsc2UgeworCQlpbnRl bF9iYl9vdXQoaWJiLCBNSV9GTFVTSF9EVyB8IDIpOworCQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsK KwkJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJCWludGVsX2JiX291dChpYmIsIDApOworCX0KIAot CXJldHVybiB0cnVlOworCS8qIE1hcmsgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAqLworCWludGVs X2JiX291dChpYmIsIE1JX0JBVENIX0JVRkZFUl9FTkQpOyAvKiBub29wICovCisJaW50ZWxfYmJf b3V0KGliYiwgMCk7CisKKwlyZXR1cm4gaW50ZWxfYmJfb2Zmc2V0KGliYik7Cit9CisKKy8qCisg KiBpbnRlbF9iYl9mbHVzaF93aXRoX2NvbnRleHQ6CisgKiBAaWJiOiBiYXRjaGJ1ZmZlcgorICog QGN0eDogY29udGV4dCBpZAorICoKKyAqIFN1Ym1pdHMgdGhlIGJhdGNoIGZvciBleGVjdXRpb24g b24gdGhlIHJlbmRlciBlbmdpbmUgd2l0aCB0aGUgc3VwcGxpZWQKKyAqIGhhcmR3YXJlIGNvbnRl eHQuCisgKi8KK3ZvaWQgaW50ZWxfYmJfZmx1c2hfd2l0aF9jb250ZXh0KHN0cnVjdCBpbnRlbF9i YiAqaWJiLCB1aW50MzJfdCBjdHgpCit7CisJaWYgKGludGVsX2JiX291dF9mbHVzaChpYmIpID09 IDApCisJCXJldHVybjsKKworCWludGVsX2JiX2V4ZWNfd2l0aF9jb250ZXh0KGliYiwgaW50ZWxf YmJfb2Zmc2V0KGliYiksIGN0eCwKKwkJCQkgICBJOTE1X0VYRUNfUkVOREVSIHwgSTkxNV9FWEVD X05PX1JFTE9DLAorCQkJCSAgIHRydWUpOworCWludGVsX2JiX3Jlc2V0KGliYiwgZmFsc2UpOwor fQorCit2b2lkIGludGVsX2JiX2ZsdXNoX29uX3Jpbmcoc3RydWN0IGludGVsX2JiICppYmIsIGlu dCByaW5nKQoreworCXVuc2lnbmVkIGludCB1c2VkID0gaW50ZWxfYmJfb3V0X2ZsdXNoKGliYik7 CisJdWludDMyX3QgY3R4OworCisJaWYgKHVzZWQgPT0gMCkKKwkJcmV0dXJuOworCisJLyogWFhY IGJhZCBrZXJuZWwgQVBJICovCisJY3R4ID0gaWJiLT5jdHg7CisJaWYgKHJpbmcgIT0gSTkxNV9F WEVDX1JFTkRFUikKKwkJY3R4ID0gMDsKKworCWlndF9pbmZvKCJmbHVzaCBvbiByaW5nOiAleFxu IiwgcmluZyk7CisJaW50ZWxfYmJfZXhlY193aXRoX2NvbnRleHQoaWJiLCBpbnRlbF9iYl9vZmZz ZXQoaWJiKSwgY3R4LAorCQkJCSAgIHJpbmcgfCBJOTE1X0VYRUNfTk9fUkVMT0MsCisJCQkJICAg dHJ1ZSk7CisJaW50ZWxfYmJfcmVzZXQoaWJiLCBmYWxzZSk7Cit9CisKK3ZvaWQgaW50ZWxfYmJf Zmx1c2goc3RydWN0IGludGVsX2JiICppYmIpCit7CisJaW50IHJpbmcgPSAwOworCisJaWYgKEhB U19CTFRfUklORyhpYmItPmRldmlkKSkKKwkJcmluZyA9IEk5MTVfRVhFQ19CTFQ7CisKKwlpbnRl bF9iYl9mbHVzaF9vbl9yaW5nKGliYiwgcmluZyk7Cit9CisKK3VpbnQzMl90IGludGVsX2JiX2Nv cHlfZGF0YShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCSAgICBjb25zdCB2b2lkICpkYXRhLCB1 bnNpZ25lZCBpbnQgYnl0ZXMsCisJCQkgICAgdWludDMyX3QgYWxpZ24pCit7CisJdWludDMyX3Qg KnN1YmRhdGEsIG9mZnNldDsKKworCWlndF9hc3NlcnQoKGJ5dGVzICYgMykgPT0gMCk7CisKKwlp bnRlbF9iYl9wdHJfYWxpZ24oaWJiLCBhbGlnbik7CisJb2Zmc2V0ID0gaW50ZWxfYmJfb2Zmc2V0 KGliYik7CisJaWd0X2Fzc2VydChvZmZzZXQgKyBieXRlcyA8IGliYi0+c2l6ZSk7CisKKwlzdWJk YXRhID0gaW50ZWxfYmJfcHRyKGliYik7CisJbWVtY3B5KHN1YmRhdGEsIGRhdGEsIGJ5dGVzKTsK KwlpbnRlbF9iYl9wdHJfYWRkKGliYiwgYnl0ZXMpOworCisJcmV0dXJuIG9mZnNldDsKK30KKwor dm9pZCBpbnRlbF9iYl9ibGl0X3N0YXJ0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBm bGFncykKK3sKKwlpbnRlbF9iYl9vdXQoaWJiLCBYWV9TUkNfQ09QWV9CTFRfQ01EIHwKKwkJICAg ICBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfQUxQSEEgfAorCQkgICAgIFhZX1NSQ19DT1BZX0JMVF9X UklURV9SR0IgfAorCQkgICAgIChmbGFncykgfAorCQkgICAgICg2ICsgMiooaWJiLT5nZW4gPj0g OCkpKTsKK30KKwordm9pZCBpbnRlbF9iYl9ibHRfY29weShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwK KwkJICAgICAgIHN0cnVjdCBpbnRlbF9idWYgKnNyYywKKwkJICAgICAgIGludCBzcmNfeDEsIGlu dCBzcmNfeTEsIGludCBzcmNfcGl0Y2gsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpkc3Qs CisJCSAgICAgICBpbnQgZHN0X3gxLCBpbnQgZHN0X3kxLCBpbnQgZHN0X3BpdGNoLAorCQkgICAg ICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwKQoreworCWNvbnN0IGludCBnZW4gPSBp YmItPmdlbjsKKwl1aW50MzJfdCBjbWRfYml0cyA9IDA7CisJdWludDMyX3QgYnIxM19iaXRzOwor CisJaWd0X2Fzc2VydChicHAqKHNyY194MSArIHdpZHRoKSA8PSA4KnNyY19waXRjaCk7CisJaWd0 X2Fzc2VydChicHAqKGRzdF94MSArIHdpZHRoKSA8PSA4KmRzdF9waXRjaCk7CisJaWd0X2Fzc2Vy dChzcmNfcGl0Y2ggKiAoc3JjX3kxICsgaGVpZ2h0KSA8PSBzcmMtPnNpemUpOworCWlndF9hc3Nl cnQoZHN0X3BpdGNoICogKGRzdF95MSArIGhlaWdodCkgPD0gZHN0LT5zaXplKTsKKworCWlmIChn ZW4gPj0gNCAmJiBzcmMtPnRpbGluZyAhPSBJOTE1X1RJTElOR19OT05FKSB7CisJCXNyY19waXRj aCAvPSA0OworCQljbWRfYml0cyB8PSBYWV9TUkNfQ09QWV9CTFRfU1JDX1RJTEVEOworCX0KKwor CWlmIChnZW4gPj0gNCAmJiBkc3QtPnRpbGluZyAhPSBJOTE1X1RJTElOR19OT05FKSB7CisJCWRz dF9waXRjaCAvPSA0OworCQljbWRfYml0cyB8PSBYWV9TUkNfQ09QWV9CTFRfRFNUX1RJTEVEOwor CX0KKworCUNIRUNLX1JBTkdFKHNyY194MSk7IENIRUNLX1JBTkdFKHNyY195MSk7CisJQ0hFQ0tf UkFOR0UoZHN0X3gxKTsgQ0hFQ0tfUkFOR0UoZHN0X3kxKTsKKwlDSEVDS19SQU5HRSh3aWR0aCk7 IENIRUNLX1JBTkdFKGhlaWdodCk7CisJQ0hFQ0tfUkFOR0Uoc3JjX3gxICsgd2lkdGgpOyBDSEVD S19SQU5HRShzcmNfeTEgKyBoZWlnaHQpOworCUNIRUNLX1JBTkdFKGRzdF94MSArIHdpZHRoKTsg Q0hFQ0tfUkFOR0UoZHN0X3kxICsgaGVpZ2h0KTsKKwlDSEVDS19SQU5HRShzcmNfcGl0Y2gpOyBD SEVDS19SQU5HRShkc3RfcGl0Y2gpOworCisJYnIxM19iaXRzID0gMDsKKwlzd2l0Y2ggKGJwcCkg eworCWNhc2UgODoKKwkJYnJlYWs7CisJY2FzZSAxNjoJCS8qIHN1cHBvcnRpbmcgb25seSBSR0I1 NjUsIG5vdCBBUkdCMTU1NSAqLworCQlicjEzX2JpdHMgfD0gMSA8PCAyNDsKKwkJYnJlYWs7CisJ Y2FzZSAzMjoKKwkJYnIxM19iaXRzIHw9IDMgPDwgMjQ7CisJCWNtZF9iaXRzIHw9IFhZX1NSQ19D T1BZX0JMVF9XUklURV9BTFBIQSB8CisJCQkgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX1JHQjsK KwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJaWd0X2ZhaWwoSUdUX0VYSVRfRkFJTFVSRSk7CisJfQor CisJaW50ZWxfYmJfYmxpdF9zdGFydChpYmIsIGNtZF9iaXRzKTsKKwlpbnRlbF9iYl9vdXQoaWJi LCAoYnIxM19iaXRzKSB8CisJCSAgKDB4Y2MgPDwgMTYpIHwgLyogY29weSBST1AgKi8KKwkJICBk c3RfcGl0Y2gpOworCWludGVsX2JiX291dChpYmIsIChkc3RfeTEgPDwgMTYpIHwgZHN0X3gxKTsg LyogZHN0IHgxLHkxICovCisJaW50ZWxfYmJfb3V0KGliYiwgKChkc3RfeTEgKyBoZWlnaHQpIDw8 IDE2KSB8IChkc3RfeDEgKyB3aWR0aCkpOyAvKiBkc3QgeDIseTIgKi8KKwlpbnRlbF9iYl9lbWl0 X3JlbG9jX2ZlbmNlZChpYmIsIGRzdC0+aGFuZGxlLAorCQkJCSAgIEk5MTVfR0VNX0RPTUFJTl9S RU5ERVIsIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCisJCQkJICAgMCwgZHN0LT5hZGRyLm9mZnNl dCk7CisJaW50ZWxfYmJfb3V0KGliYiwgKHNyY195MSA8PCAxNikgfCBzcmNfeDEpOyAvKiBzcmMg eDEseTEgKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCBzcmNfcGl0Y2gpOworCWludGVsX2JiX2VtaXRf cmVsb2NfZmVuY2VkKGliYiwgc3JjLT5oYW5kbGUsCisJCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JF TkRFUiwgMCwKKwkJCQkgICAwLCBzcmMtPmFkZHIub2Zmc2V0KTsKKworCWlmIChnZW4gPj0gNiAm JiBzcmMtPmhhbmRsZSA9PSBkc3QtPmhhbmRsZSkgeworCQlpbnRlbF9iYl9vdXQoaWJiLCBYWV9T RVRVUF9DTElQX0JMVF9DTUQpOworCQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwkJaW50ZWxfYmJf b3V0KGliYiwgMCk7CisJfQorCisJaW50ZWxfYmJfZmx1c2goaWJiKTsKIH0KZGlmZiAtLWdpdCBh L2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKaW5kZXgg MDY0OWZjMjIuLmQwYmQwMTk3IDEwMDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaAor KysgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaApAQCAtNDMzLDYgKzQzMyw3IEBAIHN0cnVjdCBp bnRlbF9iYiB7CiAJaW50IGk5MTU7CiAJaW50IGdlbjsKIAlib29sIGRlYnVnOworCWJvb2wgZW5m b3JjZV9yZWxvY3M7CiAJdWludDMyX3QgZGV2aWQ7CiAJdWludDMyX3QgaGFuZGxlOwogCXVpbnQz Ml90IHNpemU7CkBAIC00NTcsOSArNDU4LDEyIEBAIHN0cnVjdCBpbnRlbF9iYiB7CiB9OwogCiBz dHJ1Y3QgaW50ZWxfYmIgKmludGVsX2JiX2NyZWF0ZShpbnQgaTkxNSwgdWludDMyX3Qgc2l6ZSk7 Ci0KK3N0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRlX3dpdGhfcmVsb2NzKGludCBpOTE1 LCB1aW50MzJfdCBzaXplKTsKIHZvaWQgaW50ZWxfYmJfZGVzdHJveShzdHJ1Y3QgaW50ZWxfYmIg KmliYik7CiB2b2lkIGludGVsX2JiX3Jlc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBib29sIHB1 cmdlX29iamVjdHNfY2FjaGUpOwordm9pZCBpbnRlbF9iYl9zeW5jKHN0cnVjdCBpbnRlbF9iYiAq aWJiKTsKK3ZvaWQgaW50ZWxfYmJfcHJpbnQoc3RydWN0IGludGVsX2JiICppYmIpOwordm9pZCBp bnRlbF9iYl9kdW1wKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7 CiB2b2lkIGludGVsX2JiX3NldF9kZWJ1ZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBkZWJ1 Zyk7CiAKIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgaW50ZWxfYmJfb2Zmc2V0KHN0cnVjdCBpbnRl bF9iYiAqaWJiKQpAQCAtNDc5LDEwICs0ODMsMjIgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVs X2JiX3B0cl9hZGQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IG9mZnNldCkKIAlpbnRl bF9iYl9wdHJfc2V0KGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYikgKyBvZmZzZXQpOwogfQogCi1z dGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfYmJfcHRyX2FsaWduKHN0cnVjdCBpbnRlbF9iYiAqaWJi LAorc3RhdGljIGlubGluZSB1aW50MzJfdCBpbnRlbF9iYl9wdHJfYWRkX3JldHVybl9wcmV2X29m ZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkJCQkgICB1aW50MzJfdCBvZmZzZXQpCit7 CisJdWludDMyX3QgcHJldmlvdXNfb2Zmc2V0ID0gaW50ZWxfYmJfb2Zmc2V0KGliYik7CisKKwlp bnRlbF9iYl9wdHJfc2V0KGliYiwgcHJldmlvdXNfb2Zmc2V0ICsgb2Zmc2V0KTsKKworCXJldHVy biBwcmV2aW91c19vZmZzZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAqaW50ZWxfYmJfcHRy X2FsaWduKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQkJCSAgICAgIHVpbnQzMl90IGFsaWdubWVu dCkKIHsKIAlpbnRlbF9iYl9wdHJfc2V0KGliYiwgQUxJR04oaW50ZWxfYmJfb2Zmc2V0KGliYiks IGFsaWdubWVudCkpOworCisJcmV0dXJuICh2b2lkICopIGliYi0+cHRyOwogfQogCiBzdGF0aWMg aW5saW5lIHZvaWQgKmludGVsX2JiX3B0cihzdHJ1Y3QgaW50ZWxfYmIgKmliYikKQEAgLTUxMCw2 ICs1MjYsMTMgQEAgdWludDY0X3QgaW50ZWxfYmJfZW1pdF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIg KmliYiwKIAkJCSB1aW50NjRfdCBkZWx0YSwKIAkJCSB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQp OwogCit1aW50NjRfdCBpbnRlbF9iYl9lbWl0X3JlbG9jX2ZlbmNlZChzdHJ1Y3QgaW50ZWxfYmIg KmliYiwKKwkJCQkgICAgdWludDMyX3QgaGFuZGxlLAorCQkJCSAgICB1aW50MzJfdCByZWFkX2Rv bWFpbnMsCisJCQkJICAgIHVpbnQzMl90IHdyaXRlX2RvbWFpbiwKKwkJCQkgICAgdWludDY0X3Qg ZGVsdGEsCisJCQkJICAgIHVpbnQ2NF90IHByZXN1bWVkX29mZnNldCk7CisKIHVpbnQ2NF90IGlu dGVsX2JiX29mZnNldF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAkJCSAgICAgICB1aW50 MzJfdCBoYW5kbGUsCiAJCQkgICAgICAgdWludDMyX3QgcmVhZF9kb21haW5zLApAQCAtNTE3LDYg KzU0MCwxNCBAQCB1aW50NjRfdCBpbnRlbF9iYl9vZmZzZXRfcmVsb2Moc3RydWN0IGludGVsX2Ji ICppYmIsCiAJCQkgICAgICAgdWludDMyX3Qgb2Zmc2V0LAogCQkJICAgICAgIHVpbnQ2NF90IHBy ZXN1bWVkX29mZnNldCk7CiAKK3VpbnQ2NF90IGludGVsX2JiX29mZnNldF9yZWxvY193aXRoX2Rl bHRhKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJCQkgIHVpbnQzMl90IGhhbmRsZSwKKwkJCQkJ ICB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkJCSAgdWludDMyX3Qgd3JpdGVfZG9tYWluLAor CQkJCQkgIHVpbnQzMl90IGRlbHRhLAorCQkJCQkgIHVpbnQzMl90IG9mZnNldCwKKwkJCQkJICB1 aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQpOworCiBpbnQgX19pbnRlbF9iYl9leGVjKHN0cnVjdCBp bnRlbF9iYiAqaWJiLCB1aW50MzJfdCBlbmRfb2Zmc2V0LAogCQkgICAgdWludDMyX3QgY3R4LCB1 aW50NjRfdCBmbGFncywgYm9vbCBzeW5jKTsKIApAQCAtNTI5LDQgKzU2MCwyMSBAQCB2b2lkIGlu dGVsX2JiX2V4ZWNfd2l0aF9jb250ZXh0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBl bmRfb2Zmc2V0LAogdWludDY0X3QgaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoc3RydWN0IGlu dGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSk7CiBib29sIGludGVsX2JiX29iamVjdF9vZmZz ZXRfdG9fYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYpOwog Cit1aW50MzJfdCBpbnRlbF9iYl9vdXRfZmx1c2goc3RydWN0IGludGVsX2JiICppYmIpOwordm9p ZCBpbnRlbF9iYl9mbHVzaF93aXRoX2NvbnRleHQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQz Ml90IGN0eCk7Cit2b2lkIGludGVsX2JiX2ZsdXNoX29uX3Jpbmcoc3RydWN0IGludGVsX2JiICpp YmIsIGludCByaW5nKTsKK3ZvaWQgaW50ZWxfYmJfZmx1c2goc3RydWN0IGludGVsX2JiICppYmIp OworCit1aW50MzJfdCBpbnRlbF9iYl9jb3B5X2RhdGEoc3RydWN0IGludGVsX2JiICppYmIsCisJ CQkgICAgY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGJ5dGVzLAorCQkJICAgIHVpbnQz Ml90IGFsaWduKTsKKwordm9pZCBpbnRlbF9iYl9ibGl0X3N0YXJ0KHN0cnVjdCBpbnRlbF9iYiAq aWJiLCB1aW50MzJfdCBmbGFncyk7CisKK3ZvaWQgaW50ZWxfYmJfYmx0X2NvcHkoc3RydWN0IGlu dGVsX2JiICppYmIsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsCisJCSAgICAgICBp bnQgc3JjX3gxLCBpbnQgc3JjX3kxLCBpbnQgc3JjX3BpdGNoLAorCQkgICAgICAgc3RydWN0IGlu dGVsX2J1ZiAqZHN0LAorCQkgICAgICAgaW50IGRzdF94MSwgaW50IGRzdF95MSwgaW50IGRzdF9w aXRjaCwKKwkJICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJwcCk7CiAjZW5kaWYK LS0gCjIuMjYuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==