From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id E810389CD3 for ; Wed, 24 Jun 2020 08:25:55 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Wed, 24 Jun 2020 10:25:42 +0200 Message-Id: <20200624082545.14362-2-zbigniew.kempczynski@intel.com> In-Reply-To: <20200624082545.14362-1-zbigniew.kempczynski@intel.com> References: <20200624082545.14362-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v5 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 LQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmMgfCAzODkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmggfCAgNTIgKysrKystCiAy IGZpbGVzIGNoYW5nZWQsIDQxMiBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5j CmluZGV4IDJhODgyNjI3Li5iM2FiY2Q4NyAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVm 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 NyBAQCB1aW50NjRfdCBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChzdHJ1Y3QgaW50ZWxfYmIg 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 WEVDX1JFTkRFUikKKwkJY3R4ID0gMDsKKworCWludGVsX2JiX2V4ZWNfd2l0aF9jb250ZXh0KGli YiwgaW50ZWxfYmJfb2Zmc2V0KGliYiksIGN0eCwKKwkJCQkgICByaW5nIHwgSTkxNV9FWEVDX05P X1JFTE9DLAorCQkJCSAgIHRydWUpOworCWludGVsX2JiX3Jlc2V0KGliYiwgZmFsc2UpOworfQor Cit2b2lkIGludGVsX2JiX2ZsdXNoKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCWludCByaW5n ID0gMDsKKworCWlmIChIQVNfQkxUX1JJTkcoaWJiLT5kZXZpZCkpCisJCXJpbmcgPSBJOTE1X0VY RUNfQkxUOworCisJaW50ZWxfYmJfZmx1c2hfb25fcmluZyhpYmIsIHJpbmcpOworfQorCit1aW50 MzJfdCBpbnRlbF9iYl9jb3B5X2RhdGEoc3RydWN0IGludGVsX2JiICppYmIsCisJCQkgICAgY29u c3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGJ5dGVzLAorCQkJICAgIHVpbnQzMl90IGFsaWdu KQoreworCXVpbnQzMl90ICpzdWJkYXRhLCBvZmZzZXQ7CisKKwlpZ3RfYXNzZXJ0KChieXRlcyAm IDMpID09IDApOworCisJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgYWxpZ24pOworCW9mZnNldCA9 IGludGVsX2JiX29mZnNldChpYmIpOworCWlndF9hc3NlcnQob2Zmc2V0ICsgYnl0ZXMgPCBpYmIt PnNpemUpOworCisJc3ViZGF0YSA9IGludGVsX2JiX3B0cihpYmIpOworCW1lbWNweShzdWJkYXRh LCBkYXRhLCBieXRlcyk7CisJaW50ZWxfYmJfcHRyX2FkZChpYmIsIGJ5dGVzKTsKKworCXJldHVy biBvZmZzZXQ7Cit9CisKK3ZvaWQgaW50ZWxfYmJfYmxpdF9zdGFydChzdHJ1Y3QgaW50ZWxfYmIg KmliYiwgdWludDMyX3QgZmxhZ3MpCit7CisJaW50ZWxfYmJfb3V0KGliYiwgWFlfU1JDX0NPUFlf QkxUX0NNRCB8CisJCSAgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX0FMUEhBIHwKKwkJICAgICBY WV9TUkNfQ09QWV9CTFRfV1JJVEVfUkdCIHwKKwkJICAgICAoZmxhZ3MpIHwKKwkJICAgICAoNiAr IDIqKGliYi0+Z2VuID49IDgpKSk7Cit9CisKK3ZvaWQgaW50ZWxfYmJfYmx0X2NvcHkoc3RydWN0 IGludGVsX2JiICppYmIsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsCisJCSAgICAg ICBpbnQgc3JjX3gxLCBpbnQgc3JjX3kxLCBpbnQgc3JjX3BpdGNoLAorCQkgICAgICAgc3RydWN0 IGludGVsX2J1ZiAqZHN0LAorCQkgICAgICAgaW50IGRzdF94MSwgaW50IGRzdF95MSwgaW50IGRz dF9waXRjaCwKKwkJICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJwcCkKK3sKKwlj b25zdCBpbnQgZ2VuID0gaWJiLT5nZW47CisJdWludDMyX3QgY21kX2JpdHMgPSAwOworCXVpbnQz Ml90IGJyMTNfYml0czsKKworCWlndF9hc3NlcnQoYnBwKihzcmNfeDEgKyB3aWR0aCkgPD0gOCpz cmNfcGl0Y2gpOworCWlndF9hc3NlcnQoYnBwKihkc3RfeDEgKyB3aWR0aCkgPD0gOCpkc3RfcGl0 Y2gpOworCWlndF9hc3NlcnQoc3JjX3BpdGNoICogKHNyY195MSArIGhlaWdodCkgPD0gc3JjLT5z aXplKTsKKwlpZ3RfYXNzZXJ0KGRzdF9waXRjaCAqIChkc3RfeTEgKyBoZWlnaHQpIDw9IGRzdC0+ c2l6ZSk7CisKKwlpZiAoZ2VuID49IDQgJiYgc3JjLT50aWxpbmcgIT0gSTkxNV9USUxJTkdfTk9O RSkgeworCQlzcmNfcGl0Y2ggLz0gNDsKKwkJY21kX2JpdHMgfD0gWFlfU1JDX0NPUFlfQkxUX1NS Q19USUxFRDsKKwl9CisKKwlpZiAoZ2VuID49IDQgJiYgZHN0LT50aWxpbmcgIT0gSTkxNV9USUxJ TkdfTk9ORSkgeworCQlkc3RfcGl0Y2ggLz0gNDsKKwkJY21kX2JpdHMgfD0gWFlfU1JDX0NPUFlf QkxUX0RTVF9USUxFRDsKKwl9CisKKwlDSEVDS19SQU5HRShzcmNfeDEpOyBDSEVDS19SQU5HRShz cmNfeTEpOworCUNIRUNLX1JBTkdFKGRzdF94MSk7IENIRUNLX1JBTkdFKGRzdF95MSk7CisJQ0hF Q0tfUkFOR0Uod2lkdGgpOyBDSEVDS19SQU5HRShoZWlnaHQpOworCUNIRUNLX1JBTkdFKHNyY194 MSArIHdpZHRoKTsgQ0hFQ0tfUkFOR0Uoc3JjX3kxICsgaGVpZ2h0KTsKKwlDSEVDS19SQU5HRShk c3RfeDEgKyB3aWR0aCk7IENIRUNLX1JBTkdFKGRzdF95MSArIGhlaWdodCk7CisJQ0hFQ0tfUkFO R0Uoc3JjX3BpdGNoKTsgQ0hFQ0tfUkFOR0UoZHN0X3BpdGNoKTsKKworCWJyMTNfYml0cyA9IDA7 CisJc3dpdGNoIChicHApIHsKKwljYXNlIDg6CisJCWJyZWFrOworCWNhc2UgMTY6CQkvKiBzdXBw b3J0aW5nIG9ubHkgUkdCNTY1LCBub3QgQVJHQjE1NTUgKi8KKwkJYnIxM19iaXRzIHw9IDEgPDwg MjQ7CisJCWJyZWFrOworCWNhc2UgMzI6CisJCWJyMTNfYml0cyB8PSAzIDw8IDI0OworCQljbWRf Yml0cyB8PSBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfQUxQSEEgfAorCQkJICAgIFhZX1NSQ19DT1BZ X0JMVF9XUklURV9SR0I7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWlndF9mYWlsKElHVF9FWElU X0ZBSUxVUkUpOworCX0KKworCWludGVsX2JiX2JsaXRfc3RhcnQoaWJiLCBjbWRfYml0cyk7CisJ aW50ZWxfYmJfb3V0KGliYiwgKGJyMTNfYml0cykgfAorCQkgICgweGNjIDw8IDE2KSB8IC8qIGNv cHkgUk9QICovCisJCSAgZHN0X3BpdGNoKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAoZHN0X3kxIDw8 IDE2KSB8IGRzdF94MSk7IC8qIGRzdCB4MSx5MSAqLworCWludGVsX2JiX291dChpYmIsICgoZHN0 X3kxICsgaGVpZ2h0KSA8PCAxNikgfCAoZHN0X3gxICsgd2lkdGgpKTsgLyogZHN0IHgyLHkyICov CisJaW50ZWxfYmJfZW1pdF9yZWxvY19mZW5jZWQoaWJiLCBkc3QtPmhhbmRsZSwKKwkJCQkgICBJ OTE1X0dFTV9ET01BSU5fUkVOREVSLCBJOTE1X0dFTV9ET01BSU5fUkVOREVSLAorCQkJCSAgIDAs IGRzdC0+YWRkci5vZmZzZXQpOworCWludGVsX2JiX291dChpYmIsIChzcmNfeTEgPDwgMTYpIHwg c3JjX3gxKTsgLyogc3JjIHgxLHkxICovCisJaW50ZWxfYmJfb3V0KGliYiwgc3JjX3BpdGNoKTsK KwlpbnRlbF9iYl9lbWl0X3JlbG9jX2ZlbmNlZChpYmIsIHNyYy0+aGFuZGxlLAorCQkJCSAgIEk5 MTVfR0VNX0RPTUFJTl9SRU5ERVIsIDAsCisJCQkJICAgMCwgc3JjLT5hZGRyLm9mZnNldCk7CisK KwlpZiAoZ2VuID49IDYgJiYgc3JjLT5oYW5kbGUgPT0gZHN0LT5oYW5kbGUpIHsKKwkJaW50ZWxf YmJfb3V0KGliYiwgWFlfU0VUVVBfQ0xJUF9CTFRfQ01EKTsKKwkJaW50ZWxfYmJfb3V0KGliYiwg MCk7CisJCWludGVsX2JiX291dChpYmIsIDApOworCX0KKworCWludGVsX2JiX2ZsdXNoKGliYik7 CiB9CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaCBiL2xpYi9pbnRlbF9iYXRj aGJ1ZmZlci5oCmluZGV4IDA2NDlmYzIyLi5kMGJkMDE5NyAxMDA2NDQKLS0tIGEvbGliL2ludGVs X2JhdGNoYnVmZmVyLmgKKysrIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKQEAgLTQzMyw2ICs0 MzMsNyBAQCBzdHJ1Y3QgaW50ZWxfYmIgewogCWludCBpOTE1OwogCWludCBnZW47CiAJYm9vbCBk ZWJ1ZzsKKwlib29sIGVuZm9yY2VfcmVsb2NzOwogCXVpbnQzMl90IGRldmlkOwogCXVpbnQzMl90 IGhhbmRsZTsKIAl1aW50MzJfdCBzaXplOwpAQCAtNDU3LDkgKzQ1OCwxMiBAQCBzdHJ1Y3QgaW50 ZWxfYmIgewogfTsKIAogc3RydWN0IGludGVsX2JiICppbnRlbF9iYl9jcmVhdGUoaW50IGk5MTUs IHVpbnQzMl90IHNpemUpOwotCitzdHJ1Y3QgaW50ZWxfYmIgKmludGVsX2JiX2NyZWF0ZV93aXRo X3JlbG9jcyhpbnQgaTkxNSwgdWludDMyX3Qgc2l6ZSk7CiB2b2lkIGludGVsX2JiX2Rlc3Ryb3ko c3RydWN0IGludGVsX2JiICppYmIpOwogdm9pZCBpbnRlbF9iYl9yZXNldChzdHJ1Y3QgaW50ZWxf YmIgKmliYiwgYm9vbCBwdXJnZV9vYmplY3RzX2NhY2hlKTsKK3ZvaWQgaW50ZWxfYmJfc3luYyhz dHJ1Y3QgaW50ZWxfYmIgKmliYik7Cit2b2lkIGludGVsX2JiX3ByaW50KHN0cnVjdCBpbnRlbF9i YiAqaWJiKTsKK3ZvaWQgaW50ZWxfYmJfZHVtcChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgY29uc3Qg Y2hhciAqZmlsZW5hbWUpOwogdm9pZCBpbnRlbF9iYl9zZXRfZGVidWcoc3RydWN0IGludGVsX2Ji ICppYmIsIGJvb2wgZGVidWcpOwogCiBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGludGVsX2JiX29m ZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYikKQEAgLTQ3OSwxMCArNDgzLDIyIEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBpbnRlbF9iYl9wdHJfYWRkKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJf dCBvZmZzZXQpCiAJaW50ZWxfYmJfcHRyX3NldChpYmIsIGludGVsX2JiX29mZnNldChpYmIpICsg b2Zmc2V0KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGludGVsX2JiX3B0cl9hbGlnbihzdHJ1 Y3QgaW50ZWxfYmIgKmliYiwKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgaW50ZWxfYmJfcHRyX2Fk ZF9yZXR1cm5fcHJldl9vZmZzZXQoc3RydWN0IGludGVsX2JiICppYmIsCisJCQkJCQkJICAgdWlu dDMyX3Qgb2Zmc2V0KQoreworCXVpbnQzMl90IHByZXZpb3VzX29mZnNldCA9IGludGVsX2JiX29m ZnNldChpYmIpOworCisJaW50ZWxfYmJfcHRyX3NldChpYmIsIHByZXZpb3VzX29mZnNldCArIG9m ZnNldCk7CisKKwlyZXR1cm4gcHJldmlvdXNfb2Zmc2V0OworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgKmludGVsX2JiX3B0cl9hbGlnbihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAkJCQkgICAgICB1 aW50MzJfdCBhbGlnbm1lbnQpCiB7CiAJaW50ZWxfYmJfcHRyX3NldChpYmIsIEFMSUdOKGludGVs X2JiX29mZnNldChpYmIpLCBhbGlnbm1lbnQpKTsKKworCXJldHVybiAodm9pZCAqKSBpYmItPnB0 cjsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkICppbnRlbF9iYl9wdHIoc3RydWN0IGludGVsX2Ji ICppYmIpCkBAIC01MTAsNiArNTI2LDEzIEBAIHVpbnQ2NF90IGludGVsX2JiX2VtaXRfcmVsb2Mo c3RydWN0IGludGVsX2JiICppYmIsCiAJCQkgdWludDY0X3QgZGVsdGEsCiAJCQkgdWludDY0X3Qg cHJlc3VtZWRfb2Zmc2V0KTsKIAordWludDY0X3QgaW50ZWxfYmJfZW1pdF9yZWxvY19mZW5jZWQo c3RydWN0IGludGVsX2JiICppYmIsCisJCQkJICAgIHVpbnQzMl90IGhhbmRsZSwKKwkJCQkgICAg dWludDMyX3QgcmVhZF9kb21haW5zLAorCQkJCSAgICB1aW50MzJfdCB3cml0ZV9kb21haW4sCisJ CQkJICAgIHVpbnQ2NF90IGRlbHRhLAorCQkJCSAgICB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQp OworCiB1aW50NjRfdCBpbnRlbF9iYl9vZmZzZXRfcmVsb2Moc3RydWN0IGludGVsX2JiICppYmIs CiAJCQkgICAgICAgdWludDMyX3QgaGFuZGxlLAogCQkJICAgICAgIHVpbnQzMl90IHJlYWRfZG9t YWlucywKQEAgLTUxNyw2ICs1NDAsMTQgQEAgdWludDY0X3QgaW50ZWxfYmJfb2Zmc2V0X3JlbG9j KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQkJICAgICAgIHVpbnQzMl90IG9mZnNldCwKIAkJCSAg ICAgICB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQpOwogCit1aW50NjRfdCBpbnRlbF9iYl9vZmZz ZXRfcmVsb2Nfd2l0aF9kZWx0YShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkJICB1aW50MzJf dCBoYW5kbGUsCisJCQkJCSAgdWludDMyX3QgcmVhZF9kb21haW5zLAorCQkJCQkgIHVpbnQzMl90 IHdyaXRlX2RvbWFpbiwKKwkJCQkJICB1aW50MzJfdCBkZWx0YSwKKwkJCQkJICB1aW50MzJfdCBv ZmZzZXQsCisJCQkJCSAgdWludDY0X3QgcHJlc3VtZWRfb2Zmc2V0KTsKKwogaW50IF9faW50ZWxf YmJfZXhlYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZW5kX29mZnNldCwKIAkJICAg IHVpbnQzMl90IGN0eCwgdWludDY0X3QgZmxhZ3MsIGJvb2wgc3luYyk7CiAKQEAgLTUyOSw0ICs1 NjAsMjEgQEAgdm9pZCBpbnRlbF9iYl9leGVjX3dpdGhfY29udGV4dChzdHJ1Y3QgaW50ZWxfYmIg KmliYiwgdWludDMyX3QgZW5kX29mZnNldCwKIHVpbnQ2NF90IGludGVsX2JiX2dldF9vYmplY3Rf b2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUpOwogYm9vbCBpbnRl bF9iYl9vYmplY3Rfb2Zmc2V0X3RvX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGlu dGVsX2J1ZiAqYnVmKTsKIAordWludDMyX3QgaW50ZWxfYmJfb3V0X2ZsdXNoKHN0cnVjdCBpbnRl bF9iYiAqaWJiKTsKK3ZvaWQgaW50ZWxfYmJfZmx1c2hfd2l0aF9jb250ZXh0KHN0cnVjdCBpbnRl bF9iYiAqaWJiLCB1aW50MzJfdCBjdHgpOwordm9pZCBpbnRlbF9iYl9mbHVzaF9vbl9yaW5nKHN0 cnVjdCBpbnRlbF9iYiAqaWJiLCBpbnQgcmluZyk7Cit2b2lkIGludGVsX2JiX2ZsdXNoKHN0cnVj dCBpbnRlbF9iYiAqaWJiKTsKKwordWludDMyX3QgaW50ZWxfYmJfY29weV9kYXRhKHN0cnVjdCBp bnRlbF9iYiAqaWJiLAorCQkJICAgIGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBieXRl cywKKwkJCSAgICB1aW50MzJfdCBhbGlnbik7CisKK3ZvaWQgaW50ZWxfYmJfYmxpdF9zdGFydChz dHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZmxhZ3MpOworCit2b2lkIGludGVsX2JiX2Js dF9jb3B5KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkgICAgICAgc3RydWN0IGludGVsX2J1ZiAq c3JjLAorCQkgICAgICAgaW50IHNyY194MSwgaW50IHNyY195MSwgaW50IHNyY19waXRjaCwKKwkJ ICAgICAgIHN0cnVjdCBpbnRlbF9idWYgKmRzdCwKKwkJICAgICAgIGludCBkc3RfeDEsIGludCBk c3RfeTEsIGludCBkc3RfcGl0Y2gsCisJCSAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGlu dCBicHApOwogI2VuZGlmCi0tIAoyLjI2LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaWd0LWRldgo=