From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5F6A6E0E2 for ; Sun, 2 Aug 2020 16:30:16 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Sun, 2 Aug 2020 18:29:48 +0200 Message-Id: <20200802163002.5815-5-zbigniew.kempczynski@intel.com> In-Reply-To: <20200802163002.5815-1-zbigniew.kempczynski@intel.com> References: <20200802163002.5815-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v23 04/18] lib/intel_batchbuffer: add new functions to support rendercopy 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: VG8gY292ZXIgcmVuZGVyY29weSBpbiBkZXBlbmRlbnQgdGVzdHMgd2UgbmVlZCB0byBhZGQgdGhl IGZvbGxvd2luZzoKCjEuIHJlbG9jYXRpb24gaW4gYW55IGhhbmRsZQogICBQcmV2aW91c2x5IGJh dGNoYnVmZmVyIHdhcyB0aGUgbWFpbiB0YXJnZXQgb2YgcmVsb2NhdGlvbnMuIEFzIEFVWAogICB0 YWJsZSByZXF1aXJlIHJlbG9jYXRpb25zIHRvbyBhZGQgc3VwcG9ydCBmb3IgdGhhdCBpbiBpbnRl bF9iYgoKMi4gc2V0L2dldCBkZWZhdWx0IGFsaWdubWVudAogICBBZGQgZGVmYXVsdCBhbGlnbm1l bnQgZm9yIG9iamVjdHMgYWRkZWQgdG8gaW50ZWxfYmIgKEFVWCB0YWJsZXMgdXNlCiAgIGRpZmZl cmVudCBhbGlnbm1lbnQgZm9yIGRpZmZlcmVudCBvYmplY3RzKQoKMy4gYWRkIGludGVsX2J1ZiB0 byBpbnRlbF9iYgogICBTYXZlIHByb3Bvc2VkIGFkZHJlc3MgdG8gaW50ZWxfYnVmLCBjbGVhciBm bGFncyBvbiByZXNldAoKNC4gYWRkIHNldC9jbGVhciBmbGFnIGZ1bmN0aW9ucwoKNS4gdW5pZmlj YXRpb24gb2YgaW50ZWxfYmJfZmx1c2guKigpIGZ1bmN0aW9ucwoKNi4gZml4aW5nIGluZGVudGF0 aW9uCgo3LiBjaGFuZ2UgYWxpZ25tZW50IGNvbnN0cmFpbnRzIG9uIGdlbjMKClNpZ25lZC1vZmYt Ynk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5za2lAaW50ZWwuY29t PgpDYzogRG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdyemVnb3J6ZWtAaW50ZWwuY29tPgpD YzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogbGliL2ludGVs X2JhdGNoYnVmZmVyLmMgfCAzNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmggfCAgNDMgKysrKy0KIDIgZmlsZXMgY2hhbmdl ZCwgMzQxIGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9p bnRlbF9iYXRjaGJ1ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKaW5kZXggOTljMmUx NDguLjM2MTk4ZDQxIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYworKysgYi9s aWIvaW50ZWxfYmF0Y2hidWZmZXIuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImRybXRl c3QuaCIKICNpbmNsdWRlICJpbnRlbF9iYXRjaGJ1ZmZlci5oIgogI2luY2x1ZGUgImludGVsX2J1 Zm1nci5oIgorI2luY2x1ZGUgImludGVsX2J1Zm9wcy5oIgogI2luY2x1ZGUgImludGVsX2NoaXBz ZXQuaCIKICNpbmNsdWRlICJpbnRlbF9yZWcuaCIKICNpbmNsdWRlICJ2ZWJveGNvcHkuaCIKQEAg LTEyMTQsNiArMTIxNSw3IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgX19pbnRlbF9iYl9wcm9w b3NlX29mZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIAlvZmZzZXQgPSBoYXJzX3BldHJ1c2th X2Y1NF8xX3JhbmRvbTY0KCZpYmItPnBybmcpOwogCW9mZnNldCArPSAyNTYgPDwgMTA7IC8qIEtl ZXAgdGhlIGxvdyAyNTZrIGNsZWFyLCBmb3IgbmVnYXRpdmUgZGVsdGFzICovCiAJb2Zmc2V0ICY9 IGliYi0+Z3R0X3NpemUgLSAxOworCW9mZnNldCAmPSB+KGliYi0+YWxpZ25tZW50IC0gMSk7CiAK IAlyZXR1cm4gb2Zmc2V0OwogfQpAQCAtMTIzMiw3ICsxMjM0LDYgQEAgX19pbnRlbF9iYl9jcmVh dGUoaW50IGk5MTUsIHVpbnQzMl90IHNpemUsIGJvb2wgZG9fcmVsb2NzKQogewogCXN0cnVjdCBp bnRlbF9iYiAqaWJiID0gY2FsbG9jKDEsIHNpemVvZigqaWJiKSk7CiAJdWludDY0X3QgZ3R0X3Np emU7Ci0JdWludDY0X3QgYmJfYWRkcmVzczsKIAogCWlndF9hc3NlcnQoaWJiKTsKIApAQCAtMTI0 Miw2ICsxMjQzLDcgQEAgX19pbnRlbF9iYl9jcmVhdGUoaW50IGk5MTUsIHVpbnQzMl90IHNpemUs IGJvb2wgZG9fcmVsb2NzKQogCWliYi0+ZW5mb3JjZV9yZWxvY3MgPSBkb19yZWxvY3M7CiAJaWJi LT5oYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIHNpemUpOwogCWliYi0+c2l6ZSA9IHNpemU7CisJ aWJiLT5hbGlnbm1lbnQgPSA0MDk2OwogCWliYi0+YmF0Y2ggPSBjYWxsb2MoMSwgc2l6ZSk7CiAJ aWd0X2Fzc2VydChpYmItPmJhdGNoKTsKIAlpYmItPnB0ciA9IGliYi0+YmF0Y2g7CkBAIC0xMjUz LDExICsxMjU1LDEyIEBAIF9faW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJfdCBzaXpl LCBib29sIGRvX3JlbG9jcykKIAkJZ3R0X3NpemUgLz0gMjsKIAlpZiAoKGd0dF9zaXplIC0gMSkg Pj4gMzIpCiAJCWliYi0+c3VwcG9ydHNfNDhiX2FkZHJlc3MgPSB0cnVlOworCiAJaWJiLT5ndHRf c2l6ZSA9IGd0dF9zaXplOwogCiAJX19yZWFsbG9jYXRlX29iamVjdHMoaWJiKTsKLQliYl9hZGRy ZXNzID0gX19pbnRlbF9iYl9wcm9wb3NlX29mZnNldChpYmIpOwotCWludGVsX2JiX2FkZF9vYmpl Y3QoaWJiLCBpYmItPmhhbmRsZSwgYmJfYWRkcmVzcywgZmFsc2UpOworCWliYi0+YmF0Y2hfb2Zm c2V0ID0gX19pbnRlbF9iYl9wcm9wb3NlX29mZnNldChpYmIpOworCWludGVsX2JiX2FkZF9vYmpl Y3QoaWJiLCBpYmItPmhhbmRsZSwgaWJiLT5iYXRjaF9vZmZzZXQsIGZhbHNlKTsKIAogCWliYi0+ cmVmY291bnQgPSAxOwogCkBAIC0xMzY0LDcgKzEzNjcsNyBAQCB2b2lkIGludGVsX2JiX2Rlc3Ry b3koc3RydWN0IGludGVsX2JiICppYmIpCiAqLwogdm9pZCBpbnRlbF9iYl9yZXNldChzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwgYm9vbCBwdXJnZV9vYmplY3RzX2NhY2hlKQogewotCXVpbnQ2NF90IGJi X2FkZHJlc3M7CisJdWludDMyX3QgaTsKIAogCWlmIChwdXJnZV9vYmplY3RzX2NhY2hlICYmIGli Yi0+cmVmY291bnQgPiAxKQogCQlpZ3Rfd2FybigiQ2Fubm90IHB1cmdlIG9iamVjdHMgY2FjaGUg b24gYmIsIHJlZmNvdW50ID4gMSEiKTsKQEAgLTEzODMsMTAgKzEzODYsMjAgQEAgdm9pZCBpbnRl bF9iYl9yZXNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgYm9vbCBwdXJnZV9vYmplY3RzX2NhY2hl KQogCWdlbV9jbG9zZShpYmItPmk5MTUsIGliYi0+aGFuZGxlKTsKIAlpYmItPmhhbmRsZSA9IGdl bV9jcmVhdGUoaWJiLT5pOTE1LCBpYmItPnNpemUpOwogCi0JYmJfYWRkcmVzcyA9IF9faW50ZWxf YmJfcHJvcG9zZV9vZmZzZXQoaWJiKTsKLQlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaWJiLT5o YW5kbGUsIGJiX2FkZHJlc3MsIGZhbHNlKTsKKwlpYmItPmJhdGNoX29mZnNldCA9IF9faW50ZWxf YmJfcHJvcG9zZV9vZmZzZXQoaWJiKTsKKwlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgaWJiLT5o YW5kbGUsIGliYi0+YmF0Y2hfb2Zmc2V0LCBmYWxzZSk7CiAJaWJiLT5wdHIgPSBpYmItPmJhdGNo OwogCW1lbXNldChpYmItPmJhdGNoLCAwLCBpYmItPnNpemUpOworCisJaWYgKHB1cmdlX29iamVj dHNfY2FjaGUpCisJCXJldHVybjsKKworCS8qCisJICogRm9yIHJlc2V0IHdpdGggbm8gcHVyZ2lu ZyBjYWNoZSBlbnN1cmUgd2Uga2VlcCBvbmx5IHN1cHBvcnRzIDQ4Yml0CisJICogYWRkcmVzcyBm bGFnICh3ZSBkb24ndCB3YW50IHRvIHJlbG9jYXRlKS4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwg aWJiLT5udW1fb2JqZWN0czsgaSsrKQorCQlpYmItPm9iamVjdHNbaV0uZmxhZ3MgJj0gRVhFQ19P QkpFQ1RfU1VQUE9SVFNfNDhCX0FERFJFU1M7CiB9CiAKIC8qCkBAIC0xNDk5LDYgKzE1MTIsNyBA QCBpbnRlbF9iYl9hZGRfb2JqZWN0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5k bGUsCiAJb2JqZWN0ID0gJmliYi0+b2JqZWN0c1tpXTsKIAlvYmplY3QtPmhhbmRsZSA9IGhhbmRs ZTsKIAlvYmplY3QtPm9mZnNldCA9IG9mZnNldDsKKwlvYmplY3QtPmFsaWdubWVudCA9IGliYi0+ YWxpZ25tZW50OwogCiAJZm91bmQgPSB0c2VhcmNoKCh2b2lkICopIG9iamVjdCwgJmliYi0+cm9v dCwgX19jb21wYXJlX29iamVjdHMpOwogCkBAIC0xNTE5LDcgKzE1MzMsNjYgQEAgaW50ZWxfYmJf YWRkX29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLAogCXJldHVy biBvYmplY3Q7CiB9CiAKLXN0YXRpYyBib29sIGludGVsX2JiX29iamVjdF9zZXRfZmVuY2Uoc3Ry dWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKK3N0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyICoKK2ludGVsX2JiX2FkZF9pbnRlbF9idWYoc3RydWN0IGludGVsX2JiICpp YmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgYm9vbCB3cml0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2JqOworCisJb2JqID0gaW50ZWxfYmJfYWRkX29iamVjdChp YmIsIGJ1Zi0+aGFuZGxlLCBidWYtPmFkZHIub2Zmc2V0LCB3cml0ZSk7CisKKwkvKiBGb3IgY29t cHJlc3NlZCBzdXJmYWNlcyBlbnN1cmUgYWRkcmVzcyBpcyBhbGlnbmVkIHRvIDY0S0IgKi8KKwlp ZiAoaWJiLT5nZW4gPj0gMTIgJiYgYnVmLT5jb21wcmVzc2lvbikgeworCQlvYmotPm9mZnNldCAm PSB+KDB4MTAwMDAgLSAxKTsKKwkJb2JqLT5hbGlnbm1lbnQgPSAweDEwMDAwOworCX0KKworCS8q IEZvciBnZW4zIGVuc3VyZSB0aWxlZCBidWZmZXJzIGFyZSBhbGlnbmVkIHRvIHBvd2VyIG9mIHR3 byBzaXplICovCisJaWYgKGliYi0+Z2VuID09IDMgJiYgYnVmLT50aWxpbmcpIHsKKwkJdWludDY0 X3QgYWxpZ25tZW50ID0gMTAyNCAqIDEwMjQ7CisKKwkJd2hpbGUgKGFsaWdubWVudCA8IGJ1Zi0+ c3VyZmFjZVswXS5zaXplKQorCQkJYWxpZ25tZW50IDw8PSAxOworCQlvYmotPm9mZnNldCAmPSB+ KGFsaWdubWVudCAtIDEpOworCQlvYmotPmFsaWdubWVudCA9IGFsaWdubWVudDsKKwl9CisKKwkv KiBVcGRhdGUgYWRkcmVzcyBpbiBpbnRlbF9idWYgYnVmZmVyICovCisJYnVmLT5hZGRyLm9mZnNl dCA9IG9iai0+b2Zmc2V0OworCisJcmV0dXJuIG9iajsKK30KKworc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgKgoraW50ZWxfYmJfZmluZF9vYmplY3Qoc3RydWN0IGludGVsX2JiICpp YmIsIHVpbnQzMl90IGhhbmRsZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0 MiBvYmplY3QgPSB7IC5oYW5kbGUgPSBoYW5kbGUgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNfb2JqZWN0MiAqKmZvdW5kOworCisJZm91bmQgPSB0ZmluZCgodm9pZCAqKSAmb2JqZWN0LCAm aWJiLT5yb290LCBfX2NvbXBhcmVfb2JqZWN0cyk7CisKKwlyZXR1cm4gKmZvdW5kOworfQorCiti b29sCitpbnRlbF9iYl9vYmplY3Rfc2V0X2ZsYWcoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQz Ml90IGhhbmRsZSwgdWludDY0X3QgZmxhZykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNf b2JqZWN0MiBvYmplY3QgPSB7IC5oYW5kbGUgPSBoYW5kbGUgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiAqKmZvdW5kOworCisJZm91bmQgPSB0ZmluZCgodm9pZCAqKSAmb2Jq ZWN0LCAmaWJiLT5yb290LCBfX2NvbXBhcmVfb2JqZWN0cyk7CisJaWYgKCFmb3VuZCkgeworCQlp Z3Rfd2FybigiVHJ5aW5nIHRvIHNldCBmZW5jZSBvbiBub3QgZm91bmQgaGFuZGxlOiAldVxuIiwK KwkJCSBoYW5kbGUpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJKCpmb3VuZCktPmZsYWdzIHw9 IGZsYWc7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworYm9vbAoraW50ZWxfYmJfb2JqZWN0X2NsZWFy X2ZsYWcoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3QgZmxh ZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmplY3QgPSB7IC5oYW5k bGUgPSBoYW5kbGUgfTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqKmZvdW5k OwpAQCAtMTUzMSw3ICsxNjA0LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfYmJfb2JqZWN0X3NldF9m ZW5jZShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKQogCQlyZXR1cm4gZmFs c2U7CiAJfQogCi0JKCpmb3VuZCktPmZsYWdzIHw9IEVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOwor CSgqZm91bmQpLT5mbGFncyAmPSB+ZmxhZzsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtMTUzOSw3 ICsxNjEyLDggQEAgc3RhdGljIGJvb2wgaW50ZWxfYmJfb2JqZWN0X3NldF9mZW5jZShzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKQogLyoKICAqIGludGVsX2JiX2FkZF9yZWxv YzoKICAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKLSAqIEBoYW5kbGU6IG9iamVjdCBoYW5k bGUgd2hpY2ggYWRkcmVzcyB3aWxsIGJlIHRha2VuIHRvIHBhdGNoIHRoZSBiYgorICogQHRvX2hh bmRsZTogb2JqZWN0IGhhbmRsZSBpbiB3aGljaCBkbyByZWxvY2F0aW9uCisgKiBAaGFuZGxlOiBv YmplY3QgaGFuZGxlIHdoaWNoIGFkZHJlc3Mgd2lsbCBiZSB0YWtlbiB0byBwYXRjaCB0aGUgQHRv X2hhbmRsZQogICogQHJlYWRfZG9tYWluczogZ2VtIGRvbWFpbiBiaXRzIGZvciB0aGUgcmVsb2Nh dGlvbgogICogQHdyaXRlX2RvbWFpbjogZ2VtIGRvbWFpbiBiaXQgZm9yIHRoZSByZWxvY2F0aW9u CiAgKiBAZGVsdGE6IGRlbHRhIHZhbHVlIHRvIGFkZCB0byBAYnVmZmVyJ3MgZ3B1IGFkZHJlc3MK QEAgLTE1NTQsNiArMTYyOCw3IEBAIHN0YXRpYyBib29sIGludGVsX2JiX29iamVjdF9zZXRfZmVu Y2Uoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGhhbmRsZSkKICAqIGV4aXN0cyBidXQg ZG9lc24ndCBtYXJrIGl0IGFzIGEgcmVuZGVyIHRhcmdldC4KICAqLwogc3RhdGljIHVpbnQ2NF90 IGludGVsX2JiX2FkZF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkgICB1aW50MzJf dCB0b19oYW5kbGUsCiAJCQkJICAgdWludDMyX3QgaGFuZGxlLAogCQkJCSAgIHVpbnQzMl90IHJl YWRfZG9tYWlucywKIAkJCQkgICB1aW50MzJfdCB3cml0ZV9kb21haW4sCkBAIC0xNTYyLDIwICsx NjM3LDMyIEBAIHN0YXRpYyB1aW50NjRfdCBpbnRlbF9iYl9hZGRfcmVsb2Moc3RydWN0IGludGVs X2JiICppYmIsCiAJCQkJICAgdWludDY0X3QgcHJlc3VtZWRfb2Zmc2V0KQogewogCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2NzOwotCXN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY19vYmplY3QyICpvYmplY3Q7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgKm9iamVjdCwgKnRvX29iamVjdDsKIAl1aW50MzJfdCBpOwogCiAJb2JqZWN0ID0gaW50ZWxf YmJfYWRkX29iamVjdChpYmIsIGhhbmRsZSwgcHJlc3VtZWRfb2Zmc2V0LCBmYWxzZSk7CiAKLQly ZWxvY3MgPSBpYmItPnJlbG9jczsKLQlpZiAoaWJiLT5udW1fcmVsb2NzID09IGliYi0+YWxsb2Nh dGVkX3JlbG9jcykgewotCQlpYmItPmFsbG9jYXRlZF9yZWxvY3MgKz0gNDA5NiAvIHNpemVvZigq cmVsb2NzKTsKLQkJcmVsb2NzID0gcmVhbGxvYyhyZWxvY3MsIHNpemVvZigqcmVsb2NzKSAqIGli Yi0+YWxsb2NhdGVkX3JlbG9jcyk7CisJLyogRm9yIGliYiB3ZSBoYXZlIHJlbG9jcyBhbGxvY2F0 ZWQgaW4gY2h1bmtzICovCisJaWYgKHRvX2hhbmRsZSA9PSBpYmItPmhhbmRsZSkgeworCQlyZWxv Y3MgPSBpYmItPnJlbG9jczsKKwkJaWYgKGliYi0+bnVtX3JlbG9jcyA9PSBpYmItPmFsbG9jYXRl ZF9yZWxvY3MpIHsKKwkJCWliYi0+YWxsb2NhdGVkX3JlbG9jcyArPSA0MDk2IC8gc2l6ZW9mKCpy ZWxvY3MpOworCQkJcmVsb2NzID0gcmVhbGxvYyhyZWxvY3MsIHNpemVvZigqcmVsb2NzKSAqIGli Yi0+YWxsb2NhdGVkX3JlbG9jcyk7CisJCQlpZ3RfYXNzZXJ0KHJlbG9jcyk7CisJCQlpYmItPnJl bG9jcyA9IHJlbG9jczsKKwkJfQorCQlpID0gaWJiLT5udW1fcmVsb2NzKys7CisJfSBlbHNlIHsK KwkJdG9fb2JqZWN0ID0gaW50ZWxfYmJfZmluZF9vYmplY3QoaWJiLCB0b19oYW5kbGUpOworCQlp Z3RfYXNzZXJ0X2YodG9fb2JqZWN0LCAib2JqZWN0IGhhcyB0byBiZSBhZGRlZCB0byBpYmIgZmly c3QhXG4iKTsKKworCQlpID0gdG9fb2JqZWN0LT5yZWxvY2F0aW9uX2NvdW50Kys7CisJCXJlbG9j cyA9IGZyb21fdXNlcl9wb2ludGVyKHRvX29iamVjdC0+cmVsb2NzX3B0cik7CisJCXJlbG9jcyA9 IHJlYWxsb2MocmVsb2NzLCBzaXplb2YoKnJlbG9jcykgKiB0b19vYmplY3QtPnJlbG9jYXRpb25f Y291bnQpOworCQl0b19vYmplY3QtPnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2Nz KTsKIAkJaWd0X2Fzc2VydChyZWxvY3MpOwotCQlpYmItPnJlbG9jcyA9IHJlbG9jczsKIAl9CiAK LQlpID0gaWJiLT5udW1fcmVsb2NzKys7CiAJbWVtc2V0KCZyZWxvY3NbaV0sIDAsIHNpemVvZigq cmVsb2NzKSk7CiAJcmVsb2NzW2ldLnRhcmdldF9oYW5kbGUgPSBoYW5kbGU7CiAJcmVsb2NzW2ld LnJlYWRfZG9tYWlucyA9IHJlYWRfZG9tYWluczsKQEAgLTE1ODcsMTcgKzE2NzQsNDIgQEAgc3Rh dGljIHVpbnQ2NF90IGludGVsX2JiX2FkZF9yZWxvYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAll bHNlCiAJCXJlbG9jc1tpXS5wcmVzdW1lZF9vZmZzZXQgPSBvYmplY3QtPm9mZnNldDsKIAotCWln dF9kZWJ1ZygiYWRkIHJlbG9jOiBoYW5kbGU6ICV1LCByL3c6IDB4JXgvMHgleCwgIgorCWlndF9k ZWJ1ZygiYWRkIHJlbG9jOiB0b19oYW5kbGU6ICV1LCBoYW5kbGU6ICV1LCByL3c6IDB4JXgvMHgl eCwgIgogCQkgICJkZWx0YTogMHglIiBQUkl4NjQgIiwgIgogCQkgICJvZmZzZXQ6IDB4JSIgUFJJ eDY0ICIsICIKIAkJICAicG9mZnNldDogJXBcbiIsCi0JCSAgaGFuZGxlLCByZWFkX2RvbWFpbnMs IHdyaXRlX2RvbWFpbiwKKwkJICB0b19oYW5kbGUsIGhhbmRsZSwgcmVhZF9kb21haW5zLCB3cml0 ZV9kb21haW4sCiAJCSAgZGVsdGEsIG9mZnNldCwKIAkJICBmcm9tX3VzZXJfcG9pbnRlcihyZWxv Y3NbaV0ucHJlc3VtZWRfb2Zmc2V0KSk7CiAKIAlyZXR1cm4gb2JqZWN0LT5vZmZzZXQ7CiB9CiAK K3N0YXRpYyB1aW50NjRfdCBfX2ludGVsX2JiX2VtaXRfcmVsb2Moc3RydWN0IGludGVsX2JiICpp YmIsCisJCQkJICAgICAgdWludDMyX3QgdG9faGFuZGxlLAorCQkJCSAgICAgIHVpbnQzMl90IHRv X29mZnNldCwKKwkJCQkgICAgICB1aW50MzJfdCBoYW5kbGUsCisJCQkJICAgICAgdWludDMyX3Qg cmVhZF9kb21haW5zLAorCQkJCSAgICAgIHVpbnQzMl90IHdyaXRlX2RvbWFpbiwKKwkJCQkgICAg ICB1aW50NjRfdCBkZWx0YSwKKwkJCQkgICAgICB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQpCit7 CisJdWludDY0X3QgYWRkcmVzczsKKworCWlndF9hc3NlcnQoaWJiKTsKKworCWFkZHJlc3MgPSBp bnRlbF9iYl9hZGRfcmVsb2MoaWJiLCB0b19oYW5kbGUsIGhhbmRsZSwKKwkJCQkgICAgIHJlYWRf ZG9tYWlucywgd3JpdGVfZG9tYWluLAorCQkJCSAgICAgZGVsdGEsIHRvX29mZnNldCwKKwkJCQkg ICAgIHByZXN1bWVkX29mZnNldCk7CisKKwlpbnRlbF9iYl9vdXQoaWJiLCBkZWx0YSArIGFkZHJl c3MpOworCWlmIChpYmItPmdlbiA+PSA4KQorCQlpbnRlbF9iYl9vdXQoaWJiLCBhZGRyZXNzID4+ IDMyKTsKKworCXJldHVybiBhZGRyZXNzOworfQorCiAvKioKICAqIGludGVsX2JiX2VtaXRfcmVs b2M6CiAgKiBAaWJiOiBwb2ludGVyIHRvIGludGVsX2JiCkBAIC0xNjI2LDE5ICsxNzM4LDExIEBA IHVpbnQ2NF90IGludGVsX2JiX2VtaXRfcmVsb2Moc3RydWN0IGludGVsX2JiICppYmIsCiAJCQkg ICAgIHVpbnQ2NF90IGRlbHRhLAogCQkJICAgICB1aW50NjRfdCBwcmVzdW1lZF9vZmZzZXQpCiB7 Ci0JdWludDY0X3QgYWRkcmVzczsKLQogCWlndF9hc3NlcnQoaWJiKTsKIAotCWFkZHJlc3MgPSBp bnRlbF9iYl9hZGRfcmVsb2MoaWJiLCBoYW5kbGUsIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWlu LAotCQkJCSAgICAgZGVsdGEsIGludGVsX2JiX29mZnNldChpYmIpLAotCQkJCSAgICAgcHJlc3Vt ZWRfb2Zmc2V0KTsKLQotCWludGVsX2JiX291dChpYmIsIGRlbHRhICsgYWRkcmVzcyk7Ci0JaWYg KGliYi0+Z2VuID49IDgpCi0JCWludGVsX2JiX291dChpYmIsIGFkZHJlc3MgPj4gMzIpOwotCi0J cmV0dXJuIGFkZHJlc3M7CisJcmV0dXJuIF9faW50ZWxfYmJfZW1pdF9yZWxvYyhpYmIsIGliYi0+ aGFuZGxlLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwKKwkJCQkgICAgIGhhbmRsZSwgcmVhZF9kb21h aW5zLCB3cml0ZV9kb21haW4sCisJCQkJICAgICBkZWx0YSwgcHJlc3VtZWRfb2Zmc2V0KTsKIH0K IAogdWludDY0X3QgaW50ZWxfYmJfZW1pdF9yZWxvY19mZW5jZWQoc3RydWN0IGludGVsX2JiICpp YmIsCkBAIC0xNjUzLDcgKzE3NTcsNyBAQCB1aW50NjRfdCBpbnRlbF9iYl9lbWl0X3JlbG9jX2Zl bmNlZChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAlhZGRyZXNzID0gaW50ZWxfYmJfZW1pdF9yZWxv YyhpYmIsIGhhbmRsZSwgcmVhZF9kb21haW5zLCB3cml0ZV9kb21haW4sCiAJCQkJICAgICAgZGVs dGEsIHByZXN1bWVkX29mZnNldCk7CiAKLQlpbnRlbF9iYl9vYmplY3Rfc2V0X2ZlbmNlKGliYiwg aGFuZGxlKTsKKwlpbnRlbF9iYl9vYmplY3Rfc2V0X2ZsYWcoaWJiLCBoYW5kbGUsIEVYRUNfT0JK RUNUX05FRURTX0ZFTkNFKTsKIAogCXJldHVybiBhZGRyZXNzOwogfQpAQCAtMTY4Niw3ICsxNzkw LDggQEAgdWludDY0X3QgaW50ZWxfYmJfb2Zmc2V0X3JlbG9jKHN0cnVjdCBpbnRlbF9iYiAqaWJi LAogewogCWlndF9hc3NlcnQoaWJiKTsKIAotCXJldHVybiBpbnRlbF9iYl9hZGRfcmVsb2MoaWJi LCBoYW5kbGUsIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluLAorCXJldHVybiBpbnRlbF9iYl9h ZGRfcmVsb2MoaWJiLCBpYmItPmhhbmRsZSwgaGFuZGxlLAorCQkJCSAgcmVhZF9kb21haW5zLCB3 cml0ZV9kb21haW4sCiAJCQkJICAwLCBvZmZzZXQsIHByZXN1bWVkX29mZnNldCk7CiB9CiAKQEAg LTE3MDAsNyArMTgwNSwyNCBAQCB1aW50NjRfdCBpbnRlbF9iYl9vZmZzZXRfcmVsb2Nfd2l0aF9k ZWx0YShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIHsKIAlpZ3RfYXNzZXJ0KGliYik7CiAKLQlyZXR1 cm4gaW50ZWxfYmJfYWRkX3JlbG9jKGliYiwgaGFuZGxlLCByZWFkX2RvbWFpbnMsIHdyaXRlX2Rv bWFpbiwKKwlyZXR1cm4gaW50ZWxfYmJfYWRkX3JlbG9jKGliYiwgaWJiLT5oYW5kbGUsIGhhbmRs ZSwKKwkJCQkgIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluLAorCQkJCSAgZGVsdGEsIG9mZnNl dCwgcHJlc3VtZWRfb2Zmc2V0KTsKK30KKwordWludDY0X3QgaW50ZWxfYmJfb2Zmc2V0X3JlbG9j X3RvX29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkJIHVpbnQzMl90IHRvX2hhbmRs ZSwKKwkJCQkJIHVpbnQzMl90IGhhbmRsZSwKKwkJCQkJIHVpbnQzMl90IHJlYWRfZG9tYWlucywK KwkJCQkJIHVpbnQzMl90IHdyaXRlX2RvbWFpbiwKKwkJCQkJIHVpbnQzMl90IGRlbHRhLAorCQkJ CQkgdWludDMyX3Qgb2Zmc2V0LAorCQkJCQkgdWludDY0X3QgcHJlc3VtZWRfb2Zmc2V0KQorewor CWlndF9hc3NlcnQoaWJiKTsKKworCXJldHVybiBpbnRlbF9iYl9hZGRfcmVsb2MoaWJiLCB0b19o YW5kbGUsIGhhbmRsZSwKKwkJCQkgIHJlYWRfZG9tYWlucywgd3JpdGVfZG9tYWluLAogCQkJCSAg ZGVsdGEsIG9mZnNldCwgcHJlc3VtZWRfb2Zmc2V0KTsKIH0KIApAQCAtMTk1NSwxNiArMjA3Nywz OCBAQCB1aW50MzJfdCBpbnRlbF9iYl9lbWl0X2JiZShzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIH0K IAogLyoKLSAqIGludGVsX2JiX2ZsdXNoX3dpdGhfY29udGV4dF9yaW5nOgorICogaW50ZWxfYmJf ZW1pdF9mbHVzaF9jb21tb246CiAgKiBAaWJiOiBiYXRjaGJ1ZmZlcgotICogQGN0eDogY29udGV4 dCBpZAotICogQHJpbmc6IHJpbmcKICAqCi0gKiBTdWJtaXRzIHRoZSBiYXRjaCBmb3IgZXhlY3V0 aW9uIG9uIHRoZSBAcmluZyBlbmdpbmUgd2l0aCB0aGUgc3VwcGxpZWQKLSAqIGhhcmR3YXJlIGNv bnRleHQgQGN0eC4KKyAqIEVtaXRzIGluc3RydWN0aW9ucyB3aGljaCBjb21wbGV0ZXMgYmF0Y2gg YnVmZmVyLgorICoKKyAqIFJldHVybnM6IG9mZnNldCBpbiBiYXRjaCBidWZmZXIgd2hlcmUgdGhl cmUncyBlbmQgb2YgaW5zdHJ1Y3Rpb25zLgogICovCi1zdGF0aWMgdm9pZCBpbnRlbF9iYl9mbHVz aF93aXRoX2NvbnRleHRfcmluZyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKLQkJCQkJICAgICB1aW50 MzJfdCBjdHgsIHVpbnQzMl90IHJpbmcpCit1aW50MzJfdCBpbnRlbF9iYl9lbWl0X2ZsdXNoX2Nv bW1vbihzdHJ1Y3QgaW50ZWxfYmIgKmliYikKK3sKKwlpZiAoaW50ZWxfYmJfb2Zmc2V0KGliYikg PT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoaWJiLT5nZW4gPT0gNSkgeworCQkvKgorCQkgKiBl bWl0IGdlbjUgdy9hIHdpdGhvdXQgYmF0Y2ggc3BhY2UgY2hlY2tzIC0gd2UgcmVzZXJ2ZSB0aGF0 CisJCSAqIGFscmVhZHkuCisJCSAqLworCQlpbnRlbF9iYl9vdXQoaWJiLCBDTURfUE9MWV9TVElQ UExFX09GRlNFVCA8PCAxNik7CisJCWludGVsX2JiX291dChpYmIsIDApOworCX0KKworCS8qIFJv dW5kIGJhdGNoYnVmZmVyIHVzYWdlIHRvIDIgRFdPUkRzLiAqLworCWlmICgoaW50ZWxfYmJfb2Zm c2V0KGliYikgJiA0KSA9PSAwKQorCQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKworCWludGVsX2Ji X2VtaXRfYmJlKGliYik7CisKKwlyZXR1cm4gaW50ZWxfYmJfb2Zmc2V0KGliYik7Cit9CisKK3N0 YXRpYyB2b2lkIGludGVsX2JiX2V4ZWNfd2l0aF9jb250ZXh0X3Jpbmcoc3RydWN0IGludGVsX2Ji ICppYmIsCisJCQkJCSAgICB1aW50MzJfdCBjdHgsIHVpbnQzMl90IHJpbmcpCiB7CiAJaW50ZWxf YmJfZXhlY193aXRoX2NvbnRleHQoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwgY3R4LAogCQkJ CSAgIHJpbmcgfCBJOTE1X0VYRUNfTk9fUkVMT0MsCkBAIC0xOTcyLDIzICsyMTE2LDEwOSBAQCBz dGF0aWMgdm9pZCBpbnRlbF9iYl9mbHVzaF93aXRoX2NvbnRleHRfcmluZyhzdHJ1Y3QgaW50ZWxf YmIgKmliYiwKIAlpbnRlbF9iYl9yZXNldChpYmIsIGZhbHNlKTsKIH0KIAotdm9pZCBpbnRlbF9i Yl9mbHVzaF9yZW5kZXIoc3RydWN0IGludGVsX2JiICppYmIpCisvKgorICogaW50ZWxfYmJfZmx1 c2g6CisgKiBAaWJiOiBiYXRjaGJ1ZmZlcgorICogQGN0eDogY29udGV4dAorICogQHJpbmc6IHJp bmcKKyAqCisgKiBJZiBiYXRjaCBpcyBub3QgZW1wdHkgZW1pdCBiYXRjaCBidWZmZXIgZW5kLCBl eGVjdXRlIG9uIHNwZWNpZmllZAorICogY29udGV4dCwgcmluZyB0aGVuIHJlc2V0IHRoZSBiYXRj aC4KKyAqLwordm9pZCBpbnRlbF9iYl9mbHVzaChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMy X3QgY3R4LCB1aW50MzJfdCByaW5nKQoreworCWlmIChpbnRlbF9iYl9lbWl0X2ZsdXNoX2NvbW1v bihpYmIpID09IDApCisJCXJldHVybjsKKworCWludGVsX2JiX2V4ZWNfd2l0aF9jb250ZXh0X3Jp bmcoaWJiLCBjdHgsIHJpbmcpOworfQorCitzdGF0aWMgdm9pZCBfX2ludGVsX2JiX2ZsdXNoX3Jl bmRlcl93aXRoX2NvbnRleHQoc3RydWN0IGludGVsX2JiICppYmIsCisJCQkJCQkgdWludDMyX3Qg Y3R4KQogewogCXVpbnQzMl90IHJpbmcgPSBJOTE1X0VYRUNfUkVOREVSOwogCi0JaW50ZWxfYmJf Zmx1c2hfd2l0aF9jb250ZXh0X3JpbmcoaWJiLCBpYmItPmN0eCwgcmluZyk7CisJaWYgKGludGVs X2JiX2VtaXRfZmx1c2hfY29tbW9uKGliYikgPT0gMCkKKwkJcmV0dXJuOworCisJaW50ZWxfYmJf ZXhlY193aXRoX2NvbnRleHRfcmluZyhpYmIsIGN0eCwgcmluZyk7CiB9CiAKLXZvaWQgaW50ZWxf YmJfZmx1c2hfYmxpdChzdHJ1Y3QgaW50ZWxfYmIgKmliYikKKy8qCisgKiBpbnRlbF9iYl9mbHVz aF9yZW5kZXI6CisgKiBAaWJiOiBiYXRjaGJ1ZmZlcgorICoKKyAqIElmIGJhdGNoIGlzIG5vdCBl bXB0eSBlbWl0IGJhdGNoIGJ1ZmZlciBlbmQsIGV4ZWN1dGUgb24gcmVuZGVyIHJpbmcKKyAqIGFu ZCByZXNldCB0aGUgYmF0Y2guCisgKiBDb250ZXh0IHVzZWQgdG8gZXhlY3V0ZSBpcyBwcmV2aW91 cyBiYXRjaCBjb250ZXh0LgorICovCit2b2lkIGludGVsX2JiX2ZsdXNoX3JlbmRlcihzdHJ1Y3Qg aW50ZWxfYmIgKmliYikKK3sKKwlfX2ludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQo aWJiLCBpYmItPmN0eCk7Cit9CisKKy8qCisgKiBpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9j b250ZXh0OgorICogQGliYjogYmF0Y2hidWZmZXIKKyAqIEBjdHg6IGNvbnRleHQKKyAqCisgKiBJ ZiBiYXRjaCBpcyBub3QgZW1wdHkgZW1pdCBiYXRjaCBidWZmZXIgZW5kLCBleGVjdXRlIG9uIHJl bmRlciByaW5nIHdpdGggQGN0eAorICogYW5kIHJlc2V0IHRoZSBiYXRjaC4KKyAqLwordm9pZCBp bnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1 aW50MzJfdCBjdHgpCit7CisJX19pbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGli YiwgY3R4KTsKK30KKworc3RhdGljIHZvaWQgX19pbnRlbF9iYl9mbHVzaF9ibGl0X3dpdGhfY29u dGV4dChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCQkJICAgICAgIHVpbnQzMl90IGN0eCkKIHsK IAl1aW50MzJfdCByaW5nID0gSTkxNV9FWEVDX0RFRkFVTFQ7CiAKKwlpZiAoaW50ZWxfYmJfZW1p dF9mbHVzaF9jb21tb24oaWJiKSA9PSAwKQorCQlyZXR1cm47CisKIAlpZiAoSEFTX0JMVF9SSU5H KGliYi0+ZGV2aWQpKQogCQlyaW5nID0gSTkxNV9FWEVDX0JMVDsKIAotCWludGVsX2JiX2ZsdXNo X3dpdGhfY29udGV4dF9yaW5nKGliYiwgaWJiLT5jdHgsIHJpbmcpOworCWludGVsX2JiX2V4ZWNf d2l0aF9jb250ZXh0X3JpbmcoaWJiLCBjdHgsIHJpbmcpOworfQorCisvKgorICogaW50ZWxfYmJf Zmx1c2hfYmxpdDoKKyAqIEBpYmI6IGJhdGNoYnVmZmVyCisgKgorICogSWYgYmF0Y2ggaXMgbm90 IGVtcHR5IGVtaXQgYmF0Y2ggYnVmZmVyIGVuZCwgZXhlY3V0ZSBvbiBkZWZhdWx0L2JsaXQgcmlu ZworICogKGRlcGVuZHMgb24gZ2VuKSBhbmQgcmVzZXQgdGhlIGJhdGNoLgorICogQ29udGV4dCB1 c2VkIHRvIGV4ZWN1dGUgaXMgcHJldmlvdXMgYmF0Y2ggY29udGV4dC4KKyAqLwordm9pZCBpbnRl bF9iYl9mbHVzaF9ibGl0KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCV9faW50ZWxfYmJfZmx1 c2hfYmxpdF93aXRoX2NvbnRleHQoaWJiLCBpYmItPmN0eCk7Cit9CisKKy8qCisgKiBpbnRlbF9i Yl9mbHVzaF9ibGl0X3dpdGhfY29udGV4dDoKKyAqIEBpYmI6IGJhdGNoYnVmZmVyCisgKiBAY3R4 OiBjb250ZXh0CisgKgorICogSWYgYmF0Y2ggaXMgbm90IGVtcHR5IGVtaXQgYmF0Y2ggYnVmZmVy IGVuZCwgZXhlY3V0ZSBvbiBkZWZhdWx0L2JsaXQgcmluZworICogKGRlcGVuZHMgb24gZ2VuKSB3 aXRoIEBjdHggYW5kIHJlc2V0IHRoZSBiYXRjaC4KKyAqLwordm9pZCBpbnRlbF9iYl9mbHVzaF9i bGl0X3dpdGhfY29udGV4dChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgY3R4KQorewor CV9faW50ZWxfYmJfZmx1c2hfYmxpdF93aXRoX2NvbnRleHQoaWJiLCBjdHgpOwogfQogCisvKgor ICogaW50ZWxfYmJfY29weV9kYXRhOgorICogQGliYjogYmF0Y2hidWZmZXIKKyAqIEBkYXRhOiBw b2ludGVyIG9mIGRhdGEgd2hpY2ggc2hvdWxkIGJlIGNvcGllZCBpbnRvIGJhdGNoCisgKiBAYnl0 ZXM6IG51bWJlciBvZiBieXRlcyB0byBjb3B5LCBtdXN0IGJlIGR3b3JkIG11bHRpcGxpZWQKKyAq IEBhbGlnbjogYWxpZ25tZW50IGluIHRoZSBiYXRjaAorICoKKyAqIEZ1bmN0aW9uIGNvcGllcyBA Ynl0ZXMgb2YgZGF0YSBwb2ludGVkIGJ5IEBkYXRhIGludG8gYmF0Y2ggYnVmZmVyLgorICovCiB1 aW50MzJfdCBpbnRlbF9iYl9jb3B5X2RhdGEoc3RydWN0IGludGVsX2JiICppYmIsCiAJCQkgICAg Y29uc3Qgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGJ5dGVzLAogCQkJICAgIHVpbnQzMl90IGFs aWduKQpAQCAtMjAwOCw2ICsyMjM4LDE0IEBAIHVpbnQzMl90IGludGVsX2JiX2NvcHlfZGF0YShz dHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAlyZXR1cm4gb2Zmc2V0OwogfQogCisvKgorICogaW50ZWxf YmJfYmxpdF9zdGFydDoKKyAqIEBpYmI6IGJhdGNoYnVmZmVyCisgKiBAZmxhZ3M6IGZsYWdzIHRv IGJsaXQgY29tbWFuZAorICoKKyAqIEZ1bmN0aW9uIGVtaXRzIFhZX1NSQ19DT1BZX0JMVCBpbnN0 cnVjdGlvbiB3aXRoIHNpemUgYXBwcm9wcmlhdGUgc2l6ZQorICogd2hpY2ggZGVwZW5kIG9uIGdl bi4KKyAqLwogdm9pZCBpbnRlbF9iYl9ibGl0X3N0YXJ0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1 aW50MzJfdCBmbGFncykKIHsKIAlpbnRlbF9iYl9vdXQoaWJiLCBYWV9TUkNfQ09QWV9CTFRfQ01E IHwKQEAgLTIwMTcsNiArMjI1NSwyMiBAQCB2b2lkIGludGVsX2JiX2JsaXRfc3RhcnQoc3RydWN0 IGludGVsX2JiICppYmIsIHVpbnQzMl90IGZsYWdzKQogCQkgICAgICg2ICsgMiAqIChpYmItPmdl biA+PSA4KSkpOwogfQogCisvKgorICogaW50ZWxfYmJfZW1pdF9ibHRfY29weToKKyAqIEBpYmI6 IGJhdGNoYnVmZmVyCisgKiBAc3JjOiBzb3VyY2UgYnVmZmVyIChpbnRlbF9idWYpCisgKiBAc3Jj X3gxOiBzb3VyY2UgeDEgcG9zaXRpb24KKyAqIEBzcmNfeTE6IHNvdXJjZSB5MSBwb3NpdGlvbgor ICogQHNyY19waXRjaDogc291cmNlIHBpdGNoCisgKiBAZHN0OiBkZXN0aW5hdGlvbiBidWZmZXIg KGludGVsX2J1ZikKKyAqIEBkc3RfeDE6IGRlc3RpbmF0aW9uIHgxIHBvc2l0aW9uCisgKiBAZHN0 X3kxOiBkZXN0aW5hdGlvbiB5MSBwb3NpdGlvbgorICogQGRzdF9waXRjaDogZGVzdGluYXRpb24g cGl0Y2gKKyAqIEB3aWR0aDogd2lkdGggb2YgZGF0YSB0byBjb3B5CisgKiBAaGVpZ2h0OiBoZWln aHQgb2YgZGF0YSB0byBjb3B5CisgKgorICogRnVuY3Rpb24gZW1pdHMgY29tcGxldGUgYmxpdCBj b21tYW5kLgorICovCiB2b2lkIGludGVsX2JiX2VtaXRfYmx0X2NvcHkoc3RydWN0IGludGVsX2Ji ICppYmIsCiAJCQkgICAgc3RydWN0IGludGVsX2J1ZiAqc3JjLAogCQkJICAgIGludCBzcmNfeDEs IGludCBzcmNfeTEsIGludCBzcmNfcGl0Y2gsCkBAIC0yMDc5LDYgKzIzMzMsOSBAQCB2b2lkIGlu dGVsX2JiX2VtaXRfYmx0X2NvcHkoc3RydWN0IGludGVsX2JiICppYmIsCiAJCWludGVsX2JiX291 dChpYmIsIG1hc2spOwogCX0KIAorCWludGVsX2JiX2FkZF9pbnRlbF9idWYoaWJiLCBzcmMsIGZh bHNlKTsKKwlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgZHN0LCB0cnVlKTsKKwogCWludGVs X2JiX2JsaXRfc3RhcnQoaWJiLCBjbWRfYml0cyk7CiAJaW50ZWxfYmJfb3V0KGliYiwgKGJyMTNf Yml0cykgfAogCQkgICAgICgweGNjIDw8IDE2KSB8IC8qIGNvcHkgUk9QICovCkBAIC0yMTIzLDcg KzIzODAsNiBAQCB2b2lkIGludGVsX2JiX2JsdF9jb3B5KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAog CWludGVsX2JiX2VtaXRfYmx0X2NvcHkoaWJiLCBzcmMsIHNyY194MSwgc3JjX3kxLCBzcmNfcGl0 Y2gsCiAJCQkgICAgICAgZHN0LCBkc3RfeDEsIGRzdF95MSwgZHN0X3BpdGNoLAogCQkJICAgICAg IHdpZHRoLCBoZWlnaHQsIGJwcCk7Ci0JaW50ZWxfYmJfZW1pdF9iYmUoaWJiKTsKIAlpbnRlbF9i Yl9mbHVzaF9ibGl0KGliYik7CiB9CiAKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZl ci5oIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKaW5kZXggYTY5ZmZmZDguLmM4MGViOTdkIDEw MDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaAorKysgYi9saWIvaW50ZWxfYmF0Y2hi dWZmZXIuaApAQCAtNDM5LDYgKzQzOSw3IEBAIHN0cnVjdCBpbnRlbF9iYiB7CiAJdWludDMyX3Qg c2l6ZTsKIAl1aW50MzJfdCAqYmF0Y2g7CiAJdWludDMyX3QgKnB0cjsKKwl1aW50NjRfdCBhbGln bm1lbnQ7CiAJaW50IGZlbmNlOwogCiAJdWludDMyX3QgcHJuZzsKQEAgLTQ4Niw2ICs0ODcsMjIg QEAgdm9pZCBpbnRlbF9iYl9wcmludChzdHJ1Y3QgaW50ZWxfYmIgKmliYik7CiB2b2lkIGludGVs X2JiX2R1bXAoc3RydWN0IGludGVsX2JiICppYmIsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIHZv aWQgaW50ZWxfYmJfc2V0X2RlYnVnKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBib29sIGRlYnVnKTsK IAorc3RhdGljIGlubGluZSB1aW50NjRfdAoraW50ZWxfYmJfc2V0X2RlZmF1bHRfb2JqZWN0X2Fs aWdubWVudChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDY0X3QgYWxpZ25tZW50KQoreworCXVp bnQ2NF90IG9sZCA9IGliYi0+YWxpZ25tZW50OworCisJaWJiLT5hbGlnbm1lbnQgPSBhbGlnbm1l bnQ7CisKKwlyZXR1cm4gb2xkOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90CitpbnRlbF9i Yl9nZXRfZGVmYXVsdF9vYmplY3RfYWxpZ25tZW50KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQorewor CXJldHVybiBpYmItPmFsaWdubWVudDsKK30KKwogc3RhdGljIGlubGluZSB1aW50MzJfdCBpbnRl bF9iYl9vZmZzZXQoc3RydWN0IGludGVsX2JiICppYmIpCiB7CiAJcmV0dXJuICh1aW50MzJfdCkg KCh1aW50OF90ICopIGliYi0+cHRyIC0gKHVpbnQ4X3QgKikgaWJiLT5iYXRjaCk7CkBAIC01MTMs OCArNTMwLDcgQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCBpbnRlbF9iYl9wdHJfYWRkX3JldHVy bl9wcmV2X29mZnNldChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKIAlyZXR1cm4gcHJldmlvdXNfb2Zm c2V0OwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgKmludGVsX2JiX3B0cl9hbGlnbihzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwKLQkJCQkgICAgICB1aW50MzJfdCBhbGlnbm1lbnQpCitzdGF0aWMgaW5s aW5lIHZvaWQgKmludGVsX2JiX3B0cl9hbGlnbihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMy X3QgYWxpZ25tZW50KQogewogCWludGVsX2JiX3B0cl9zZXQoaWJiLCBBTElHTihpbnRlbF9iYl9v ZmZzZXQoaWJiKSwgYWxpZ25tZW50KSk7CiAKQEAgLTUzOCw2ICs1NTQsMTYgQEAgc3RhdGljIGlu bGluZSB2b2lkIGludGVsX2JiX291dChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgZHdv cmQpCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqCiBpbnRlbF9iYl9hZGRfb2Jq ZWN0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUsCiAJCSAgICB1aW50NjRf dCBvZmZzZXQsIGJvb2wgd3JpdGUpOworc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg KgoraW50ZWxfYmJfYWRkX2ludGVsX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGlu dGVsX2J1ZiAqYnVmLCBib29sIHdyaXRlKTsKKworc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29i amVjdDIgKgoraW50ZWxfYmJfZmluZF9vYmplY3Qoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQz Ml90IGhhbmRsZSk7CisKK2Jvb2wKK2ludGVsX2JiX29iamVjdF9zZXRfZmxhZyhzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBmbGFnKTsKK2Jvb2wKK2ludGVs X2JiX29iamVjdF9jbGVhcl9mbGFnKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5k bGUsIHVpbnQ2NF90IGZsYWcpOwogCiB1aW50NjRfdCBpbnRlbF9iYl9lbWl0X3JlbG9jKHN0cnVj dCBpbnRlbF9iYiAqaWJiLAogCQkJIHVpbnQzMl90IGhhbmRsZSwKQEAgLTU2OCw2ICs1OTQsMTUg QEAgdWludDY0X3QgaW50ZWxfYmJfb2Zmc2V0X3JlbG9jX3dpdGhfZGVsdGEoc3RydWN0IGludGVs X2JiICppYmIsCiAJCQkJCSAgdWludDMyX3Qgb2Zmc2V0LAogCQkJCQkgIHVpbnQ2NF90IHByZXN1 bWVkX29mZnNldCk7CiAKK3VpbnQ2NF90IGludGVsX2JiX29mZnNldF9yZWxvY190b19vYmplY3Qo c3RydWN0IGludGVsX2JiICppYmIsCisJCQkJCSB1aW50MzJfdCBoYW5kbGUsCisJCQkJCSB1aW50 MzJfdCB0b19oYW5kbGUsCisJCQkJCSB1aW50MzJfdCByZWFkX2RvbWFpbnMsCisJCQkJCSB1aW50 MzJfdCB3cml0ZV9kb21haW4sCisJCQkJCSB1aW50MzJfdCBkZWx0YSwKKwkJCQkJIHVpbnQzMl90 IG9mZnNldCwKKwkJCQkJIHVpbnQ2NF90IHByZXN1bWVkX29mZnNldCk7CisKIGludCBfX2ludGVs X2JiX2V4ZWMoc3RydWN0IGludGVsX2JiICppYmIsIHVpbnQzMl90IGVuZF9vZmZzZXQsCiAJCSAg ICB1aW50MzJfdCBjdHgsIHVpbnQ2NF90IGZsYWdzLCBib29sIHN5bmMpOwogCkBAIC01ODEsOCAr NjE2LDEyIEBAIHVpbnQ2NF90IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KHN0cnVjdCBpbnRl bF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUpOwogYm9vbCBpbnRlbF9iYl9vYmplY3Rfb2Zmc2V0 X3RvX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmKTsKIAog dWludDMyX3QgaW50ZWxfYmJfZW1pdF9iYmUoc3RydWN0IGludGVsX2JiICppYmIpOwordWludDMy X3QgaW50ZWxfYmJfZW1pdF9mbHVzaF9jb21tb24oc3RydWN0IGludGVsX2JiICppYmIpOwordm9p ZCBpbnRlbF9iYl9mbHVzaChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDMyX3QgY3R4LCB1aW50 MzJfdCByaW5nKTsKIHZvaWQgaW50ZWxfYmJfZmx1c2hfcmVuZGVyKHN0cnVjdCBpbnRlbF9iYiAq aWJiKTsKK3ZvaWQgaW50ZWxfYmJfZmx1c2hfcmVuZGVyX3dpdGhfY29udGV4dChzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgdWludDMyX3QgY3R4KTsKIHZvaWQgaW50ZWxfYmJfZmx1c2hfYmxpdChzdHJ1 Y3QgaW50ZWxfYmIgKmliYik7Cit2b2lkIGludGVsX2JiX2ZsdXNoX2JsaXRfd2l0aF9jb250ZXh0 KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBjdHgpOwogCiB1aW50MzJfdCBpbnRlbF9i Yl9jb3B5X2RhdGEoc3RydWN0IGludGVsX2JiICppYmIsCiAJCQkgICAgY29uc3Qgdm9pZCAqZGF0 YSwgdW5zaWduZWQgaW50IGJ5dGVzLAotLSAKMi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2lndC1kZXYK