From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.9 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70EECC433E0 for ; Thu, 18 Mar 2021 16:10:43 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3275664E81 for ; Thu, 18 Mar 2021 16:10:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3275664E81 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C50666E90E; Thu, 18 Mar 2021 16:10:42 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5B906E90A for ; Thu, 18 Mar 2021 16:10:38 +0000 (UTC) IronPort-SDR: c/DYW1IkuZ+NKHJJTrPrtaP90H/GYu95TL1lNHtCq2nyEthKmX5iaD3poKKCSYuSFWkMwL/PEQ 83Lw7vXHpx9g== X-IronPort-AV: E=McAfee;i="6000,8403,9927"; a="176848191" X-IronPort-AV: E=Sophos;i="5.81,259,1610438400"; d="scan'208";a="176848191" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2021 09:10:38 -0700 IronPort-SDR: XEmB8jlRjKHAFHQJOkH/kJF5lD6FqvSN5QpgDhCD7taiIjBclj4zzf6n57QbsLtIX317jdWZuc LwihaLnIJ6wA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,259,1610438400"; d="scan'208";a="411952851" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.171]) by orsmga007.jf.intel.com with SMTP; 18 Mar 2021 09:10:36 -0700 Received: by stinkbox (sSMTP sendmail emulation); Thu, 18 Mar 2021 18:10:35 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Thu, 18 Mar 2021 18:10:14 +0200 Message-Id: <20210318161015.22070-7-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210318161015.22070-1-ville.syrjala@linux.intel.com> References: <20210318161015.22070-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v2 6/7] drm/i915: Introduce g4x_hdmi.c X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Vetter Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkV4 dHJhY3QgdGhlIGc0eCsgSERNSSBsb3cgbGV2ZWwgY29kZSB0byBpdHMgb3duIGZpbGUsCmxlYXZp bmcgaW50ZWxfaGRtaS5jIHRvIGRlYWwgd2l0aCBoaWdoZXIgbGV2ZWwgaXNzdWVzLgoKVGhlIGlu Zm9yZnJhbWUgc3VwcG9ydCBJIGRlY2lkZWQgdG8gbGVhdmUgaW4gaW50ZWxfaGRtaS5jCnNpbmNl IEkgdGhpbmsgd2UgbmVlZCB0byBtb3ZlIHRoYXQgYXMgYSB3aG9sZSB0byBpdHMgb3duIGZpbGUu Ckl0IGlzIGFmdGVyIGFsbCB1c2VkIGFsc28gZm9yIERQIFNEUHMsIHNvIG5vIGxvbmdlciBIRE1J CnNwZWNpZmljLgoKQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ClNp Z25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvZzR4X2hkbWkuYyAgICAgICB8IDYx NiArKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9nNHhfaGRt aS5oICAgICAgIHwgIDE5ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheS5jICB8ICAgMSArCiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVz LmggICAgfCAgMTIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMg ICAgIHwgNjE4IC0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9oZG1pLmggICAgIHwgICAzIC0KIDcgZmlsZXMgY2hhbmdlZCwgNjQ5IGluc2VydGlv bnMoKyksIDYyMSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2c0eF9oZG1pLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2c0eF9oZG1pLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IGRj OTkzYWEyYmQxNi4uMzNjMjEwMDQxNGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMjQyLDYg KzI0Miw3IEBAIGk5MTUteSArPSBcCiAJZGlzcGxheS9kdm9fc2lsMTY0Lm8gXAogCWRpc3BsYXkv ZHZvX3RmcDQxMC5vIFwKIAlkaXNwbGF5L2c0eF9kcC5vIFwKKwlkaXNwbGF5L2c0eF9oZG1pLm8g XAogCWRpc3BsYXkvaWNsX2RzaS5vIFwKIAlkaXNwbGF5L2ludGVsX2NydC5vIFwKIAlkaXNwbGF5 L2ludGVsX2RkaS5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv ZzR4X2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvZzR4X2hkbWkuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhmYTNiOGE1YTU3MgotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvZzR4X2hkbWkuYwpAQCAt MCwwICsxLDYxNiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENv cHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKgorICogSERNSSBzdXBwb3J0IGZv ciBHNHgsSUxLLFNOQixJVkIsVkxWLENIViAoSFNXKyBoYW5kbGVkIGJ5IHRoZSBEREkgY29kZSku CisgKi8KKworI2luY2x1ZGUgImc0eF9oZG1pLmgiCisjaW5jbHVkZSAiaW50ZWxfYXVkaW8uaCIK KyNpbmNsdWRlICJpbnRlbF9jb25uZWN0b3IuaCIKKyNpbmNsdWRlICJpbnRlbF9kaXNwbGF5X3R5 cGVzLmgiCisjaW5jbHVkZSAiaW50ZWxfZHBpb19waHkuaCIKKyNpbmNsdWRlICJpbnRlbF9maWZv X3VuZGVycnVuLmgiCisjaW5jbHVkZSAiaW50ZWxfaGRtaS5oIgorI2luY2x1ZGUgImludGVsX2hv dHBsdWcuaCIKKyNpbmNsdWRlICJpbnRlbF9zaWRlYmFuZC5oIgorI2luY2x1ZGUgImludGVsX3Nk dm8uaCIKKworc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRl djsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7CisJc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRt aShlbmNvZGVyKTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOworCXUzMiBoZG1pX3ZhbDsKKworCWlu dGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19vdXRwdXQoaW50ZWxfaGRtaSwgdHJ1ZSk7CisKKwlo ZG1pX3ZhbCA9IFNEVk9fRU5DT0RJTkdfSERNSTsKKwlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2X3By aXYpICYmIGNydGNfc3RhdGUtPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCisJCWhkbWlfdmFsIHw9IEhE TUlfQ09MT1JfUkFOR0VfMTZfMjM1OworCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9N T0RFX0ZMQUdfUFZTWU5DKQorCQloZG1pX3ZhbCB8PSBTRFZPX1ZTWU5DX0FDVElWRV9ISUdIOwor CWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUEhTWU5DKQorCQloZG1p X3ZhbCB8PSBTRFZPX0hTWU5DX0FDVElWRV9ISUdIOworCisJaWYgKGNydGNfc3RhdGUtPnBpcGVf YnBwID4gMjQpCisJCWhkbWlfdmFsIHw9IEhETUlfQ09MT1JfRk9STUFUXzEyYnBjOworCWVsc2UK KwkJaGRtaV92YWwgfD0gU0RWT19DT0xPUl9GT1JNQVRfOGJwYzsKKworCWlmIChjcnRjX3N0YXRl LT5oYXNfaGRtaV9zaW5rKQorCQloZG1pX3ZhbCB8PSBIRE1JX01PREVfU0VMRUNUX0hETUk7CisK KwlpZiAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpKQorCQloZG1pX3ZhbCB8PSBTRFZPX1BJUEVfU0VM X0NQVChjcnRjLT5waXBlKTsKKwllbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKKwkJ aGRtaV92YWwgfD0gU0RWT19QSVBFX1NFTF9DSFYoY3J0Yy0+cGlwZSk7CisJZWxzZQorCQloZG1p X3ZhbCB8PSBTRFZPX1BJUEVfU0VMKGNydGMtPnBpcGUpOworCisJaW50ZWxfZGVfd3JpdGUoZGV2 X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnLCBoZG1pX3ZhbCk7CisJaW50ZWxfZGVfcG9zdGlu Z19yZWFkKGRldl9wcml2LCBpbnRlbF9oZG1pLT5oZG1pX3JlZyk7Cit9CisKK3N0YXRpYyBib29s IGludGVsX2hkbWlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAor CQkJCSAgICBlbnVtIHBpcGUgKnBpcGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJc3RydWN0IGludGVsX2hkbWkg KmludGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRtaShlbmNvZGVyKTsKKwlpbnRlbF93YWtlcmVm X3Qgd2FrZXJlZjsKKwlib29sIHJldDsKKworCXdha2VyZWYgPSBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2dldF9pZl9lbmFibGVkKGRldl9wcml2LAorCQkJCQkJICAgICBlbmNvZGVyLT5wb3dlcl9kb21h aW4pOworCWlmICghd2FrZXJlZikKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0ID0gaW50ZWxfc2R2 b19wb3J0X2VuYWJsZWQoZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnLCBwaXBlKTsKKwor CWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBlbmNvZGVyLT5wb3dlcl9kb21haW4s IHdha2VyZWYpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQoreworCXN0cnVjdCBpbnRlbF9oZG1pICppbnRl bF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoZW5jb2Rlcik7CisJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGVuY29kZXItPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKKwl1MzIgdG1wLCBmbGFncyA9IDA7CisJaW50IGRvdGNsb2Nr OworCisJcGlwZV9jb25maWctPm91dHB1dF90eXBlcyB8PSBCSVQoSU5URUxfT1VUUFVUX0hETUkp OworCisJdG1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcp OworCisJaWYgKHRtcCAmIFNEVk9fSFNZTkNfQUNUSVZFX0hJR0gpCisJCWZsYWdzIHw9IERSTV9N T0RFX0ZMQUdfUEhTWU5DOworCWVsc2UKKwkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OSFNZTkM7 CisKKwlpZiAodG1wICYgU0RWT19WU1lOQ19BQ1RJVkVfSElHSCkKKwkJZmxhZ3MgfD0gRFJNX01P REVfRkxBR19QVlNZTkM7CisJZWxzZQorCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX05WU1lOQzsK KworCWlmICh0bXAgJiBIRE1JX01PREVfU0VMRUNUX0hETUkpCisJCXBpcGVfY29uZmlnLT5oYXNf aGRtaV9zaW5rID0gdHJ1ZTsKKworCXBpcGVfY29uZmlnLT5pbmZvZnJhbWVzLmVuYWJsZSB8PQor CQlpbnRlbF9oZG1pX2luZm9mcmFtZXNfZW5hYmxlZChlbmNvZGVyLCBwaXBlX2NvbmZpZyk7CisK KwlpZiAocGlwZV9jb25maWctPmluZm9mcmFtZXMuZW5hYmxlKQorCQlwaXBlX2NvbmZpZy0+aGFz X2luZm9mcmFtZSA9IHRydWU7CisKKwlpZiAodG1wICYgSERNSV9BVURJT19FTkFCTEUpCisJCXBp cGVfY29uZmlnLT5oYXNfYXVkaW8gPSB0cnVlOworCisJaWYgKCFIQVNfUENIX1NQTElUKGRldl9w cml2KSAmJgorCSAgICB0bXAgJiBIRE1JX0NPTE9SX1JBTkdFXzE2XzIzNSkKKwkJcGlwZV9jb25m aWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOworCisJcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7CisKKwlpZiAoKHRtcCAmIFNEVk9fQ09MT1JfRk9STUFU X01BU0spID09IEhETUlfQ09MT1JfRk9STUFUXzEyYnBjKQorCQlkb3RjbG9jayA9IHBpcGVfY29u ZmlnLT5wb3J0X2Nsb2NrICogMiAvIDM7CisJZWxzZQorCQlkb3RjbG9jayA9IHBpcGVfY29uZmln LT5wb3J0X2Nsb2NrOworCisJaWYgKHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVyKQorCQlk b3RjbG9jayAvPSBwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllcjsKKworCXBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBkb3RjbG9jazsKKworCXBpcGVfY29uZmln LT5sYW5lX2NvdW50ID0gNDsKKworCWludGVsX2hkbWlfcmVhZF9nY3BfaW5mb2ZyYW1lKGVuY29k ZXIsIHBpcGVfY29uZmlnKTsKKworCWludGVsX3JlYWRfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVf Y29uZmlnLAorCQkJICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSSwKKwkJCSAgICAgJnBpcGVf Y29uZmlnLT5pbmZvZnJhbWVzLmF2aSk7CisJaW50ZWxfcmVhZF9pbmZvZnJhbWUoZW5jb2Rlciwg cGlwZV9jb25maWcsCisJCQkgICAgIEhETUlfSU5GT0ZSQU1FX1RZUEVfU1BELAorCQkJICAgICAm cGlwZV9jb25maWctPmluZm9mcmFtZXMuc3BkKTsKKwlpbnRlbF9yZWFkX2luZm9mcmFtZShlbmNv ZGVyLCBwaXBlX2NvbmZpZywKKwkJCSAgICAgSERNSV9JTkZPRlJBTUVfVFlQRV9WRU5ET1IsCisJ CQkgICAgICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5oZG1pKTsKK30KKworc3RhdGljIHZvaWQg aW50ZWxfZW5hYmxlX2hkbWlfYXVkaW8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJ CQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKKwkJCQkg ICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPnVh cGkuY3J0Yyk7CisKKwlkcm1fV0FSTl9PTigmaTkxNS0+ZHJtLCAhcGlwZV9jb25maWctPmhhc19o ZG1pX3NpbmspOworCWRybV9kYmdfa21zKCZpOTE1LT5kcm0sICJFbmFibGluZyBIRE1JIGF1ZGlv IG9uIHBpcGUgJWNcbiIsCisJCSAgICBwaXBlX25hbWUoY3J0Yy0+cGlwZSkpOworCWludGVsX2F1 ZGlvX2NvZGVjX2VuYWJsZShlbmNvZGVyLCBwaXBlX2NvbmZpZywgY29ubl9zdGF0ZSk7Cit9CisK K3N0YXRpYyB2b2lkIGc0eF9lbmFibGVfaGRtaShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSwKKwkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCisJCQkgICAgY29uc3Qgc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9 IGVuY190b19pbnRlbF9oZG1pKGVuY29kZXIpOworCXUzMiB0ZW1wOworCisJdGVtcCA9IGludGVs X2RlX3JlYWQoZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnKTsKKworCXRlbXAgfD0gU0RW T19FTkFCTEU7CisJaWYgKHBpcGVfY29uZmlnLT5oYXNfYXVkaW8pCisJCXRlbXAgfD0gSERNSV9B VURJT19FTkFCTEU7CisKKwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRt aV9yZWcsIHRlbXApOworCWludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRt aS0+aGRtaV9yZWcpOworCisJaWYgKHBpcGVfY29uZmlnLT5oYXNfYXVkaW8pCisJCWludGVsX2Vu YWJsZV9oZG1pX2F1ZGlvKGVuY29kZXIsIHBpcGVfY29uZmlnLCBjb25uX3N0YXRlKTsKK30KKwor c3RhdGljIHZvaWQgaWJ4X2VuYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlLAorCQkJICAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKKwkJCSAgICBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0g ZW5jX3RvX2ludGVsX2hkbWkoZW5jb2Rlcik7CisJdTMyIHRlbXA7CisKKwl0ZW1wID0gaW50ZWxf ZGVfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcpOworCisJdGVtcCB8PSBTRFZP X0VOQUJMRTsKKwlpZiAocGlwZV9jb25maWctPmhhc19hdWRpbykKKwkJdGVtcCB8PSBIRE1JX0FV RElPX0VOQUJMRTsKKworCS8qCisJICogSFcgd29ya2Fyb3VuZCwgbmVlZCB0byB3cml0ZSB0aGlz IHR3aWNlIGZvciBpc3N1ZQorCSAqIHRoYXQgbWF5IHJlc3VsdCBpbiBmaXJzdCB3cml0ZSBnZXR0 aW5nIG1hc2tlZC4KKwkgKi8KKwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgaW50ZWxfaGRtaS0+ aGRtaV9yZWcsIHRlbXApOworCWludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgaW50ZWxf aGRtaS0+aGRtaV9yZWcpOworCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBpbnRlbF9oZG1pLT5o ZG1pX3JlZywgdGVtcCk7CisJaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCBpbnRlbF9o ZG1pLT5oZG1pX3JlZyk7CisKKwkvKgorCSAqIEhXIHdvcmthcm91bmQsIG5lZWQgdG8gdG9nZ2xl IGVuYWJsZSBiaXQgb2ZmIGFuZCBvbgorCSAqIGZvciAxMmJwYyB3aXRoIHBpeGVsIHJlcGVhdC4K KwkgKgorCSAqIEZJWE1FOiBCU3BlYyBzYXlzIHRoaXMgc2hvdWxkIGJlIGRvbmUgYXQgdGhlIGVu ZCBvZgorCSAqIHRoZSBtb2Rlc2V0IHNlcXVlbmNlLCBzbyBub3Qgc3VyZSBpZiB0aGlzIGlzbid0 IHRvbyBzb29uLgorCSAqLworCWlmIChwaXBlX2NvbmZpZy0+cGlwZV9icHAgPiAyNCAmJgorCSAg ICBwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciA+IDEpIHsKKwkJaW50ZWxfZGVfd3JpdGUo ZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnLAorCQkJICAgICAgIHRlbXAgJiB+U0RWT19F TkFCTEUpOworCQlpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIGludGVsX2hkbWktPmhk bWlfcmVnKTsKKworCQkvKgorCQkgKiBIVyB3b3JrYXJvdW5kLCBuZWVkIHRvIHdyaXRlIHRoaXMg dHdpY2UgZm9yIGlzc3VlCisJCSAqIHRoYXQgbWF5IHJlc3VsdCBpbiBmaXJzdCB3cml0ZSBnZXR0 aW5nIG1hc2tlZC4KKwkJICovCisJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBpbnRlbF9oZG1p LT5oZG1pX3JlZywgdGVtcCk7CisJCWludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgaW50 ZWxfaGRtaS0+aGRtaV9yZWcpOworCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgaW50ZWxfaGRt aS0+aGRtaV9yZWcsIHRlbXApOworCQlpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIGlu dGVsX2hkbWktPmhkbWlfcmVnKTsKKwl9CisKKwlpZiAocGlwZV9jb25maWctPmhhc19hdWRpbykK KwkJaW50ZWxfZW5hYmxlX2hkbWlfYXVkaW8oZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3Rh dGUpOworfQorCitzdGF0aWMgdm9pZCBjcHRfZW5hYmxlX2hkbWkoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCisJCQkgICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJ CQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAorCQkJICAg IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQoreworCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT51YXBpLmNydGMpOworCXN0cnVjdCBpbnRl bF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoZW5jb2Rlcik7CisJZW51bSBw aXBlIHBpcGUgPSBjcnRjLT5waXBlOworCXUzMiB0ZW1wOworCisJdGVtcCA9IGludGVsX2RlX3Jl YWQoZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnKTsKKworCXRlbXAgfD0gU0RWT19FTkFC TEU7CisJaWYgKHBpcGVfY29uZmlnLT5oYXNfYXVkaW8pCisJCXRlbXAgfD0gSERNSV9BVURJT19F TkFCTEU7CisKKwkvKgorCSAqIFdhRW5hYmxlSERNSThicGNCZWZvcmUxMmJwYzpzbmIsaXZiCisJ ICoKKwkgKiBUaGUgcHJvY2VkdXJlIGZvciAxMmJwYyBpcyBhcyBmb2xsb3dzOgorCSAqIDEuIGRp c2FibGUgSERNSSBjbG9jayBnYXRpbmcKKwkgKiAyLiBlbmFibGUgSERNSSB3aXRoIDhicGMKKwkg KiAzLiBlbmFibGUgSERNSSB3aXRoIDEyYnBjCisJICogNC4gZW5hYmxlIEhETUkgY2xvY2sgZ2F0 aW5nCisJICovCisKKwlpZiAocGlwZV9jb25maWctPnBpcGVfYnBwID4gMjQpIHsKKwkJaW50ZWxf ZGVfd3JpdGUoZGV2X3ByaXYsIFRSQU5TX0NISUNLRU4xKHBpcGUpLAorCQkJICAgICAgIGludGVs X2RlX3JlYWQoZGV2X3ByaXYsIFRSQU5TX0NISUNLRU4xKHBpcGUpKSB8IFRSQU5TX0NISUNLRU4x X0hETUlVTklUX0dDX0RJU0FCTEUpOworCisJCXRlbXAgJj0gflNEVk9fQ09MT1JfRk9STUFUX01B U0s7CisJCXRlbXAgfD0gU0RWT19DT0xPUl9GT1JNQVRfOGJwYzsKKwl9CisKKwlpbnRlbF9kZV93 cml0ZShkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcsIHRlbXApOworCWludGVsX2RlX3Bv c3RpbmdfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcpOworCisJaWYgKHBpcGVf Y29uZmlnLT5waXBlX2JwcCA+IDI0KSB7CisJCXRlbXAgJj0gflNEVk9fQ09MT1JfRk9STUFUX01B U0s7CisJCXRlbXAgfD0gSERNSV9DT0xPUl9GT1JNQVRfMTJicGM7CisKKwkJaW50ZWxfZGVfd3Jp dGUoZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnLCB0ZW1wKTsKKwkJaW50ZWxfZGVfcG9z dGluZ19yZWFkKGRldl9wcml2LCBpbnRlbF9oZG1pLT5oZG1pX3JlZyk7CisKKwkJaW50ZWxfZGVf d3JpdGUoZGV2X3ByaXYsIFRSQU5TX0NISUNLRU4xKHBpcGUpLAorCQkJICAgICAgIGludGVsX2Rl X3JlYWQoZGV2X3ByaXYsIFRSQU5TX0NISUNLRU4xKHBpcGUpKSAmIH5UUkFOU19DSElDS0VOMV9I RE1JVU5JVF9HQ19ESVNBQkxFKTsKKwl9CisKKwlpZiAocGlwZV9jb25maWctPmhhc19hdWRpbykK KwkJaW50ZWxfZW5hYmxlX2hkbWlfYXVkaW8oZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3Rh dGUpOworfQorCitzdGF0aWMgdm9pZCB2bHZfZW5hYmxlX2hkbWkoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCisJCQkgICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJ CQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAorCQkJICAg IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQoreworfQorCitz dGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2hkbWkoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUsCisJCQkgICAgICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAorCQkJICAg ICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSkKK3sK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBpbnRlbF9o ZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoZW5jb2Rlcik7CisJc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPQorCQloZG1pX3RvX2RpZ19wb3J0KGludGVsX2hk bWkpOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRfY3J0Y19z dGF0ZS0+dWFwaS5jcnRjKTsKKwl1MzIgdGVtcDsKKworCXRlbXAgPSBpbnRlbF9kZV9yZWFkKGRl dl9wcml2LCBpbnRlbF9oZG1pLT5oZG1pX3JlZyk7CisKKwl0ZW1wICY9IH4oU0RWT19FTkFCTEUg fCBIRE1JX0FVRElPX0VOQUJMRSk7CisJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIGludGVsX2hk bWktPmhkbWlfcmVnLCB0ZW1wKTsKKwlpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIGlu dGVsX2hkbWktPmhkbWlfcmVnKTsKKworCS8qCisJICogSFcgd29ya2Fyb3VuZCBmb3IgSUJYLCB3 ZSBuZWVkIHRvIG1vdmUgdGhlIHBvcnQKKwkgKiB0byB0cmFuc2NvZGVyIEEgYWZ0ZXIgZGlzYWJs aW5nIGl0IHRvIGFsbG93IHRoZQorCSAqIG1hdGNoaW5nIERQIHBvcnQgdG8gYmUgZW5hYmxlZCBv biB0cmFuc2NvZGVyIEEuCisJICovCisJaWYgKEhBU19QQ0hfSUJYKGRldl9wcml2KSAmJiBjcnRj LT5waXBlID09IFBJUEVfQikgeworCQkvKgorCQkgKiBXZSBnZXQgQ1BVL1BDSCBGSUZPIHVuZGVy cnVucyBvbiB0aGUgb3RoZXIgcGlwZSB3aGVuCisJCSAqIGRvaW5nIHRoZSB3b3JrYXJvdW5kLiBT d2VlcCB0aGVtIHVuZGVyIHRoZSBydWcuCisJCSAqLworCQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5k ZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBQSVBFX0EsIGZhbHNlKTsKKwkJaW50ZWxfc2V0X3Bj aF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgUElQRV9BLCBmYWxzZSk7CisKKwkJ dGVtcCAmPSB+U0RWT19QSVBFX1NFTF9NQVNLOworCQl0ZW1wIHw9IFNEVk9fRU5BQkxFIHwgU0RW T19QSVBFX1NFTChQSVBFX0EpOworCQkvKgorCQkgKiBIVyB3b3JrYXJvdW5kLCBuZWVkIHRvIHdy aXRlIHRoaXMgdHdpY2UgZm9yIGlzc3VlCisJCSAqIHRoYXQgbWF5IHJlc3VsdCBpbiBmaXJzdCB3 cml0ZSBnZXR0aW5nIG1hc2tlZC4KKwkJICovCisJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBp bnRlbF9oZG1pLT5oZG1pX3JlZywgdGVtcCk7CisJCWludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZf cHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcpOworCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwg aW50ZWxfaGRtaS0+aGRtaV9yZWcsIHRlbXApOworCQlpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2 X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnKTsKKworCQl0ZW1wICY9IH5TRFZPX0VOQUJMRTsK KwkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnLCB0ZW1wKTsK KwkJaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCBpbnRlbF9oZG1pLT5oZG1pX3JlZyk7 CisKKwkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rX2lmX2FjdGl2ZShkZXZfcHJpdiwgUElQRV9BKTsK KwkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgUElQRV9B LCB0cnVlKTsKKwkJaW50ZWxfc2V0X3BjaF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJp diwgUElQRV9BLCB0cnVlKTsKKwl9CisKKwlkaWdfcG9ydC0+c2V0X2luZm9mcmFtZXMoZW5jb2Rl ciwKKwkJCQkgICAgICAgZmFsc2UsCisJCQkJICAgICAgIG9sZF9jcnRjX3N0YXRlLCBvbGRfY29u bl9zdGF0ZSk7CisKKwlpbnRlbF9kcF9kdWFsX21vZGVfc2V0X3RtZHNfb3V0cHV0KGludGVsX2hk bWksIGZhbHNlKTsKK30KKworc3RhdGljIHZvaWQgZzR4X2Rpc2FibGVfaGRtaShzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCSAgICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19z dGF0ZSwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25u X3N0YXRlKQoreworCWlmIChvbGRfY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvKQorCQlpbnRlbF9hdWRp b19jb2RlY19kaXNhYmxlKGVuY29kZXIsCisJCQkJCSAgb2xkX2NydGNfc3RhdGUsIG9sZF9jb25u X3N0YXRlKTsKKworCWludGVsX2Rpc2FibGVfaGRtaShzdGF0ZSwgZW5jb2Rlciwgb2xkX2NydGNf c3RhdGUsIG9sZF9jb25uX3N0YXRlKTsKK30KKworc3RhdGljIHZvaWQgcGNoX2Rpc2FibGVfaGRt aShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKKwkJCSAgICAgc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZSwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKm9sZF9jb25uX3N0YXRlKQoreworCWlmIChvbGRfY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvKQor CQlpbnRlbF9hdWRpb19jb2RlY19kaXNhYmxlKGVuY29kZXIsCisJCQkJCSAgb2xkX2NydGNfc3Rh dGUsIG9sZF9jb25uX3N0YXRlKTsKK30KKworc3RhdGljIHZvaWQgcGNoX3Bvc3RfZGlzYWJsZV9o ZG1pKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCSAgc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdGUsCisJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq b2xkX2Nvbm5fc3RhdGUpCit7CisJaW50ZWxfZGlzYWJsZV9oZG1pKHN0YXRlLCBlbmNvZGVyLCBv bGRfY3J0Y19zdGF0ZSwgb2xkX2Nvbm5fc3RhdGUpOworfQorCitzdGF0aWMgdm9pZCBpbnRlbF9o ZG1pX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJICBz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZywKKwkJCQkgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19w b3J0ID0KKwkJZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOworCisJaW50ZWxfaGRtaV9wcmVwYXJl KGVuY29kZXIsIHBpcGVfY29uZmlnKTsKKworCWRpZ19wb3J0LT5zZXRfaW5mb2ZyYW1lcyhlbmNv ZGVyLAorCQkJCSAgICAgICBwaXBlX2NvbmZpZy0+aGFzX2luZm9mcmFtZSwKKwkJCQkgICAgICAg cGlwZV9jb25maWcsIGNvbm5fc3RhdGUpOworfQorCitzdGF0aWMgdm9pZCB2bHZfaGRtaV9wcmVf ZW5hYmxlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAorCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZywKKwkJCQljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9z dGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19k aWdfcG9ydChlbmNvZGVyKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCXZsdl9waHlfcHJlX2VuY29kZXJfZW5hYmxl KGVuY29kZXIsIHBpcGVfY29uZmlnKTsKKworCS8qIEhETUkgMS4wVi0yZEIgKi8KKwl2bHZfc2V0 X3BoeV9zaWduYWxfbGV2ZWwoZW5jb2RlciwgcGlwZV9jb25maWcsCisJCQkJIDB4MmIyNDVmNWYs IDB4MDAwMDIwMDAsCisJCQkJIDB4NTU3OGI4M2EsIDB4MmIyNDc4NzgpOworCisJZGlnX3BvcnQt PnNldF9pbmZvZnJhbWVzKGVuY29kZXIsCisJCQkgICAgICBwaXBlX2NvbmZpZy0+aGFzX2luZm9m cmFtZSwKKwkJCSAgICAgIHBpcGVfY29uZmlnLCBjb25uX3N0YXRlKTsKKworCWc0eF9lbmFibGVf aGRtaShzdGF0ZSwgZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3RhdGUpOworCisJdmx2X3dh aXRfcG9ydF9yZWFkeShkZXZfcHJpdiwgZGlnX3BvcnQsIDB4MCk7Cit9CisKK3N0YXRpYyB2b2lk IHZsdl9oZG1pX3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl LAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAorCQkJCSAgICBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlpbnRlbF9oZG1pX3ByZXBh cmUoZW5jb2RlciwgcGlwZV9jb25maWcpOworCisJdmx2X3BoeV9wcmVfcGxsX2VuYWJsZShlbmNv ZGVyLCBwaXBlX2NvbmZpZyk7Cit9CisKK3N0YXRpYyB2b2lkIGNodl9oZG1pX3ByZV9wbGxfZW5h YmxlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCSAgICBzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnBpcGVfY29uZmlnLAorCQkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZSkKK3sKKwlpbnRlbF9oZG1pX3ByZXBhcmUoZW5jb2RlciwgcGlwZV9jb25m aWcpOworCisJY2h2X3BoeV9wcmVfcGxsX2VuYWJsZShlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Cit9 CisKK3N0YXRpYyB2b2lkIGNodl9oZG1pX3Bvc3RfcGxsX2Rpc2FibGUoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJICAgICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlLAorCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29u bl9zdGF0ZSkKK3sKKwljaHZfcGh5X3Bvc3RfcGxsX2Rpc2FibGUoZW5jb2Rlciwgb2xkX2NydGNf c3RhdGUpOworfQorCitzdGF0aWMgdm9pZCB2bHZfaGRtaV9wb3N0X2Rpc2FibGUoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJCQkJICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0 ZSwKKwkJCQkgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0 ZSkKK3sKKwkvKiBSZXNldCBsYW5lcyB0byBhdm9pZCBIRE1JIGZsaWNrZXIgKFZMViB3L2EpICov CisJdmx2X3BoeV9yZXNldF9sYW5lcyhlbmNvZGVyLCBvbGRfY3J0Y19zdGF0ZSk7Cit9CisKK3N0 YXRpYyB2b2lkIGNodl9oZG1pX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSwKKwkJCQkgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAorCQkJCSAgY29uc3Qg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlKQoreworCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisKKwl2bHZfZHBpb19nZXQoZGV2X3ByaXYp OworCisJLyogQXNzZXJ0IGRhdGEgbGFuZSByZXNldCAqLworCWNodl9kYXRhX2xhbmVfc29mdF9y ZXNldChlbmNvZGVyLCBvbGRfY3J0Y19zdGF0ZSwgdHJ1ZSk7CisKKwl2bHZfZHBpb19wdXQoZGV2 X3ByaXYpOworfQorCitzdGF0aWMgdm9pZCBjaHZfaGRtaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlLAorCQkJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAorCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKKwkJCQlj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCisJY2h2X3BoeV9wcmVf ZW5jb2Rlcl9lbmFibGUoZW5jb2RlciwgcGlwZV9jb25maWcpOworCisJLyogRklYTUU6IFByb2dy YW0gdGhlIHN1cHBvcnQgeHh4IFYtZEIgKi8KKwkvKiBVc2UgODAwbVYtMGRCICovCisJY2h2X3Nl dF9waHlfc2lnbmFsX2xldmVsKGVuY29kZXIsIHBpcGVfY29uZmlnLCAxMjgsIDEwMiwgZmFsc2Up OworCisJZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzKGVuY29kZXIsCisJCQkgICAgICBwaXBlX2Nv bmZpZy0+aGFzX2luZm9mcmFtZSwKKwkJCSAgICAgIHBpcGVfY29uZmlnLCBjb25uX3N0YXRlKTsK KworCWc0eF9lbmFibGVfaGRtaShzdGF0ZSwgZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3Rh dGUpOworCisJdmx2X3dhaXRfcG9ydF9yZWFkeShkZXZfcHJpdiwgZGlnX3BvcnQsIDB4MCk7CisK KwkvKiBTZWNvbmQgY29tbW9uIGxhbmUgd2lsbCBzdGF5IGFsaXZlIG9uIGl0cyBvd24gbm93ICov CisJY2h2X3BoeV9yZWxlYXNlX2NsMl9vdmVycmlkZShlbmNvZGVyKTsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBpbnRlbF9oZG1pX2VuY19mdW5jcyA9IHsKKwku ZGVzdHJveSA9IGludGVsX2VuY29kZXJfZGVzdHJveSwKK307CisKK3N0YXRpYyBlbnVtIGludGVs X2hvdHBsdWdfc3RhdGUKK2ludGVsX2hkbWlfaG90cGx1ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKKwkJICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCWVu dW0gaW50ZWxfaG90cGx1Z19zdGF0ZSBzdGF0ZTsKKworCXN0YXRlID0gaW50ZWxfZW5jb2Rlcl9o b3RwbHVnKGVuY29kZXIsIGNvbm5lY3Rvcik7CisKKwkvKgorCSAqIE9uIG1hbnkgcGxhdGZvcm1z IHRoZSBIRE1JIGxpdmUgc3RhdGUgc2lnbmFsIGlzIGtub3duIHRvIGJlCisJICogdW5yZWxpYWJs ZSwgc28gd2UgY2FuJ3QgdXNlIGl0IHRvIGRldGVjdCBpZiBhIHNpbmsgaXMgY29ubmVjdGVkIG9y CisJICogbm90LiBJbnN0ZWFkIHdlIGRldGVjdCBpZiBpdCdzIGNvbm5lY3RlZCBiYXNlZCBvbiB3 aGV0aGVyIHdlIGNhbgorCSAqIHJlYWQgdGhlIEVESUQgb3Igbm90LiBUaGF0IGluIHR1cm4gaGFz IGEgcHJvYmxlbSBkdXJpbmcgZGlzY29ubmVjdCwKKwkgKiBzaW5jZSB0aGUgSFBEIGludGVycnVw dCBtYXkgYmUgcmFpc2VkIGJlZm9yZSB0aGUgRERDIGxpbmVzIGdldAorCSAqIGRpc2Nvbm5lY3Rl ZCAoZHVlIHRvIGhvdyB0aGUgcmVxdWlyZWQgbGVuZ3RoIG9mIEREQyB2cy4gSFBECisJICogY29u bmVjdG9yIHBpbnMgYXJlIHNwZWNpZmllZCkgYW5kIHNvIHdlJ2xsIHN0aWxsIGJlIGFibGUgdG8g Z2V0IGEKKwkgKiB2YWxpZCBFRElELiBUbyBzb2x2ZSB0aGlzIHNjaGVkdWxlIGFub3RoZXIgZGV0 ZWN0aW9uIGN5Y2xlIGlmIHRoaXMKKwkgKiB0aW1lIGFyb3VuZCB3ZSBkaWRuJ3QgZGV0ZWN0IGFu eSBjaGFuZ2UgaW4gdGhlIHNpbmsncyBjb25uZWN0aW9uCisJICogc3RhdHVzLgorCSAqLworCWlm IChzdGF0ZSA9PSBJTlRFTF9IT1RQTFVHX1VOQ0hBTkdFRCAmJiAhY29ubmVjdG9yLT5ob3RwbHVn X3JldHJpZXMpCisJCXN0YXRlID0gSU5URUxfSE9UUExVR19SRVRSWTsKKworCXJldHVybiBzdGF0 ZTsKK30KKwordm9pZCBpbnRlbF9oZG1pX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAorCQkgICAgIGk5MTVfcmVnX3QgaGRtaV9yZWcsIGVudW0gcG9ydCBwb3J0KQorewor CXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0OworCXN0cnVjdCBpbnRlbF9lbmNv ZGVyICppbnRlbF9lbmNvZGVyOworCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5l Y3RvcjsKKworCWRpZ19wb3J0ID0ga3phbGxvYyhzaXplb2YoKmRpZ19wb3J0KSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFkaWdfcG9ydCkKKwkJcmV0dXJuOworCisJaW50ZWxfY29ubmVjdG9yID0gaW50 ZWxfY29ubmVjdG9yX2FsbG9jKCk7CisJaWYgKCFpbnRlbF9jb25uZWN0b3IpIHsKKwkJa2ZyZWUo ZGlnX3BvcnQpOworCQlyZXR1cm47CisJfQorCisJaW50ZWxfZW5jb2RlciA9ICZkaWdfcG9ydC0+ YmFzZTsKKworCW11dGV4X2luaXQoJmRpZ19wb3J0LT5oZGNwX211dGV4KTsKKworCWRybV9lbmNv ZGVyX2luaXQoJmRldl9wcml2LT5kcm0sICZpbnRlbF9lbmNvZGVyLT5iYXNlLAorCQkJICZpbnRl bF9oZG1pX2VuY19mdW5jcywgRFJNX01PREVfRU5DT0RFUl9UTURTLAorCQkJICJIRE1JICVjIiwg cG9ydF9uYW1lKHBvcnQpKTsKKworCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBpbnRlbF9oZG1p X2hvdHBsdWc7CisJaW50ZWxfZW5jb2Rlci0+Y29tcHV0ZV9jb25maWcgPSBpbnRlbF9oZG1pX2Nv bXB1dGVfY29uZmlnOworCWlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkgeworCQlpbnRlbF9l bmNvZGVyLT5kaXNhYmxlID0gcGNoX2Rpc2FibGVfaGRtaTsKKwkJaW50ZWxfZW5jb2Rlci0+cG9z dF9kaXNhYmxlID0gcGNoX3Bvc3RfZGlzYWJsZV9oZG1pOworCX0gZWxzZSB7CisJCWludGVsX2Vu Y29kZXItPmRpc2FibGUgPSBnNHhfZGlzYWJsZV9oZG1pOworCX0KKwlpbnRlbF9lbmNvZGVyLT5n ZXRfaHdfc3RhdGUgPSBpbnRlbF9oZG1pX2dldF9od19zdGF0ZTsKKwlpbnRlbF9lbmNvZGVyLT5n ZXRfY29uZmlnID0gaW50ZWxfaGRtaV9nZXRfY29uZmlnOworCWlmIChJU19DSEVSUllWSUVXKGRl dl9wcml2KSkgeworCQlpbnRlbF9lbmNvZGVyLT5wcmVfcGxsX2VuYWJsZSA9IGNodl9oZG1pX3By ZV9wbGxfZW5hYmxlOworCQlpbnRlbF9lbmNvZGVyLT5wcmVfZW5hYmxlID0gY2h2X2hkbWlfcHJl X2VuYWJsZTsKKwkJaW50ZWxfZW5jb2Rlci0+ZW5hYmxlID0gdmx2X2VuYWJsZV9oZG1pOworCQlp bnRlbF9lbmNvZGVyLT5wb3N0X2Rpc2FibGUgPSBjaHZfaGRtaV9wb3N0X2Rpc2FibGU7CisJCWlu dGVsX2VuY29kZXItPnBvc3RfcGxsX2Rpc2FibGUgPSBjaHZfaGRtaV9wb3N0X3BsbF9kaXNhYmxl OworCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKKwkJaW50ZWxfZW5jb2Rl ci0+cHJlX3BsbF9lbmFibGUgPSB2bHZfaGRtaV9wcmVfcGxsX2VuYWJsZTsKKwkJaW50ZWxfZW5j b2Rlci0+cHJlX2VuYWJsZSA9IHZsdl9oZG1pX3ByZV9lbmFibGU7CisJCWludGVsX2VuY29kZXIt PmVuYWJsZSA9IHZsdl9lbmFibGVfaGRtaTsKKwkJaW50ZWxfZW5jb2Rlci0+cG9zdF9kaXNhYmxl ID0gdmx2X2hkbWlfcG9zdF9kaXNhYmxlOworCX0gZWxzZSB7CisJCWludGVsX2VuY29kZXItPnBy ZV9lbmFibGUgPSBpbnRlbF9oZG1pX3ByZV9lbmFibGU7CisJCWlmIChIQVNfUENIX0NQVChkZXZf cHJpdikpCisJCQlpbnRlbF9lbmNvZGVyLT5lbmFibGUgPSBjcHRfZW5hYmxlX2hkbWk7CisJCWVs c2UgaWYgKEhBU19QQ0hfSUJYKGRldl9wcml2KSkKKwkJCWludGVsX2VuY29kZXItPmVuYWJsZSA9 IGlieF9lbmFibGVfaGRtaTsKKwkJZWxzZQorCQkJaW50ZWxfZW5jb2Rlci0+ZW5hYmxlID0gZzR4 X2VuYWJsZV9oZG1pOworCX0KKworCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRf SERNSTsKKwlpbnRlbF9lbmNvZGVyLT5wb3dlcl9kb21haW4gPSBpbnRlbF9wb3J0X3RvX3Bvd2Vy X2RvbWFpbihwb3J0KTsKKwlpbnRlbF9lbmNvZGVyLT5wb3J0ID0gcG9ydDsKKwlpZiAoSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpIHsKKwkJaWYgKHBvcnQgPT0gUE9SVF9EKQorCQkJaW50ZWxfZW5j b2Rlci0+cGlwZV9tYXNrID0gQklUKFBJUEVfQyk7CisJCWVsc2UKKwkJCWludGVsX2VuY29kZXIt PnBpcGVfbWFzayA9IEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQik7CisJfSBlbHNlIHsKKwkJaW50 ZWxfZW5jb2Rlci0+cGlwZV9tYXNrID0gfjA7CisJfQorCWludGVsX2VuY29kZXItPmNsb25lYWJs ZSA9IDEgPDwgSU5URUxfT1VUUFVUX0FOQUxPRzsKKwlpbnRlbF9lbmNvZGVyLT5ocGRfcGluID0g aW50ZWxfaHBkX3Bpbl9kZWZhdWx0KGRldl9wcml2LCBwb3J0KTsKKwkvKgorCSAqIEJTcGVjIGlz IHVuY2xlYXIgYWJvdXQgSERNSStIRE1JIGNsb25pbmcgb24gZzR4LCBidXQgaXQgc2VlbXMKKwkg KiB0byB3b3JrIG9uIHJlYWwgaGFyZHdhcmUuIEFuZCBzaW5jZSBnNHggY2FuIHNlbmQgaW5mb2Zy YW1lcyB0bworCSAqIG9ubHkgb25lIHBvcnQgYW55d2F5LCBub3RoaW5nIGlzIGxvc3QgYnkgYWxs b3dpbmcgaXQuCisJICovCisJaWYgKElTX0c0WChkZXZfcHJpdikpCisJCWludGVsX2VuY29kZXIt PmNsb25lYWJsZSB8PSAxIDw8IElOVEVMX09VVFBVVF9IRE1JOworCisJZGlnX3BvcnQtPmhkbWku aGRtaV9yZWcgPSBoZG1pX3JlZzsKKwlkaWdfcG9ydC0+ZHAub3V0cHV0X3JlZyA9IElOVkFMSURf TU1JT19SRUc7CisJZGlnX3BvcnQtPm1heF9sYW5lcyA9IDQ7CisKKwlpbnRlbF9pbmZvZnJhbWVf aW5pdChkaWdfcG9ydCk7CisKKwlkaWdfcG9ydC0+YXV4X2NoID0gaW50ZWxfYmlvc19wb3J0X2F1 eF9jaChkZXZfcHJpdiwgcG9ydCk7CisJaW50ZWxfaGRtaV9pbml0X2Nvbm5lY3RvcihkaWdfcG9y dCwgaW50ZWxfY29ubmVjdG9yKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvZzR4X2hkbWkuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvZzR4X2hk bWkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBjMThhNDBhYzMz ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvZzR4X2hk bWkuaApAQCAtMCwwICsxLDE5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICov CisvKgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaWZu ZGVmIF9HNFhfSERNSV9IXworI2RlZmluZSBfRzRYX0hETUlfSF8KKworI2luY2x1ZGUgPGxpbnV4 L3R5cGVzLmg+CisKKyNpbmNsdWRlICJpOTE1X3JlZy5oIgorCitlbnVtIHBvcnQ7CitzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZTsKKwordm9pZCBpbnRlbF9oZG1pX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAorCQkgICAgIGk5MTVfcmVnX3QgaGRtaV9yZWcsIGVudW0gcG9y dCBwb3J0KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jCmluZGV4IGU3NGI5MjU4N2Q3Zi4uNjg5MDNlZjAyZGY2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtNjcsNiArNjcsNyBAQAog I2luY2x1ZGUgImd0L2ludGVsX3Jwcy5oIgogCiAjaW5jbHVkZSAiZzR4X2RwLmgiCisjaW5jbHVk ZSAiZzR4X2hkbWkuaCIKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImludGVsX2Fj cGkuaCIKICNpbmNsdWRlICJpbnRlbF9hdG9taWMuaCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKaW5kZXggMDEyODYzYjU2MTc0Li44 ZDFiYjlmNjQ1OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oCkBAIC0xNzcwLDYgKzE3NzAsMTggQEAgaW50ZWxfYXR0YWNoZWRf ZGlnX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXJldHVybiBlbmNf dG9fZGlnX3BvcnQoaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25uZWN0b3IpKTsKIH0KIAorc3Rh dGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfaGRtaSAqCitlbmNfdG9faW50ZWxfaGRtaShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKK3sKKwlyZXR1cm4gJmVuY190b19kaWdfcG9ydChlbmNv ZGVyKS0+aGRtaTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfaGRtaSAqCitpbnRl bF9hdHRhY2hlZF9oZG1pKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwly ZXR1cm4gZW5jX3RvX2ludGVsX2hkbWkoaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25uZWN0b3Ip KTsKK30KKwogc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfZHAgKmVuY190b19pbnRlbF9kcChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIHsKIAlyZXR1cm4gJmVuY190b19kaWdfcG9y dChlbmNvZGVyKS0+ZHA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5j CmluZGV4IDdmMzg0ZjI1OWZjOC4uY2EzODA0NGViNmFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2hkbWkuYwpAQCAtNDEsMjEgKzQxLDE1IEBACiAjaW5jbHVkZSAiaTkx NV9kZWJ1Z2ZzLmgiCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpbnRlbF9hdG9t aWMuaCIKLSNpbmNsdWRlICJpbnRlbF9hdWRpby5oIgogI2luY2x1ZGUgImludGVsX2Nvbm5lY3Rv ci5oIgogI2luY2x1ZGUgImludGVsX2RkaS5oIgogI2luY2x1ZGUgImludGVsX2Rpc3BsYXlfdHlw ZXMuaCIKICNpbmNsdWRlICJpbnRlbF9kcC5oIgotI2luY2x1ZGUgImludGVsX2RwaW9fcGh5Lmgi Ci0jaW5jbHVkZSAiaW50ZWxfZmlmb191bmRlcnJ1bi5oIgogI2luY2x1ZGUgImludGVsX2dtYnVz LmgiCiAjaW5jbHVkZSAiaW50ZWxfaGRjcC5oIgogI2luY2x1ZGUgImludGVsX2hkbWkuaCIKLSNp bmNsdWRlICJpbnRlbF9ob3RwbHVnLmgiCiAjaW5jbHVkZSAiaW50ZWxfbHNwY29uLmgiCiAjaW5j bHVkZSAiaW50ZWxfcGFuZWwuaCIKLSNpbmNsdWRlICJpbnRlbF9zZHZvLmgiCi0jaW5jbHVkZSAi aW50ZWxfc2lkZWJhbmQuaCIKIAogc3RhdGljIHN0cnVjdCBkcm1fZGV2aWNlICppbnRlbF9oZG1p X3RvX2RldihzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSkKIHsKQEAgLTg2LDE5ICs4MCw2 IEBAIGFzc2VydF9oZG1pX3RyYW5zY29kZXJfZnVuY19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCSAiSERNSSB0cmFuc2NvZGVyIGZ1bmN0aW9uIGVuYWJsZWQs IGV4cGVjdGluZyBkaXNhYmxlZFxuIik7CiB9CiAKLXN0cnVjdCBpbnRlbF9oZG1pICplbmNfdG9f aW50ZWxfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKLXsKLQlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9Ci0JCWNvbnRhaW5lcl9vZigmZW5jb2Rlci0+YmFz ZSwgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCwKLQkJCSAgICAgYmFzZS5iYXNlKTsKLQlyZXR1 cm4gJmRpZ19wb3J0LT5oZG1pOwotfQotCi1zdGF0aWMgc3RydWN0IGludGVsX2hkbWkgKmludGVs X2F0dGFjaGVkX2hkbWkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQotewotCXJl dHVybiBlbmNfdG9faW50ZWxfaGRtaShpbnRlbF9hdHRhY2hlZF9lbmNvZGVyKGNvbm5lY3Rvcikp OwotfQotCiBzdGF0aWMgdTMyIGc0eF9pbmZvZnJhbWVfaW5kZXgodW5zaWduZWQgaW50IHR5cGUp CiB7CiAJc3dpdGNoICh0eXBlKSB7CkBAIC0xNzg5LDM2OSArMTc3MCw2IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIGludGVsX2hkbWlfaGRjcF9zaGltID0gewogCS5wcm90 b2NvbCA9IEhEQ1BfUFJPVE9DT0xfSERNSSwKIH07CiAKLXN0YXRpYyB2b2lkIGludGVsX2hkbWlf cHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgICAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKLXsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwotCXN0cnVjdCBpbnRlbF9oZG1pICppbnRl bF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoZW5jb2Rlcik7Ci0JY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZTsKLQl1MzIgaGRtaV92YWw7Ci0KLQlpbnRlbF9kcF9kdWFsX21vZGVfc2V0X3RtZHNfb3V0cHV0 KGludGVsX2hkbWksIHRydWUpOwotCi0JaGRtaV92YWwgPSBTRFZPX0VOQ09ESU5HX0hETUk7Ci0J aWYgKCFIQVNfUENIX1NQTElUKGRldl9wcml2KSAmJiBjcnRjX3N0YXRlLT5saW1pdGVkX2NvbG9y X3JhbmdlKQotCQloZG1pX3ZhbCB8PSBIRE1JX0NPTE9SX1JBTkdFXzE2XzIzNTsKLQlpZiAoYWRq dXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BWU1lOQykKLQkJaGRtaV92YWwgfD0g U0RWT19WU1lOQ19BQ1RJVkVfSElHSDsKLQlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHX1BIU1lOQykKLQkJaGRtaV92YWwgfD0gU0RWT19IU1lOQ19BQ1RJVkVfSElHSDsK LQotCWlmIChjcnRjX3N0YXRlLT5waXBlX2JwcCA+IDI0KQotCQloZG1pX3ZhbCB8PSBIRE1JX0NP TE9SX0ZPUk1BVF8xMmJwYzsKLQllbHNlCi0JCWhkbWlfdmFsIHw9IFNEVk9fQ09MT1JfRk9STUFU XzhicGM7Ci0KLQlpZiAoY3J0Y19zdGF0ZS0+aGFzX2hkbWlfc2luaykKLQkJaGRtaV92YWwgfD0g SERNSV9NT0RFX1NFTEVDVF9IRE1JOwotCi0JaWYgKEhBU19QQ0hfQ1BUKGRldl9wcml2KSkKLQkJ aGRtaV92YWwgfD0gU0RWT19QSVBFX1NFTF9DUFQoY3J0Yy0+cGlwZSk7Ci0JZWxzZSBpZiAoSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpCi0JCWhkbWlfdmFsIHw9IFNEVk9fUElQRV9TRUxfQ0hWKGNy dGMtPnBpcGUpOwotCWVsc2UKLQkJaGRtaV92YWwgfD0gU0RWT19QSVBFX1NFTChjcnRjLT5waXBl KTsKLQotCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBpbnRlbF9oZG1pLT5oZG1pX3JlZywgaGRt aV92YWwpOwotCWludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRt aV9yZWcpOwotfQotCi1zdGF0aWMgYm9vbCBpbnRlbF9oZG1pX2dldF9od19zdGF0ZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCQkgICAgZW51bSBwaXBlICpwaXBlKQotewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwotCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWko ZW5jb2Rlcik7Ci0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Ci0JYm9vbCByZXQ7Ci0KLQl3YWtl cmVmID0gaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKLQkJCQkJ CSAgICAgZW5jb2Rlci0+cG93ZXJfZG9tYWluKTsKLQlpZiAoIXdha2VyZWYpCi0JCXJldHVybiBm YWxzZTsKLQotCXJldCA9IGludGVsX3Nkdm9fcG9ydF9lbmFibGVkKGRldl9wcml2LCBpbnRlbF9o ZG1pLT5oZG1pX3JlZywgcGlwZSk7Ci0KLQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJp diwgZW5jb2Rlci0+cG93ZXJfZG9tYWluLCB3YWtlcmVmKTsKLQotCXJldHVybiByZXQ7Ci19Ci0K LXN0YXRpYyB2b2lkIGludGVsX2hkbWlfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKLQkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKLXsK LQlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKGVuY29k ZXIpOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0JdTMyIHRtcCwg ZmxhZ3MgPSAwOwotCWludCBkb3RjbG9jazsKLQotCXBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMg fD0gQklUKElOVEVMX09VVFBVVF9IRE1JKTsKLQotCXRtcCA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsIGludGVsX2hkbWktPmhkbWlfcmVnKTsKLQotCWlmICh0bXAgJiBTRFZPX0hTWU5DX0FDVElW RV9ISUdIKQotCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX1BIU1lOQzsKLQllbHNlCi0JCWZsYWdz IHw9IERSTV9NT0RFX0ZMQUdfTkhTWU5DOwotCi0JaWYgKHRtcCAmIFNEVk9fVlNZTkNfQUNUSVZF X0hJR0gpCi0JCWZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfUFZTWU5DOwotCWVsc2UKLQkJZmxhZ3Mg fD0gRFJNX01PREVfRkxBR19OVlNZTkM7Ci0KLQlpZiAodG1wICYgSERNSV9NT0RFX1NFTEVDVF9I RE1JKQotCQlwaXBlX2NvbmZpZy0+aGFzX2hkbWlfc2luayA9IHRydWU7Ci0KLQlwaXBlX2NvbmZp Zy0+aW5mb2ZyYW1lcy5lbmFibGUgfD0KLQkJaW50ZWxfaGRtaV9pbmZvZnJhbWVzX2VuYWJsZWQo ZW5jb2RlciwgcGlwZV9jb25maWcpOwotCi0JaWYgKHBpcGVfY29uZmlnLT5pbmZvZnJhbWVzLmVu YWJsZSkKLQkJcGlwZV9jb25maWctPmhhc19pbmZvZnJhbWUgPSB0cnVlOwotCi0JaWYgKHRtcCAm IEhETUlfQVVESU9fRU5BQkxFKQotCQlwaXBlX2NvbmZpZy0+aGFzX2F1ZGlvID0gdHJ1ZTsKLQot CWlmICghSEFTX1BDSF9TUExJVChkZXZfcHJpdikgJiYKLQkgICAgdG1wICYgSERNSV9DT0xPUl9S QU5HRV8xNl8yMzUpCi0JCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0gdHJ1ZTsK LQotCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwotCi0JaWYg KCh0bXAgJiBTRFZPX0NPTE9SX0ZPUk1BVF9NQVNLKSA9PSBIRE1JX0NPTE9SX0ZPUk1BVF8xMmJw YykKLQkJZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayAqIDIgLyAzOwotCWVsc2UK LQkJZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jazsKLQotCWlmIChwaXBlX2NvbmZp Zy0+cGl4ZWxfbXVsdGlwbGllcikKLQkJZG90Y2xvY2sgLz0gcGlwZV9jb25maWctPnBpeGVsX211 bHRpcGxpZXI7Ci0KLQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0g ZG90Y2xvY2s7Ci0KLQlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9IDQ7Ci0KLQlpbnRlbF9oZG1p X3JlYWRfZ2NwX2luZm9mcmFtZShlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Ci0KLQlpbnRlbF9yZWFk X2luZm9mcmFtZShlbmNvZGVyLCBwaXBlX2NvbmZpZywKLQkJCSAgICAgSERNSV9JTkZPRlJBTUVf VFlQRV9BVkksCi0JCQkgICAgICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5hdmkpOwotCWludGVs X3JlYWRfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVfY29uZmlnLAotCQkJICAgICBIRE1JX0lORk9G UkFNRV9UWVBFX1NQRCwKLQkJCSAgICAgJnBpcGVfY29uZmlnLT5pbmZvZnJhbWVzLnNwZCk7Ci0J aW50ZWxfcmVhZF9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9jb25maWcsCi0JCQkgICAgIEhETUlf SU5GT0ZSQU1FX1RZUEVfVkVORE9SLAotCQkJICAgICAmcGlwZV9jb25maWctPmluZm9mcmFtZXMu aGRtaSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9oZG1pX2F1ZGlvKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcsCi0JCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uX3N0YXRlKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9f aTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKHBpcGVfY29uZmlnLT51YXBpLmNydGMpOwotCi0JZHJtX1dBUk5fT04oJmk5MTUt PmRybSwgIXBpcGVfY29uZmlnLT5oYXNfaGRtaV9zaW5rKTsKLQlkcm1fZGJnX2ttcygmaTkxNS0+ ZHJtLCAiRW5hYmxpbmcgSERNSSBhdWRpbyBvbiBwaXBlICVjXG4iLAotCQkgICAgcGlwZV9uYW1l KGNydGMtPnBpcGUpKTsKLQlpbnRlbF9hdWRpb19jb2RlY19lbmFibGUoZW5jb2RlciwgcGlwZV9j b25maWcsIGNvbm5fc3RhdGUpOwotfQotCi1zdGF0aWMgdm9pZCBnNHhfZW5hYmxlX2hkbWkoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkgICAgc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCi0JCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnLAotCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0 YXRlKQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0 IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRtaShlbmNvZGVyKTsKLQl1 MzIgdGVtcDsKLQotCXRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBpbnRlbF9oZG1pLT5o ZG1pX3JlZyk7Ci0KLQl0ZW1wIHw9IFNEVk9fRU5BQkxFOwotCWlmIChwaXBlX2NvbmZpZy0+aGFz X2F1ZGlvKQotCQl0ZW1wIHw9IEhETUlfQVVESU9fRU5BQkxFOwotCi0JaW50ZWxfZGVfd3JpdGUo ZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnLCB0ZW1wKTsKLQlpbnRlbF9kZV9wb3N0aW5n X3JlYWQoZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnKTsKLQotCWlmIChwaXBlX2NvbmZp Zy0+aGFzX2F1ZGlvKQotCQlpbnRlbF9lbmFibGVfaGRtaV9hdWRpbyhlbmNvZGVyLCBwaXBlX2Nv bmZpZywgY29ubl9zdGF0ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGlieF9lbmFibGVfaGRtaShzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcsCi0JCQkgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Rh dGUpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OwotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3Qg aW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKGVuY29kZXIpOwotCXUz MiB0ZW1wOwotCi0JdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIGludGVsX2hkbWktPmhk bWlfcmVnKTsKLQotCXRlbXAgfD0gU0RWT19FTkFCTEU7Ci0JaWYgKHBpcGVfY29uZmlnLT5oYXNf YXVkaW8pCi0JCXRlbXAgfD0gSERNSV9BVURJT19FTkFCTEU7Ci0KLQkvKgotCSAqIEhXIHdvcmth cm91bmQsIG5lZWQgdG8gd3JpdGUgdGhpcyB0d2ljZSBmb3IgaXNzdWUKLQkgKiB0aGF0IG1heSBy ZXN1bHQgaW4gZmlyc3Qgd3JpdGUgZ2V0dGluZyBtYXNrZWQuCi0JICovCi0JaW50ZWxfZGVfd3Jp dGUoZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnLCB0ZW1wKTsKLQlpbnRlbF9kZV9wb3N0 aW5nX3JlYWQoZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnKTsKLQlpbnRlbF9kZV93cml0 ZShkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcsIHRlbXApOwotCWludGVsX2RlX3Bvc3Rp bmdfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcpOwotCi0JLyoKLQkgKiBIVyB3 b3JrYXJvdW5kLCBuZWVkIHRvIHRvZ2dsZSBlbmFibGUgYml0IG9mZiBhbmQgb24KLQkgKiBmb3Ig MTJicGMgd2l0aCBwaXhlbCByZXBlYXQuCi0JICoKLQkgKiBGSVhNRTogQlNwZWMgc2F5cyB0aGlz IHNob3VsZCBiZSBkb25lIGF0IHRoZSBlbmQgb2YKLQkgKiBvZiB0aGUgbW9kZXNldCBzZXF1ZW5j ZSwgc28gbm90IHN1cmUgaWYgdGhpcyBpc24ndCB0b28gc29vbi4KLQkgKi8KLQlpZiAocGlwZV9j b25maWctPnBpcGVfYnBwID4gMjQgJiYKLQkgICAgcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxp ZXIgPiAxKSB7Ci0JCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBpbnRlbF9oZG1pLT5oZG1pX3Jl ZywKLQkJICAgICAgICAgICAgICAgdGVtcCAmIH5TRFZPX0VOQUJMRSk7Ci0JCWludGVsX2RlX3Bv c3RpbmdfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcpOwotCi0JCS8qCi0JCSAq IEhXIHdvcmthcm91bmQsIG5lZWQgdG8gd3JpdGUgdGhpcyB0d2ljZSBmb3IgaXNzdWUKLQkJICog dGhhdCBtYXkgcmVzdWx0IGluIGZpcnN0IHdyaXRlIGdldHRpbmcgbWFza2VkLgotCQkgKi8KLQkJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIGludGVsX2hkbWktPmhkbWlfcmVnLCB0ZW1wKTsKLQkJ aW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCBpbnRlbF9oZG1pLT5oZG1pX3JlZyk7Ci0J CWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBpbnRlbF9oZG1pLT5oZG1pX3JlZywgdGVtcCk7Ci0J CWludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcpOwot CX0KLQotCWlmIChwaXBlX2NvbmZpZy0+aGFzX2F1ZGlvKQotCQlpbnRlbF9lbmFibGVfaGRtaV9h dWRpbyhlbmNvZGVyLCBwaXBlX2NvbmZpZywgY29ubl9zdGF0ZSk7Ci19Ci0KLXN0YXRpYyB2b2lk IGNwdF9lbmFibGVfaGRtaShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJCSAg ICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCi0JCQkgICAgY29uc3Qgc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVu Y29kZXItPmJhc2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlw ZV9jb25maWctPnVhcGkuY3J0Yyk7Ci0Jc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBl bmNfdG9faW50ZWxfaGRtaShlbmNvZGVyKTsKLQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7 Ci0JdTMyIHRlbXA7Ci0KLQl0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRt aS0+aGRtaV9yZWcpOwotCi0JdGVtcCB8PSBTRFZPX0VOQUJMRTsKLQlpZiAocGlwZV9jb25maWct Pmhhc19hdWRpbykKLQkJdGVtcCB8PSBIRE1JX0FVRElPX0VOQUJMRTsKLQotCS8qCi0JICogV2FF bmFibGVIRE1JOGJwY0JlZm9yZTEyYnBjOnNuYixpdmIKLQkgKgotCSAqIFRoZSBwcm9jZWR1cmUg Zm9yIDEyYnBjIGlzIGFzIGZvbGxvd3M6Ci0JICogMS4gZGlzYWJsZSBIRE1JIGNsb2NrIGdhdGlu ZwotCSAqIDIuIGVuYWJsZSBIRE1JIHdpdGggOGJwYwotCSAqIDMuIGVuYWJsZSBIRE1JIHdpdGgg MTJicGMKLQkgKiA0LiBlbmFibGUgSERNSSBjbG9jayBnYXRpbmcKLQkgKi8KLQotCWlmIChwaXBl X2NvbmZpZy0+cGlwZV9icHAgPiAyNCkgewotCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgVFJB TlNfQ0hJQ0tFTjEocGlwZSksCi0JCSAgICAgICAgICAgICAgIGludGVsX2RlX3JlYWQoZGV2X3By aXYsIFRSQU5TX0NISUNLRU4xKHBpcGUpKSB8IFRSQU5TX0NISUNLRU4xX0hETUlVTklUX0dDX0RJ U0FCTEUpOwotCi0JCXRlbXAgJj0gflNEVk9fQ09MT1JfRk9STUFUX01BU0s7Ci0JCXRlbXAgfD0g U0RWT19DT0xPUl9GT1JNQVRfOGJwYzsKLQl9Ci0KLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwg aW50ZWxfaGRtaS0+aGRtaV9yZWcsIHRlbXApOwotCWludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZf cHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcpOwotCi0JaWYgKHBpcGVfY29uZmlnLT5waXBlX2Jw cCA+IDI0KSB7Ci0JCXRlbXAgJj0gflNEVk9fQ09MT1JfRk9STUFUX01BU0s7Ci0JCXRlbXAgfD0g SERNSV9DT0xPUl9GT1JNQVRfMTJicGM7Ci0KLQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIGlu dGVsX2hkbWktPmhkbWlfcmVnLCB0ZW1wKTsKLQkJaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9w cml2LCBpbnRlbF9oZG1pLT5oZG1pX3JlZyk7Ci0KLQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYs IFRSQU5TX0NISUNLRU4xKHBpcGUpLAotCQkgICAgICAgICAgICAgICBpbnRlbF9kZV9yZWFkKGRl dl9wcml2LCBUUkFOU19DSElDS0VOMShwaXBlKSkgJiB+VFJBTlNfQ0hJQ0tFTjFfSERNSVVOSVRf R0NfRElTQUJMRSk7Ci0JfQotCi0JaWYgKHBpcGVfY29uZmlnLT5oYXNfYXVkaW8pCi0JCWludGVs X2VuYWJsZV9oZG1pX2F1ZGlvKGVuY29kZXIsIHBpcGVfY29uZmlnLCBjb25uX3N0YXRlKTsKLX0K LQotc3RhdGljIHZvaWQgdmx2X2VuYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlLAotCQkJICAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKLQkJCSAgICBjb25zdCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKLXsKLX0KLQotc3RhdGljIHZv aWQgaW50ZWxfZGlzYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAot CQkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKLQkJCSAgICAgICBjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUpCi17Ci0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50 ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKGVuY29kZXIpOwotCXN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmRpZ19wb3J0ID0KLQkJaGRtaV90b19kaWdfcG9ydChpbnRlbF9oZG1pKTsKLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPnVh cGkuY3J0Yyk7Ci0JdTMyIHRlbXA7Ci0KLQl0ZW1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwg aW50ZWxfaGRtaS0+aGRtaV9yZWcpOwotCi0JdGVtcCAmPSB+KFNEVk9fRU5BQkxFIHwgSERNSV9B VURJT19FTkFCTEUpOwotCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBpbnRlbF9oZG1pLT5oZG1p X3JlZywgdGVtcCk7Ci0JaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCBpbnRlbF9oZG1p LT5oZG1pX3JlZyk7Ci0KLQkvKgotCSAqIEhXIHdvcmthcm91bmQgZm9yIElCWCwgd2UgbmVlZCB0 byBtb3ZlIHRoZSBwb3J0Ci0JICogdG8gdHJhbnNjb2RlciBBIGFmdGVyIGRpc2FibGluZyBpdCB0 byBhbGxvdyB0aGUKLQkgKiBtYXRjaGluZyBEUCBwb3J0IHRvIGJlIGVuYWJsZWQgb24gdHJhbnNj b2RlciBBLgotCSAqLwotCWlmIChIQVNfUENIX0lCWChkZXZfcHJpdikgJiYgY3J0Yy0+cGlwZSA9 PSBQSVBFX0IpIHsKLQkJLyoKLQkJICogV2UgZ2V0IENQVS9QQ0ggRklGTyB1bmRlcnJ1bnMgb24g dGhlIG90aGVyIHBpcGUgd2hlbgotCQkgKiBkb2luZyB0aGUgd29ya2Fyb3VuZC4gU3dlZXAgdGhl bSB1bmRlciB0aGUgcnVnLgotCQkgKi8KLQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3Jl cG9ydGluZyhkZXZfcHJpdiwgUElQRV9BLCBmYWxzZSk7Ci0JCWludGVsX3NldF9wY2hfZmlmb191 bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIFBJUEVfQSwgZmFsc2UpOwotCi0JCXRlbXAgJj0g flNEVk9fUElQRV9TRUxfTUFTSzsKLQkJdGVtcCB8PSBTRFZPX0VOQUJMRSB8IFNEVk9fUElQRV9T RUwoUElQRV9BKTsKLQkJLyoKLQkJICogSFcgd29ya2Fyb3VuZCwgbmVlZCB0byB3cml0ZSB0aGlz IHR3aWNlIGZvciBpc3N1ZQotCQkgKiB0aGF0IG1heSByZXN1bHQgaW4gZmlyc3Qgd3JpdGUgZ2V0 dGluZyBtYXNrZWQuCi0JCSAqLwotCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgaW50ZWxfaGRt aS0+aGRtaV9yZWcsIHRlbXApOwotCQlpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIGlu dGVsX2hkbWktPmhkbWlfcmVnKTsKLQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIGludGVsX2hk bWktPmhkbWlfcmVnLCB0ZW1wKTsKLQkJaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCBp bnRlbF9oZG1pLT5oZG1pX3JlZyk7Ci0KLQkJdGVtcCAmPSB+U0RWT19FTkFCTEU7Ci0JCWludGVs X2RlX3dyaXRlKGRldl9wcml2LCBpbnRlbF9oZG1pLT5oZG1pX3JlZywgdGVtcCk7Ci0JCWludGVs X2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgaW50ZWxfaGRtaS0+aGRtaV9yZWcpOwotCi0JCWlu dGVsX3dhaXRfZm9yX3ZibGFua19pZl9hY3RpdmUoZGV2X3ByaXYsIFBJUEVfQSk7Ci0JCWludGVs X3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIFBJUEVfQSwgdHJ1ZSk7 Ci0JCWludGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIFBJUEVf QSwgdHJ1ZSk7Ci0JfQotCi0JZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzKGVuY29kZXIsCi0JCQkJ ICAgICAgIGZhbHNlLAotCQkJCSAgICAgICBvbGRfY3J0Y19zdGF0ZSwgb2xkX2Nvbm5fc3RhdGUp OwotCi0JaW50ZWxfZHBfZHVhbF9tb2RlX3NldF90bWRzX291dHB1dChpbnRlbF9oZG1pLCBmYWxz ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGc0eF9kaXNhYmxlX2hkbWkoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCi0JCQkgICAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAot CQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCi0J CQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSkK LXsKLQlpZiAob2xkX2NydGNfc3RhdGUtPmhhc19hdWRpbykKLQkJaW50ZWxfYXVkaW9fY29kZWNf ZGlzYWJsZShlbmNvZGVyLAotCQkJCQkgIG9sZF9jcnRjX3N0YXRlLCBvbGRfY29ubl9zdGF0ZSk7 Ci0KLQlpbnRlbF9kaXNhYmxlX2hkbWkoc3RhdGUsIGVuY29kZXIsIG9sZF9jcnRjX3N0YXRlLCBv bGRfY29ubl9zdGF0ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBjaF9kaXNhYmxlX2hkbWkoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkgICAgIHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAotCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2Ny dGNfc3RhdGUsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRf Y29ubl9zdGF0ZSkKLXsKLQlpZiAob2xkX2NydGNfc3RhdGUtPmhhc19hdWRpbykKLQkJaW50ZWxf YXVkaW9fY29kZWNfZGlzYWJsZShlbmNvZGVyLAotCQkJCQkgIG9sZF9jcnRjX3N0YXRlLCBvbGRf Y29ubl9zdGF0ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBjaF9wb3N0X2Rpc2FibGVfaGRtaShzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJCQkgIHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAotCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlLAotCQkJCSAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25u X3N0YXRlKQotewotCWludGVsX2Rpc2FibGVfaGRtaShzdGF0ZSwgZW5jb2Rlciwgb2xkX2NydGNf c3RhdGUsIG9sZF9jb25uX3N0YXRlKTsKLX0KLQogc3RhdGljIGludCBpbnRlbF9oZG1pX3NvdXJj ZV9tYXhfdG1kc19jbG9jayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2 KTsKQEAgLTI3NTYsMTI1ICsyMzc0LDYgQEAgc3RhdGljIGludCBpbnRlbF9oZG1pX2dldF9tb2Rl cyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXJldHVybiBpbnRlbF9jb25uZWN0 b3JfdXBkYXRlX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVs X2hkbWlfcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJCQkg IHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJCSAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAotCQkJCSAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCi17Ci0Jc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGln X3BvcnQgPQotCQllbmNfdG9fZGlnX3BvcnQoZW5jb2Rlcik7Ci0KLQlpbnRlbF9oZG1pX3ByZXBh cmUoZW5jb2RlciwgcGlwZV9jb25maWcpOwotCi0JZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzKGVu Y29kZXIsCi0JCQkJICAgICAgIHBpcGVfY29uZmlnLT5oYXNfaW5mb2ZyYW1lLAotCQkJCSAgICAg ICBwaXBlX2NvbmZpZywgY29ubl9zdGF0ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHZsdl9oZG1pX3By ZV9lbmFibGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnLAotCQkJCWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0YXRlKQotewotCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZW5jX3Rv X2RpZ19wb3J0KGVuY29kZXIpOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0Jdmx2X3BoeV9wcmVfZW5jb2Rlcl9lbmFi bGUoZW5jb2RlciwgcGlwZV9jb25maWcpOwotCi0JLyogSERNSSAxLjBWLTJkQiAqLwotCXZsdl9z ZXRfcGh5X3NpZ25hbF9sZXZlbChlbmNvZGVyLCBwaXBlX2NvbmZpZywKLQkJCQkgMHgyYjI0NWY1 ZiwgMHgwMDAwMjAwMCwKLQkJCQkgMHg1NTc4YjgzYSwgMHgyYjI0Nzg3OCk7Ci0KLQlkaWdfcG9y dC0+c2V0X2luZm9mcmFtZXMoZW5jb2RlciwKLQkJCSAgICAgIHBpcGVfY29uZmlnLT5oYXNfaW5m b2ZyYW1lLAotCQkJICAgICAgcGlwZV9jb25maWcsIGNvbm5fc3RhdGUpOwotCi0JZzR4X2VuYWJs ZV9oZG1pKHN0YXRlLCBlbmNvZGVyLCBwaXBlX2NvbmZpZywgY29ubl9zdGF0ZSk7Ci0KLQl2bHZf d2FpdF9wb3J0X3JlYWR5KGRldl9wcml2LCBkaWdfcG9ydCwgMHgwKTsKLX0KLQotc3RhdGljIHZv aWQgdmx2X2hkbWlfcHJlX3BsbF9lbmFibGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCi0JCQkJICAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJCSAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCi0JCQkJICAgIGNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQotewotCWludGVsX2hkbWlfcHJl cGFyZShlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Ci0KLQl2bHZfcGh5X3ByZV9wbGxfZW5hYmxlKGVu Y29kZXIsIHBpcGVfY29uZmlnKTsKLX0KLQotc3RhdGljIHZvaWQgY2h2X2hkbWlfcHJlX3BsbF9l bmFibGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgIHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcsCi0JCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uX3N0YXRlKQotewotCWludGVsX2hkbWlfcHJlcGFyZShlbmNvZGVyLCBwaXBlX2Nv bmZpZyk7Ci0KLQljaHZfcGh5X3ByZV9wbGxfZW5hYmxlKGVuY29kZXIsIHBpcGVfY29uZmlnKTsK LX0KLQotc3RhdGljIHZvaWQgY2h2X2hkbWlfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKLQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNf c3RhdGUsCi0JCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9j b25uX3N0YXRlKQotewotCWNodl9waHlfcG9zdF9wbGxfZGlzYWJsZShlbmNvZGVyLCBvbGRfY3J0 Y19zdGF0ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHZsdl9oZG1pX3Bvc3RfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJCQkgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAotCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlLAotCQkJCSAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0 YXRlKQotewotCS8qIFJlc2V0IGxhbmVzIHRvIGF2b2lkIEhETUkgZmxpY2tlciAoVkxWIHcvYSkg Ki8KLQl2bHZfcGh5X3Jlc2V0X2xhbmVzKGVuY29kZXIsIG9sZF9jcnRjX3N0YXRlKTsKLX0KLQot c3RhdGljIHZvaWQgY2h2X2hkbWlfcG9zdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlLAotCQkJCSAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkJICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCi0JCQkJICBjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUpCi17Ci0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQotCXZsdl9kcGlvX2dldChkZXZfcHJp dik7Ci0KLQkvKiBBc3NlcnQgZGF0YSBsYW5lIHJlc2V0ICovCi0JY2h2X2RhdGFfbGFuZV9zb2Z0 X3Jlc2V0KGVuY29kZXIsIG9sZF9jcnRjX3N0YXRlLCB0cnVlKTsKLQotCXZsdl9kcGlvX3B1dChk ZXZfcHJpdik7Ci19Ci0KLXN0YXRpYyB2b2lkIGNodl9oZG1pX3ByZV9lbmFibGUoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCi0JCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAotCQkJ CWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQotewotCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIp OwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0KLQljaHZfcGh5X3By ZV9lbmNvZGVyX2VuYWJsZShlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Ci0KLQkvKiBGSVhNRTogUHJv Z3JhbSB0aGUgc3VwcG9ydCB4eHggVi1kQiAqLwotCS8qIFVzZSA4MDBtVi0wZEIgKi8KLQljaHZf c2V0X3BoeV9zaWduYWxfbGV2ZWwoZW5jb2RlciwgcGlwZV9jb25maWcsIDEyOCwgMTAyLCBmYWxz ZSk7Ci0KLQlkaWdfcG9ydC0+c2V0X2luZm9mcmFtZXMoZW5jb2RlciwKLQkJCSAgICAgIHBpcGVf Y29uZmlnLT5oYXNfaW5mb2ZyYW1lLAotCQkJICAgICAgcGlwZV9jb25maWcsIGNvbm5fc3RhdGUp OwotCi0JZzR4X2VuYWJsZV9oZG1pKHN0YXRlLCBlbmNvZGVyLCBwaXBlX2NvbmZpZywgY29ubl9z dGF0ZSk7Ci0KLQl2bHZfd2FpdF9wb3J0X3JlYWR5KGRldl9wcml2LCBkaWdfcG9ydCwgMHgwKTsK LQotCS8qIFNlY29uZCBjb21tb24gbGFuZSB3aWxsIHN0YXkgYWxpdmUgb24gaXRzIG93biBub3cg Ki8KLQljaHZfcGh5X3JlbGVhc2VfY2wyX292ZXJyaWRlKGVuY29kZXIpOwotfQotCiBzdGF0aWMg c3RydWN0IGkyY19hZGFwdGVyICoKIGludGVsX2hkbWlfZ2V0X2kyY19hZGFwdGVyKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiB7CkBAIC0yOTQ5LDEwICsyNDQ4LDYgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBpbnRlbF9oZG1pX2Nvbm5l Y3Rvcl9oZWxwZXJfZnVuY3MKIAkuYXRvbWljX2NoZWNrID0gaW50ZWxfZGlnaXRhbF9jb25uZWN0 b3JfYXRvbWljX2NoZWNrLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9m dW5jcyBpbnRlbF9oZG1pX2VuY19mdW5jcyA9IHsKLQkuZGVzdHJveSA9IGludGVsX2VuY29kZXJf ZGVzdHJveSwKLX07Ci0KIHN0YXRpYyB2b2lkCiBpbnRlbF9oZG1pX2FkZF9wcm9wZXJ0aWVzKHN0 cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pLCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQogewpAQCAtMzM2MiwxMTkgKzI4NTcsNiBAQCB2b2lkIGludGVsX2hkbWlfaW5pdF9jb25u ZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsCiAJCWRybV9kYmdfa21z KCZkZXZfcHJpdi0+ZHJtLCAiQ0VDIG5vdGlmaWVyIGdldCBmYWlsZWRcbiIpOwogfQogCi1zdGF0 aWMgZW51bSBpbnRlbF9ob3RwbHVnX3N0YXRlCi1pbnRlbF9oZG1pX2hvdHBsdWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCSAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKLXsKLQllbnVtIGludGVsX2hvdHBsdWdfc3RhdGUgc3RhdGU7Ci0KLQlzdGF0ZSA9IGlu dGVsX2VuY29kZXJfaG90cGx1ZyhlbmNvZGVyLCBjb25uZWN0b3IpOwotCi0JLyoKLQkgKiBPbiBt YW55IHBsYXRmb3JtcyB0aGUgSERNSSBsaXZlIHN0YXRlIHNpZ25hbCBpcyBrbm93biB0byBiZQot CSAqIHVucmVsaWFibGUsIHNvIHdlIGNhbid0IHVzZSBpdCB0byBkZXRlY3QgaWYgYSBzaW5rIGlz IGNvbm5lY3RlZCBvcgotCSAqIG5vdC4gSW5zdGVhZCB3ZSBkZXRlY3QgaWYgaXQncyBjb25uZWN0 ZWQgYmFzZWQgb24gd2hldGhlciB3ZSBjYW4KLQkgKiByZWFkIHRoZSBFRElEIG9yIG5vdC4gVGhh dCBpbiB0dXJuIGhhcyBhIHByb2JsZW0gZHVyaW5nIGRpc2Nvbm5lY3QsCi0JICogc2luY2UgdGhl IEhQRCBpbnRlcnJ1cHQgbWF5IGJlIHJhaXNlZCBiZWZvcmUgdGhlIEREQyBsaW5lcyBnZXQKLQkg KiBkaXNjb25uZWN0ZWQgKGR1ZSB0byBob3cgdGhlIHJlcXVpcmVkIGxlbmd0aCBvZiBEREMgdnMu IEhQRAotCSAqIGNvbm5lY3RvciBwaW5zIGFyZSBzcGVjaWZpZWQpIGFuZCBzbyB3ZSdsbCBzdGls bCBiZSBhYmxlIHRvIGdldCBhCi0JICogdmFsaWQgRURJRC4gVG8gc29sdmUgdGhpcyBzY2hlZHVs ZSBhbm90aGVyIGRldGVjdGlvbiBjeWNsZSBpZiB0aGlzCi0JICogdGltZSBhcm91bmQgd2UgZGlk bid0IGRldGVjdCBhbnkgY2hhbmdlIGluIHRoZSBzaW5rJ3MgY29ubmVjdGlvbgotCSAqIHN0YXR1 cy4KLQkgKi8KLQlpZiAoc3RhdGUgPT0gSU5URUxfSE9UUExVR19VTkNIQU5HRUQgJiYgIWNvbm5l Y3Rvci0+aG90cGx1Z19yZXRyaWVzKQotCQlzdGF0ZSA9IElOVEVMX0hPVFBMVUdfUkVUUlk7Ci0K LQlyZXR1cm4gc3RhdGU7Ci19Ci0KLXZvaWQgaW50ZWxfaGRtaV9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgICBpOTE1X3JlZ190IGhkbWlfcmVnLCBlbnVtIHBv cnQgcG9ydCkKLXsKLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydDsKLQlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcjsKLQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICppbnRlbF9jb25uZWN0b3I7Ci0KLQlkaWdfcG9ydCA9IGt6YWxsb2Moc2l6ZW9mKCpkaWdfcG9y dCksIEdGUF9LRVJORUwpOwotCWlmICghZGlnX3BvcnQpCi0JCXJldHVybjsKLQotCWludGVsX2Nv bm5lY3RvciA9IGludGVsX2Nvbm5lY3Rvcl9hbGxvYygpOwotCWlmICghaW50ZWxfY29ubmVjdG9y KSB7Ci0JCWtmcmVlKGRpZ19wb3J0KTsKLQkJcmV0dXJuOwotCX0KLQotCWludGVsX2VuY29kZXIg PSAmZGlnX3BvcnQtPmJhc2U7Ci0KLQltdXRleF9pbml0KCZkaWdfcG9ydC0+aGRjcF9tdXRleCk7 Ci0KLQlkcm1fZW5jb2Rlcl9pbml0KCZkZXZfcHJpdi0+ZHJtLCAmaW50ZWxfZW5jb2Rlci0+YmFz ZSwKLQkJCSAmaW50ZWxfaGRtaV9lbmNfZnVuY3MsIERSTV9NT0RFX0VOQ09ERVJfVE1EUywKLQkJ CSAiSERNSSAlYyIsIHBvcnRfbmFtZShwb3J0KSk7Ci0KLQlpbnRlbF9lbmNvZGVyLT5ob3RwbHVn ID0gaW50ZWxfaGRtaV9ob3RwbHVnOwotCWludGVsX2VuY29kZXItPmNvbXB1dGVfY29uZmlnID0g aW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZzsKLQlpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikp IHsKLQkJaW50ZWxfZW5jb2Rlci0+ZGlzYWJsZSA9IHBjaF9kaXNhYmxlX2hkbWk7Ci0JCWludGVs X2VuY29kZXItPnBvc3RfZGlzYWJsZSA9IHBjaF9wb3N0X2Rpc2FibGVfaGRtaTsKLQl9IGVsc2Ug ewotCQlpbnRlbF9lbmNvZGVyLT5kaXNhYmxlID0gZzR4X2Rpc2FibGVfaGRtaTsKLQl9Ci0JaW50 ZWxfZW5jb2Rlci0+Z2V0X2h3X3N0YXRlID0gaW50ZWxfaGRtaV9nZXRfaHdfc3RhdGU7Ci0JaW50 ZWxfZW5jb2Rlci0+Z2V0X2NvbmZpZyA9IGludGVsX2hkbWlfZ2V0X2NvbmZpZzsKLQlpZiAoSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpIHsKLQkJaW50ZWxfZW5jb2Rlci0+cHJlX3BsbF9lbmFibGUg PSBjaHZfaGRtaV9wcmVfcGxsX2VuYWJsZTsKLQkJaW50ZWxfZW5jb2Rlci0+cHJlX2VuYWJsZSA9 IGNodl9oZG1pX3ByZV9lbmFibGU7Ci0JCWludGVsX2VuY29kZXItPmVuYWJsZSA9IHZsdl9lbmFi bGVfaGRtaTsKLQkJaW50ZWxfZW5jb2Rlci0+cG9zdF9kaXNhYmxlID0gY2h2X2hkbWlfcG9zdF9k aXNhYmxlOwotCQlpbnRlbF9lbmNvZGVyLT5wb3N0X3BsbF9kaXNhYmxlID0gY2h2X2hkbWlfcG9z dF9wbGxfZGlzYWJsZTsKLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7Ci0J CWludGVsX2VuY29kZXItPnByZV9wbGxfZW5hYmxlID0gdmx2X2hkbWlfcHJlX3BsbF9lbmFibGU7 Ci0JCWludGVsX2VuY29kZXItPnByZV9lbmFibGUgPSB2bHZfaGRtaV9wcmVfZW5hYmxlOwotCQlp bnRlbF9lbmNvZGVyLT5lbmFibGUgPSB2bHZfZW5hYmxlX2hkbWk7Ci0JCWludGVsX2VuY29kZXIt PnBvc3RfZGlzYWJsZSA9IHZsdl9oZG1pX3Bvc3RfZGlzYWJsZTsKLQl9IGVsc2UgewotCQlpbnRl bF9lbmNvZGVyLT5wcmVfZW5hYmxlID0gaW50ZWxfaGRtaV9wcmVfZW5hYmxlOwotCQlpZiAoSEFT X1BDSF9DUFQoZGV2X3ByaXYpKQotCQkJaW50ZWxfZW5jb2Rlci0+ZW5hYmxlID0gY3B0X2VuYWJs ZV9oZG1pOwotCQllbHNlIGlmIChIQVNfUENIX0lCWChkZXZfcHJpdikpCi0JCQlpbnRlbF9lbmNv ZGVyLT5lbmFibGUgPSBpYnhfZW5hYmxlX2hkbWk7Ci0JCWVsc2UKLQkJCWludGVsX2VuY29kZXIt PmVuYWJsZSA9IGc0eF9lbmFibGVfaGRtaTsKLQl9Ci0KLQlpbnRlbF9lbmNvZGVyLT50eXBlID0g SU5URUxfT1VUUFVUX0hETUk7Ci0JaW50ZWxfZW5jb2Rlci0+cG93ZXJfZG9tYWluID0gaW50ZWxf cG9ydF90b19wb3dlcl9kb21haW4ocG9ydCk7Ci0JaW50ZWxfZW5jb2Rlci0+cG9ydCA9IHBvcnQ7 Ci0JaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Ci0JCWlmIChwb3J0ID09IFBPUlRfRCkK LQkJCWludGVsX2VuY29kZXItPnBpcGVfbWFzayA9IEJJVChQSVBFX0MpOwotCQllbHNlCi0JCQlp bnRlbF9lbmNvZGVyLT5waXBlX21hc2sgPSBCSVQoUElQRV9BKSB8IEJJVChQSVBFX0IpOwotCX0g ZWxzZSB7Ci0JCWludGVsX2VuY29kZXItPnBpcGVfbWFzayA9IH4wOwotCX0KLQlpbnRlbF9lbmNv ZGVyLT5jbG9uZWFibGUgPSAxIDw8IElOVEVMX09VVFBVVF9BTkFMT0c7Ci0JaW50ZWxfZW5jb2Rl ci0+aHBkX3BpbiA9IGludGVsX2hwZF9waW5fZGVmYXVsdChkZXZfcHJpdiwgcG9ydCk7Ci0JLyoK LQkgKiBCU3BlYyBpcyB1bmNsZWFyIGFib3V0IEhETUkrSERNSSBjbG9uaW5nIG9uIGc0eCwgYnV0 IGl0IHNlZW1zCi0JICogdG8gd29yayBvbiByZWFsIGhhcmR3YXJlLiBBbmQgc2luY2UgZzR4IGNh biBzZW5kIGluZm9mcmFtZXMgdG8KLQkgKiBvbmx5IG9uZSBwb3J0IGFueXdheSwgbm90aGluZyBp cyBsb3N0IGJ5IGFsbG93aW5nIGl0LgotCSAqLwotCWlmIChJU19HNFgoZGV2X3ByaXYpKQotCQlp bnRlbF9lbmNvZGVyLT5jbG9uZWFibGUgfD0gMSA8PCBJTlRFTF9PVVRQVVRfSERNSTsKLQotCWRp Z19wb3J0LT5oZG1pLmhkbWlfcmVnID0gaGRtaV9yZWc7Ci0JZGlnX3BvcnQtPmRwLm91dHB1dF9y ZWcgPSBJTlZBTElEX01NSU9fUkVHOwotCWRpZ19wb3J0LT5tYXhfbGFuZXMgPSA0OwotCi0JaW50 ZWxfaW5mb2ZyYW1lX2luaXQoZGlnX3BvcnQpOwotCi0JZGlnX3BvcnQtPmF1eF9jaCA9IGludGVs X2Jpb3NfcG9ydF9hdXhfY2goZGV2X3ByaXYsIHBvcnQpOwotCWludGVsX2hkbWlfaW5pdF9jb25u ZWN0b3IoZGlnX3BvcnQsIGludGVsX2Nvbm5lY3Rvcik7Ci19Ci0KIC8qCiAgKiBpbnRlbF9oZG1p X2RzY19nZXRfc2xpY2VfaGVpZ2h0IC0gZ2V0IHRoZSBkc2Mgc2xpY2VfaGVpZ2h0CiAgKiBAdmFj dGl2ZTogVmFjdGl2ZSBvZiBhIGRpc3BsYXkgbW9kZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2hkbWkuaAppbmRleCBmYTFhOWIwMzA4NTAuLmI0M2ExODBkMDA3ZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmgKQEAgLTIzLDExICsyMyw4IEBA IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlOwogdW5pb24gaGRtaV9pbmZvZnJhbWU7CiBlbnVt IHBvcnQ7CiAKLXZvaWQgaW50ZWxfaGRtaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgaTkxNV9yZWdfdCBoZG1pX3JlZywKLQkJICAgICBlbnVtIHBvcnQgcG9ydCk7CiB2 b2lkIGludGVsX2hkbWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq ZGlnX3BvcnQsCiAJCQkgICAgICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVj dG9yKTsKLXN0cnVjdCBpbnRlbF9oZG1pICplbmNfdG9faW50ZWxfaGRtaShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2Rlcik7CiBpbnQgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKIAkJCSAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0YXRlKTsKLS0gCjIuMjYuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==