From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id C8CC26E3C4 for ; Tue, 23 Jun 2020 13:01:01 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 23 Jun 2020 15:00:53 +0200 Message-Id: <20200623130056.20071-2-zbigniew.kempczynski@intel.com> In-Reply-To: <20200623130056.20071-1-zbigniew.kempczynski@intel.com> References: <20200623130056.20071-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 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 LQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmMgfCAzODcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmggfCAgNTIgKysrKystCiAy IGZpbGVzIGNoYW5nZWQsIDQxMCBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5j CmluZGV4IDJhODgyNjI3Li4xODc4MzM2ZiAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVm 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 NSBAQCB1aW50NjRfdCBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChzdHJ1Y3QgaW50ZWxfYmIg 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 T3V0cHV0cyBmbHVzaGluZyBjb2RlIHRvIHRoZSBiYXRjaC4KKyAqLwordWludDMyX3QgaW50ZWxf YmJfb3V0X2ZsdXNoKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCWlmIChpbnRlbF9iYl9vZmZz ZXQoaWJiKSA9PSAwKQorCQlyZXR1cm4gMDsKKworCWlmIChJU19HRU41KGliYi0+ZGV2aWQpKSB7 CisJCS8qIGVtaXQgZ2VuNSB3L2Egd2l0aG91dCBiYXRjaCBzcGFjZSBjaGVja3MgLSB3ZSByZXNl cnZlIHRoYXQKKwkJICogYWxyZWFkeS4gKi8KKwkJaW50ZWxfYmJfb3V0KGliYiwgQ01EX1BPTFlf U1RJUFBMRV9PRkZTRVQgPDwgMTYpOworCQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKIAl9CiAKLQli dWYtPmFkZHIub2Zmc2V0ID0gKCpmb3VuZCktPm9mZnNldDsKLQlidWYtPmFkZHIuY3R4ID0gaWJi LT5jdHg7CisJLyogUm91bmQgYmF0Y2hidWZmZXIgdXNhZ2UgdG8gMiBEV09SRHMuICovCisJaW50 ZWxfYmJfcHRyX2FsaWduKGliYiwgOCk7CiAKLQlyZXR1cm4gdHJ1ZTsKKwkvKiBNYXJrIHRoZSBl bmQgb2YgdGhlIGJ1ZmZlci4gKi8KKwlpbnRlbF9iYl9vdXQoaWJiLCBNSV9CQVRDSF9CVUZGRVJf RU5EKTsgLyogbm9vcCAqLworCWludGVsX2JiX291dChpYmIsIDApOworCisJcmV0dXJuIGludGVs X2JiX29mZnNldChpYmIpOworfQorCisvKgorICogaW50ZWxfYmJfZmx1c2hfd2l0aF9jb250ZXh0 OgorICogQGliYjogYmF0Y2hidWZmZXIKKyAqIEBjdHg6IGNvbnRleHQgaWQKKyAqCisgKiBTdWJt aXRzIHRoZSBiYXRjaCBmb3IgZXhlY3V0aW9uIG9uIHRoZSByZW5kZXIgZW5naW5lIHdpdGggdGhl IHN1cHBsaWVkCisgKiBoYXJkd2FyZSBjb250ZXh0LgorICovCit2b2lkIGludGVsX2JiX2ZsdXNo X3dpdGhfY29udGV4dChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgY3R4KQoreworCWlm IChpbnRlbF9iYl9vdXRfZmx1c2goaWJiKSA9PSAwKQorCQlyZXR1cm47CisKKwlpbnRlbF9iYl9l eGVjX3dpdGhfY29udGV4dChpYmIsIGludGVsX2JiX29mZnNldChpYmIpLCBjdHgsCisJCQkJICAg STkxNV9FWEVDX1JFTkRFUiB8IEk5MTVfRVhFQ19OT19SRUxPQywKKwkJCQkgICB0cnVlKTsKKwlp bnRlbF9iYl9yZXNldChpYmIsIGZhbHNlKTsKK30KKwordm9pZCBpbnRlbF9iYl9mbHVzaF9vbl9y aW5nKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBpbnQgcmluZykKK3sKKwl1bnNpZ25lZCBpbnQgdXNl ZCA9IGludGVsX2JiX291dF9mbHVzaChpYmIpOworCXVpbnQzMl90IGN0eDsKKworCWlmICh1c2Vk ID09IDApCisJCXJldHVybjsKKworCS8qIFhYWCBiYWQga2VybmVsIEFQSSAqLworCWN0eCA9IGli Yi0+Y3R4OworCWlmIChyaW5nICE9IEk5MTVfRVhFQ19SRU5ERVIpCisJCWN0eCA9IDA7CisKKwlp bnRlbF9iYl9leGVjX3dpdGhfY29udGV4dChpYmIsIGludGVsX2JiX29mZnNldChpYmIpLCBjdHgs CisJCQkJICAgcmluZyB8IEk5MTVfRVhFQ19OT19SRUxPQywKKwkJCQkgICB0cnVlKTsKKwlpbnRl bF9iYl9yZXNldChpYmIsIGZhbHNlKTsKK30KKwordm9pZCBpbnRlbF9iYl9mbHVzaChzdHJ1Y3Qg aW50ZWxfYmIgKmliYikKK3sKKwlpbnQgcmluZyA9IDA7CisKKwlpZiAoSEFTX0JMVF9SSU5HKGli Yi0+ZGV2aWQpKQorCQlyaW5nID0gSTkxNV9FWEVDX0JMVDsKKworCWludGVsX2JiX2ZsdXNoX29u X3JpbmcoaWJiLCByaW5nKTsKK30KKwordWludDMyX3QgaW50ZWxfYmJfY29weV9kYXRhKHN0cnVj dCBpbnRlbF9iYiAqaWJiLAorCQkJICAgIGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGludCBi eXRlcywKKwkJCSAgICB1aW50MzJfdCBhbGlnbikKK3sKKwl1aW50MzJfdCAqc3ViZGF0YSwgb2Zm c2V0OworCisJaWd0X2Fzc2VydCgoYnl0ZXMgJiAzKSA9PSAwKTsKKworCWludGVsX2JiX3B0cl9h bGlnbihpYmIsIGFsaWduKTsKKwlvZmZzZXQgPSBpbnRlbF9iYl9vZmZzZXQoaWJiKTsKKwlpZ3Rf YXNzZXJ0KG9mZnNldCArIGJ5dGVzIDwgaWJiLT5zaXplKTsKKworCXN1YmRhdGEgPSBpbnRlbF9i Yl9wdHIoaWJiKTsKKwltZW1jcHkoc3ViZGF0YSwgZGF0YSwgYnl0ZXMpOworCWludGVsX2JiX3B0 cl9hZGQoaWJiLCBieXRlcyk7CisKKwlyZXR1cm4gb2Zmc2V0OworfQorCit2b2lkIGludGVsX2Ji X2JsaXRfc3RhcnQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGZsYWdzKQoreworCWlu dGVsX2JiX291dChpYmIsIFhZX1NSQ19DT1BZX0JMVF9DTUQgfAorCQkgICAgIFhZX1NSQ19DT1BZ X0JMVF9XUklURV9BTFBIQSB8CisJCSAgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX1JHQiB8CisJ CSAgICAgKGZsYWdzKSB8CisJCSAgICAgKDYgKyAyKihpYmItPmdlbiA+PSA4KSkpOworfQorCit2 b2lkIGludGVsX2JiX2JsdF9jb3B5KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkgICAgICAgc3Ry dWN0IGludGVsX2J1ZiAqc3JjLAorCQkgICAgICAgaW50IHNyY194MSwgaW50IHNyY195MSwgaW50 IHNyY19waXRjaCwKKwkJICAgICAgIHN0cnVjdCBpbnRlbF9idWYgKmRzdCwKKwkJICAgICAgIGlu dCBkc3RfeDEsIGludCBkc3RfeTEsIGludCBkc3RfcGl0Y2gsCisJCSAgICAgICBpbnQgd2lkdGgs IGludCBoZWlnaHQsIGludCBicHApCit7CisJY29uc3QgaW50IGdlbiA9IGliYi0+Z2VuOworCXVp bnQzMl90IGNtZF9iaXRzID0gMDsKKwl1aW50MzJfdCBicjEzX2JpdHM7CisKKwlpZ3RfYXNzZXJ0 KGJwcCooc3JjX3gxICsgd2lkdGgpIDw9IDgqc3JjX3BpdGNoKTsKKwlpZ3RfYXNzZXJ0KGJwcCoo ZHN0X3gxICsgd2lkdGgpIDw9IDgqZHN0X3BpdGNoKTsKKwlpZ3RfYXNzZXJ0KHNyY19waXRjaCAq IChzcmNfeTEgKyBoZWlnaHQpIDw9IHNyYy0+c2l6ZSk7CisJaWd0X2Fzc2VydChkc3RfcGl0Y2gg KiAoZHN0X3kxICsgaGVpZ2h0KSA8PSBkc3QtPnNpemUpOworCisJaWYgKGdlbiA+PSA0ICYmIHNy Yy0+dGlsaW5nICE9IEk5MTVfVElMSU5HX05PTkUpIHsKKwkJc3JjX3BpdGNoIC89IDQ7CisJCWNt ZF9iaXRzIHw9IFhZX1NSQ19DT1BZX0JMVF9TUkNfVElMRUQ7CisJfQorCisJaWYgKGdlbiA+PSA0 ICYmIGRzdC0+dGlsaW5nICE9IEk5MTVfVElMSU5HX05PTkUpIHsKKwkJZHN0X3BpdGNoIC89IDQ7 CisJCWNtZF9iaXRzIHw9IFhZX1NSQ19DT1BZX0JMVF9EU1RfVElMRUQ7CisJfQorCisJQ0hFQ0tf UkFOR0Uoc3JjX3gxKTsgQ0hFQ0tfUkFOR0Uoc3JjX3kxKTsKKwlDSEVDS19SQU5HRShkc3RfeDEp OyBDSEVDS19SQU5HRShkc3RfeTEpOworCUNIRUNLX1JBTkdFKHdpZHRoKTsgQ0hFQ0tfUkFOR0Uo aGVpZ2h0KTsKKwlDSEVDS19SQU5HRShzcmNfeDEgKyB3aWR0aCk7IENIRUNLX1JBTkdFKHNyY195 MSArIGhlaWdodCk7CisJQ0hFQ0tfUkFOR0UoZHN0X3gxICsgd2lkdGgpOyBDSEVDS19SQU5HRShk c3RfeTEgKyBoZWlnaHQpOworCUNIRUNLX1JBTkdFKHNyY19waXRjaCk7IENIRUNLX1JBTkdFKGRz dF9waXRjaCk7CisKKwlicjEzX2JpdHMgPSAwOworCXN3aXRjaCAoYnBwKSB7CisJY2FzZSA4Ogor CQlicmVhazsKKwljYXNlIDE2OgkJLyogc3VwcG9ydGluZyBvbmx5IFJHQjU2NSwgbm90IEFSR0Ix NTU1ICovCisJCWJyMTNfYml0cyB8PSAxIDw8IDI0OworCQlicmVhazsKKwljYXNlIDMyOgorCQli cjEzX2JpdHMgfD0gMyA8PCAyNDsKKwkJY21kX2JpdHMgfD0gWFlfU1JDX0NPUFlfQkxUX1dSSVRF X0FMUEhBIHwKKwkJCSAgICBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfUkdCOworCQlicmVhazsKKwlk ZWZhdWx0OgorCQlpZ3RfZmFpbChJR1RfRVhJVF9GQUlMVVJFKTsKKwl9CisKKwlpbnRlbF9iYl9i bGl0X3N0YXJ0KGliYiwgY21kX2JpdHMpOworCWludGVsX2JiX291dChpYmIsIChicjEzX2JpdHMp IHwKKwkJICAoMHhjYyA8PCAxNikgfCAvKiBjb3B5IFJPUCAqLworCQkgIGRzdF9waXRjaCk7CisJ aW50ZWxfYmJfb3V0KGliYiwgKGRzdF95MSA8PCAxNikgfCBkc3RfeDEpOyAvKiBkc3QgeDEseTEg Ki8KKwlpbnRlbF9iYl9vdXQoaWJiLCAoKGRzdF95MSArIGhlaWdodCkgPDwgMTYpIHwgKGRzdF94 MSArIHdpZHRoKSk7IC8qIGRzdCB4Mix5MiAqLworCWludGVsX2JiX2VtaXRfcmVsb2NfZmVuY2Vk KGliYiwgZHN0LT5oYW5kbGUsCisJCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgSTkxNV9H RU1fRE9NQUlOX1JFTkRFUiwKKwkJCQkgICAwLCBkc3QtPmFkZHIub2Zmc2V0KTsKKwlpbnRlbF9i Yl9vdXQoaWJiLCAoc3JjX3kxIDw8IDE2KSB8IHNyY194MSk7IC8qIHNyYyB4MSx5MSAqLworCWlu dGVsX2JiX291dChpYmIsIHNyY19waXRjaCk7CisJaW50ZWxfYmJfZW1pdF9yZWxvY19mZW5jZWQo aWJiLCBzcmMtPmhhbmRsZSwKKwkJCQkgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSLCAwLAorCQkJ CSAgIDAsIHNyYy0+YWRkci5vZmZzZXQpOworCisjZGVmaW5lIENNRF9QT0xZX1NUSVBQTEVfT0ZG U0VUICAgICAgIDB4NzkwNgorCWlmIChnZW4gPT0gNSkgeworCQlpbnRlbF9iYl9vdXQoaWJiLCBD TURfUE9MWV9TVElQUExFX09GRlNFVCA8PCAxNik7CisJCWludGVsX2JiX291dChpYmIsIDApOwor CX0KKworCWlmIChnZW4gPj0gNiAmJiBzcmMtPmhhbmRsZSA9PSBkc3QtPmhhbmRsZSkgeworCQlp bnRlbF9iYl9vdXQoaWJiLCBYWV9TRVRVUF9DTElQX0JMVF9DTUQpOworCQlpbnRlbF9iYl9vdXQo aWJiLCAwKTsKKwkJaW50ZWxfYmJfb3V0KGliYiwgMCk7CisJfQorCisJaW50ZWxfYmJfZmx1c2go aWJiKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIGIvbGliL2ludGVs X2JhdGNoYnVmZmVyLmgKaW5kZXggMDY0OWZjMjIuLmQwYmQwMTk3IDEwMDY0NAotLS0gYS9saWIv aW50ZWxfYmF0Y2hidWZmZXIuaAorKysgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaApAQCAtNDMz LDYgKzQzMyw3IEBAIHN0cnVjdCBpbnRlbF9iYiB7CiAJaW50IGk5MTU7CiAJaW50IGdlbjsKIAli b29sIGRlYnVnOworCWJvb2wgZW5mb3JjZV9yZWxvY3M7CiAJdWludDMyX3QgZGV2aWQ7CiAJdWlu dDMyX3QgaGFuZGxlOwogCXVpbnQzMl90IHNpemU7CkBAIC00NTcsOSArNDU4LDEyIEBAIHN0cnVj dCBpbnRlbF9iYiB7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfYmIgKmludGVsX2JiX2NyZWF0ZShpbnQg aTkxNSwgdWludDMyX3Qgc2l6ZSk7Ci0KK3N0cnVjdCBpbnRlbF9iYiAqaW50ZWxfYmJfY3JlYXRl X3dpdGhfcmVsb2NzKGludCBpOTE1LCB1aW50MzJfdCBzaXplKTsKIHZvaWQgaW50ZWxfYmJfZGVz dHJveShzdHJ1Y3QgaW50ZWxfYmIgKmliYik7CiB2b2lkIGludGVsX2JiX3Jlc2V0KHN0cnVjdCBp bnRlbF9iYiAqaWJiLCBib29sIHB1cmdlX29iamVjdHNfY2FjaGUpOwordm9pZCBpbnRlbF9iYl9z eW5jKHN0cnVjdCBpbnRlbF9iYiAqaWJiKTsKK3ZvaWQgaW50ZWxfYmJfcHJpbnQoc3RydWN0IGlu dGVsX2JiICppYmIpOwordm9pZCBpbnRlbF9iYl9kdW1wKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBj b25zdCBjaGFyICpmaWxlbmFtZSk7CiB2b2lkIGludGVsX2JiX3NldF9kZWJ1ZyhzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgYm9vbCBkZWJ1Zyk7CiAKIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgaW50ZWxf YmJfb2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQpAQCAtNDc5LDEwICs0ODMsMjIgQEAgc3Rh dGljIGlubGluZSB2b2lkIGludGVsX2JiX3B0cl9hZGQoc3RydWN0IGludGVsX2JiICppYmIsIHVp bnQzMl90IG9mZnNldCkKIAlpbnRlbF9iYl9wdHJfc2V0KGliYiwgaW50ZWxfYmJfb2Zmc2V0KGli YikgKyBvZmZzZXQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfYmJfcHRyX2FsaWdu KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorc3RhdGljIGlubGluZSB1aW50MzJfdCBpbnRlbF9iYl9w dHJfYWRkX3JldHVybl9wcmV2X29mZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkJCQkg ICB1aW50MzJfdCBvZmZzZXQpCit7CisJdWludDMyX3QgcHJldmlvdXNfb2Zmc2V0ID0gaW50ZWxf YmJfb2Zmc2V0KGliYik7CisKKwlpbnRlbF9iYl9wdHJfc2V0KGliYiwgcHJldmlvdXNfb2Zmc2V0 ICsgb2Zmc2V0KTsKKworCXJldHVybiBwcmV2aW91c19vZmZzZXQ7Cit9CisKK3N0YXRpYyBpbmxp bmUgdm9pZCAqaW50ZWxfYmJfcHRyX2FsaWduKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogCQkJCSAg ICAgIHVpbnQzMl90IGFsaWdubWVudCkKIHsKIAlpbnRlbF9iYl9wdHJfc2V0KGliYiwgQUxJR04o aW50ZWxfYmJfb2Zmc2V0KGliYiksIGFsaWdubWVudCkpOworCisJcmV0dXJuICh2b2lkICopIGli Yi0+cHRyOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgKmludGVsX2JiX3B0cihzdHJ1Y3QgaW50 ZWxfYmIgKmliYikKQEAgLTUxMCw2ICs1MjYsMTMgQEAgdWludDY0X3QgaW50ZWxfYmJfZW1pdF9y ZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAkJCSB1aW50NjRfdCBkZWx0YSwKIAkJCSB1aW50 NjRfdCBwcmVzdW1lZF9vZmZzZXQpOwogCit1aW50NjRfdCBpbnRlbF9iYl9lbWl0X3JlbG9jX2Zl bmNlZChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkgICAgdWludDMyX3QgaGFuZGxlLAorCQkJ CSAgICB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkJICAgIHVpbnQzMl90IHdyaXRlX2RvbWFp biwKKwkJCQkgICAgdWludDY0X3QgZGVsdGEsCisJCQkJICAgIHVpbnQ2NF90IHByZXN1bWVkX29m ZnNldCk7CisKIHVpbnQ2NF90IGludGVsX2JiX29mZnNldF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIg KmliYiwKIAkJCSAgICAgICB1aW50MzJfdCBoYW5kbGUsCiAJCQkgICAgICAgdWludDMyX3QgcmVh ZF9kb21haW5zLApAQCAtNTE3LDYgKzU0MCwxNCBAQCB1aW50NjRfdCBpbnRlbF9iYl9vZmZzZXRf cmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsCiAJCQkgICAgICAgdWludDMyX3Qgb2Zmc2V0LAog CQkJICAgICAgIHVpbnQ2NF90IHByZXN1bWVkX29mZnNldCk7CiAKK3VpbnQ2NF90IGludGVsX2Ji X29mZnNldF9yZWxvY193aXRoX2RlbHRhKHN0cnVjdCBpbnRlbF9iYiAqaWJiLAorCQkJCQkgIHVp bnQzMl90IGhhbmRsZSwKKwkJCQkJICB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkJCSAgdWlu dDMyX3Qgd3JpdGVfZG9tYWluLAorCQkJCQkgIHVpbnQzMl90IGRlbHRhLAorCQkJCQkgIHVpbnQz Ml90IG9mZnNldCwKKwkJCQkJICB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQpOworCiBpbnQgX19p bnRlbF9iYl9leGVjKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBlbmRfb2Zmc2V0LAog CQkgICAgdWludDMyX3QgY3R4LCB1aW50NjRfdCBmbGFncywgYm9vbCBzeW5jKTsKIApAQCAtNTI5 LDQgKzU2MCwyMSBAQCB2b2lkIGludGVsX2JiX2V4ZWNfd2l0aF9jb250ZXh0KHN0cnVjdCBpbnRl bF9iYiAqaWJiLCB1aW50MzJfdCBlbmRfb2Zmc2V0LAogdWludDY0X3QgaW50ZWxfYmJfZ2V0X29i amVjdF9vZmZzZXQoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSk7CiBib29s IGludGVsX2JiX29iamVjdF9vZmZzZXRfdG9fYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1 Y3QgaW50ZWxfYnVmICpidWYpOwogCit1aW50MzJfdCBpbnRlbF9iYl9vdXRfZmx1c2goc3RydWN0 IGludGVsX2JiICppYmIpOwordm9pZCBpbnRlbF9iYl9mbHVzaF93aXRoX2NvbnRleHQoc3RydWN0 IGludGVsX2JiICppYmIsIHVpbnQzMl90IGN0eCk7Cit2b2lkIGludGVsX2JiX2ZsdXNoX29uX3Jp bmcoc3RydWN0IGludGVsX2JiICppYmIsIGludCByaW5nKTsKK3ZvaWQgaW50ZWxfYmJfZmx1c2go c3RydWN0IGludGVsX2JiICppYmIpOworCit1aW50MzJfdCBpbnRlbF9iYl9jb3B5X2RhdGEoc3Ry dWN0IGludGVsX2JiICppYmIsCisJCQkgICAgY29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50 IGJ5dGVzLAorCQkJICAgIHVpbnQzMl90IGFsaWduKTsKKwordm9pZCBpbnRlbF9iYl9ibGl0X3N0 YXJ0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBmbGFncyk7CisKK3ZvaWQgaW50ZWxf YmJfYmx0X2NvcHkoc3RydWN0IGludGVsX2JiICppYmIsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxf YnVmICpzcmMsCisJCSAgICAgICBpbnQgc3JjX3gxLCBpbnQgc3JjX3kxLCBpbnQgc3JjX3BpdGNo LAorCQkgICAgICAgc3RydWN0IGludGVsX2J1ZiAqZHN0LAorCQkgICAgICAgaW50IGRzdF94MSwg aW50IGRzdF95MSwgaW50IGRzdF9waXRjaCwKKwkJICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdo dCwgaW50IGJwcCk7CiAjZW5kaWYKLS0gCjIuMjYuMAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pZ3QtZGV2Cg==