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=-9.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,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 515C6C34026 for ; Mon, 17 Feb 2020 15:45:20 +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 246552467B for ; Mon, 17 Feb 2020 15:45:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Tx/CYjxZ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 246552467B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9980A6E97F; Mon, 17 Feb 2020 15:45:17 +0000 (UTC) Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6EAD6E980; Mon, 17 Feb 2020 15:45:15 +0000 (UTC) Received: by mail-wr1-x442.google.com with SMTP id m16so20266456wrx.11; Mon, 17 Feb 2020 07:45:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=UJYLvYhU/BqgpOkWhQ0m0kEeKCv5RPci/PQtxcc6Sms=; b=Tx/CYjxZEk0/Xevp7mrQ/aP9gQWxxotISyfE7+iXMWlxL4mR1huTeWDicC+HbvMp9s 2lZq5FIMoXIZHCZBG4sbo9yv1FOmkXwLR+3YZNd1eFEZeK4R7rC3zcSIGNyJYUkBl++o EfxRgGhwAyVPvDen838UkNKRs8JLHMC2RHoUprlOpajNkkzu6iE0M133jKQ77ZKX3zTv ANSGQrlqWnaozEFu2eSq2jdOT4upTnU5+cGfNlVPDnWdaTZepolm3aV0rmTqj0tJfHxP MsN/mgmaSMXFBwhRHXXRrz8G9gLpR/W8xzYAZXTXiuNPjTTDhApfN9lQui8JDywexSn9 2YXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=UJYLvYhU/BqgpOkWhQ0m0kEeKCv5RPci/PQtxcc6Sms=; b=QUeeQVlWaU4ePOvNgr8hQf7s9H91LXxs4z01A0cywcmTOnExb2OcOI9+KhSSbwiyHk H34iEN4PogAsDNQ+uJLf6LoHT+0wYEz1oUK7AgZzCTxq8aF3q1bdSdGosuRU/zVurZ66 UDOGJAJVG0IpBKPAe2xNHOwH4gZdbbxftniKV+FNwksBenRltK0UfcztdaaGvMz8SrAJ KtI6NmkjFweshzBY2eh9p/ZTiPxoduwaViOXBB04WEQQKAaRSCemx905qPzFgZAgsOxo O9WZadwuFJzyaTREzjAjZbAVQtzXCQoZwYbExCmGZSVRl/fFfATDI8IKFOwa+AJmK2K4 XhmA== X-Gm-Message-State: APjAAAUe8PoPFBVCI7AaqMIXWTavbwmoU36B+2yuaGoNepLBpBUg3MMp uwsZ+MYqtj9BttDC5M7fgOqbatGy X-Google-Smtp-Source: APXvYqzWsqZUjs2VfoAK40fa2+bWQXMLfMfldGRsgRQDRhkQNwkjAkKFE6JVhwiXEpPZ1HGtVCvxYw== X-Received: by 2002:a5d:4b88:: with SMTP id b8mr23030241wrt.343.1581954313942; Mon, 17 Feb 2020 07:45:13 -0800 (PST) Received: from abel.fritz.box ([2a02:908:1252:fb60:180d:d2d6:6ff9:a6cb]) by smtp.gmail.com with ESMTPSA id r6sm1372658wrq.92.2020.02.17.07.45.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Feb 2020 07:45:13 -0800 (PST) From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" X-Google-Original-From: =?UTF-8?q?Christian=20K=C3=B6nig?= To: dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-media@vger.kernel.org, intel-gfx@lists.freedesktop.org, daniel@ffwll.ch Subject: [PATCH 1/5] dma-buf: add dynamic DMA-buf handling v14 Date: Mon, 17 Feb 2020 16:45:05 +0100 Message-Id: <20200217154509.2265-2-christian.koenig@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200217154509.2265-1-christian.koenig@amd.com> References: <20200217154509.2265-1-christian.koenig@amd.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gdGhlIGV4cG9ydGVyIHNpZGUgd2UgYWRkIG9wdGlvbmFsIGV4cGxpY2l0IHBpbm5pbmcgY2Fs bGJhY2tzLiBXaGljaCBhcmUKY2FsbGVkIHdoZW4gdGhlIGltcG9ydGVyIGRvZXNuJ3QgaW1wbGVt ZW50IGR5bmFtaWMgaGFuZGxpbmcsIG1vdmUgbm90aWZpY2F0aW9uCm9yIG5lZWQgdGhlIERNQS1i dWYgbG9ja2VkIGluIHBsYWNlIGZvciBpdHMgdXNlIGNhc2UuCgpPbiB0aGUgaW1wb3J0ZXIgc2lk ZSB3ZSBhZGQgYW4gb3B0aW9uYWwgbW92ZV9ub3RpZnkgY2FsbGJhY2suIFRoaXMgY2FsbGJhY2sg aXMKdXNlZCBieSB0aGUgZXhwb3J0ZXIgdG8gaW5mb3JtIHRoZSBpbXBvcnRlcnMgdGhhdCB0aGVp ciBtYXBwaW5ncyBzaG91bGQgYmUKZGVzdHJveWVkIGFzIHNvb24gYXMgcG9zc2libGUuCgpUaGlz IGFsbG93cyB0aGUgZXhwb3J0ZXIgdG8gcHJvdmlkZSB0aGUgbWFwcGluZ3Mgd2l0aG91dCB0aGUg bmVlZCB0byBwaW4KdGhlIGJhY2tpbmcgc3RvcmUuCgp2MjogZG9uJ3QgdHJ5IHRvIGludmFsaWRh dGUgbWFwcGluZ3Mgd2hlbiB0aGUgY2FsbGJhY2sgaXMgTlVMTCwKICAgIGxvY2sgdGhlIHJlc2Vy dmF0aW9uIG9iaiB3aGlsZSB1c2luZyB0aGUgYXR0YWNobWVudHMsCiAgICBhZGQgaGVscGVyIHRv IHNldCB0aGUgY2FsbGJhY2sKdjM6IG1vdmUgZmxhZyBmb3IgaW52YWxpZGF0aW9uIHN1cHBvcnQg aW50byB0aGUgRE1BLWJ1ZiwKICAgIHVzZSBuZXcgYXR0YWNoX2luZm8gc3RydWN0dXJlIHRvIHNl dCB0aGUgY2FsbGJhY2sKdjQ6IHVzZSBpbXBvcnRlcl9wcml2IGZpZWxkIGluc3RlYWQgb2YgbWFu Z2xpbmcgZXhwb3J0ZXIgcHJpdi4KdjU6IGRyb3AgaW52YWxpZGF0aW9uX3N1cHBvcnRlZCBmbGFn CnY2OiBzcXVhc2ggdG9nZXRoZXIgd2l0aCBwaW4vdW5waW4gY2hhbmdlcwp2NzogcGluL3VucGlu IHRha2VzIGFuIGF0dGFjaG1lbnQgbm93CnY4OiBudWtlIGRtYV9idWZfYXR0YWNobWVudF8obWFw fHVubWFwKV9sb2NrZWQsCiAgICBldmVyeXRoaW5nIGlzIG5vdyBoYW5kbGVkIGJhY2t3YXJkIGNv bXBhdGlibGUKdjk6IGFsd2F5cyBjYWNoZSB3aGVuIGV4cG9ydC9pbXBvcnRlciBkb24ndCBhZ3Jl ZSBvbiBkeW5hbWljIGhhbmRsaW5nCnYxMDogbWluaW1hbCBzdHlsZSBjbGVhbnVwCnYxMTogZHJv cCBhdXRvbWF0aWNhbGx5IHJlLWVudHJ5IGF2b2lkYW5jZQp2MTI6IHJlbmFtZSBjYWxsYmFjayB0 byBtb3ZlX25vdGlmeQp2MTM6IGFkZCBtaWdodF9sb2NrIGluIGFwcHJvcHJpYXRlIHBsYWNlcwp2 MTQ6IHJlYmFzZSBvbiBzZXBhcmF0ZWQgbG9ja2luZyBjaGFuZ2UKClNpZ25lZC1vZmYtYnk6IENo cmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KLS0tCiBkcml2ZXJzL2Rt YS1idWYvZG1hLWJ1Zi5jICAgICAgICAgICAgICAgICAgIHwgMTA2ICsrKysrKysrKysrKysrKysr Ky0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jIHwgICA2ICst CiBpbmNsdWRlL2xpbnV4L2RtYS1idWYuaCAgICAgICAgICAgICAgICAgICAgIHwgIDc4ICsrKysr KysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDE3MCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIGIvZHJpdmVycy9k bWEtYnVmL2RtYS1idWYuYwppbmRleCBkMzc3YjRjYTY2YmYuLmNlMjkzY2VlNzZlZCAxMDA2NDQK LS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYworKysgYi9kcml2ZXJzL2RtYS1idWYvZG1h LWJ1Zi5jCkBAIC01MjksNiArNTI5LDEwIEBAIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmX2V4cG9y dChjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9leHBvcnRfaW5mbyAqZXhwX2luZm8pCiAJCSAgICBleHBf aW5mby0+b3BzLT5keW5hbWljX21hcHBpbmcpKQogCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsK IAorCWlmIChXQVJOX09OKCFleHBfaW5mby0+b3BzLT5keW5hbWljX21hcHBpbmcgJiYKKwkJICAg IChleHBfaW5mby0+b3BzLT5waW4gfHwgZXhwX2luZm8tPm9wcy0+dW5waW4pKSkKKwkJcmV0dXJu IEVSUl9QVFIoLUVJTlZBTCk7CisKIAlpZiAoIXRyeV9tb2R1bGVfZ2V0KGV4cF9pbmZvLT5vd25l cikpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9FTlQpOwogCkBAIC02NTMsNyArNjU3LDggQEAgRVhQ T1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9wdXQpOwogICogY2FsbHMgYXR0YWNoKCkgb2YgZG1hX2J1 Zl9vcHMgdG8gYWxsb3cgZGV2aWNlLXNwZWNpZmljIGF0dGFjaCBmdW5jdGlvbmFsaXR5CiAgKiBA ZG1hYnVmOgkJW2luXQlidWZmZXIgdG8gYXR0YWNoIGRldmljZSB0by4KICAqIEBkZXY6CQlbaW5d CWRldmljZSB0byBiZSBhdHRhY2hlZC4KLSAqIEBkeW5hbWljX21hcHBpbmc6CVtpbl0JY2FsbGlu ZyBjb252ZW50aW9uIGZvciBtYXAvdW5tYXAKKyAqIEBpbXBvcnRlcl9vcHMJW2luXQlpbXBvcnRl ciBvcGVyYXRpb25zIGZvciB0aGUgYXR0YWNobWVudAorICogQGltcG9ydGVyX3ByaXYJW2luXQlp bXBvcnRlciBwcml2YXRlIHBvaW50ZXIgZm9yIHRoZSBhdHRhY2htZW50CiAgKgogICogUmV0dXJu cyBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50IHBvaW50ZXIgZm9yIHRoaXMgYXR0YWNobWVudC4g QXR0YWNobWVudHMKICAqIG11c3QgYmUgY2xlYW5lZCB1cCBieSBjYWxsaW5nIGRtYV9idWZfZGV0 YWNoKCkuCkBAIC02NjksNyArNjc0LDggQEAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9wdXQp OwogICovCiBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICoKIGRtYV9idWZfZHluYW1pY19hdHRh Y2goc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGRldmljZSAqZGV2LAotCQkgICAgICAg Ym9vbCBkeW5hbWljX21hcHBpbmcpCisJCSAgICAgICBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9hdHRh Y2hfb3BzICppbXBvcnRlcl9vcHMsCisJCSAgICAgICB2b2lkICppbXBvcnRlcl9wcml2KQogewog CXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaDsKIAlpbnQgcmV0OwpAQCAtNjgzLDcg KzY4OSw4IEBAIGRtYV9idWZfZHluYW1pY19hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwg c3RydWN0IGRldmljZSAqZGV2LAogCiAJYXR0YWNoLT5kZXYgPSBkZXY7CiAJYXR0YWNoLT5kbWFi dWYgPSBkbWFidWY7Ci0JYXR0YWNoLT5keW5hbWljX21hcHBpbmcgPSBkeW5hbWljX21hcHBpbmc7 CisJYXR0YWNoLT5pbXBvcnRlcl9vcHMgPSBpbXBvcnRlcl9vcHM7CisJYXR0YWNoLT5pbXBvcnRl cl9wcml2ID0gaW1wb3J0ZXJfcHJpdjsKIAogCWlmIChkbWFidWYtPm9wcy0+YXR0YWNoKSB7CiAJ CXJldCA9IGRtYWJ1Zi0+b3BzLT5hdHRhY2goZG1hYnVmLCBhdHRhY2gpOwpAQCAtNzAyLDE1ICs3 MDksMTkgQEAgZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBz dHJ1Y3QgZGV2aWNlICpkZXYsCiAJICAgIGRtYV9idWZfaXNfZHluYW1pYyhkbWFidWYpKSB7CiAJ CXN0cnVjdCBzZ190YWJsZSAqc2d0OwogCi0JCWlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNo LT5kbWFidWYpKQorCQlpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSkgewog CQkJZG1hX3Jlc3ZfbG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdiwgTlVMTCk7CisJCQlyZXQgPSBk bWFfYnVmX3BpbihhdHRhY2gpOworCQkJaWYgKHJldCkKKwkJCQlnb3RvIGVycl91bmxvY2s7CisJ CX0KIAogCQlzZ3QgPSBkbWFidWYtPm9wcy0+bWFwX2RtYV9idWYoYXR0YWNoLCBETUFfQklESVJF Q1RJT05BTCk7CiAJCWlmICghc2d0KQogCQkJc2d0ID0gRVJSX1BUUigtRU5PTUVNKTsKIAkJaWYg KElTX0VSUihzZ3QpKSB7CiAJCQlyZXQgPSBQVFJfRVJSKHNndCk7Ci0JCQlnb3RvIGVycl91bmxv Y2s7CisJCQlnb3RvIGVycl91bnBpbjsKIAkJfQogCQlpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0 dGFjaC0+ZG1hYnVmKSkKIAkJCWRtYV9yZXN2X3VubG9jayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7 CkBAIC03MjQsNiArNzM1LDEwIEBAIGRtYV9idWZfZHluYW1pY19hdHRhY2goc3RydWN0IGRtYV9i dWYgKmRtYWJ1Ziwgc3RydWN0IGRldmljZSAqZGV2LAogCWtmcmVlKGF0dGFjaCk7CiAJcmV0dXJu IEVSUl9QVFIocmV0KTsKIAorZXJyX3VucGluOgorCWlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0 YWNoLT5kbWFidWYpKQorCQlkbWFfYnVmX3VucGluKGF0dGFjaCk7CisKIGVycl91bmxvY2s6CiAJ aWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpCiAJCWRtYV9yZXN2X3VubG9j ayhhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7CkBAIC03NDQsNyArNzU5LDcgQEAgRVhQT1JUX1NZTUJP TF9HUEwoZG1hX2J1Zl9keW5hbWljX2F0dGFjaCk7CiBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50 ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAogCQkJCQkgIHN0cnVjdCBk ZXZpY2UgKmRldikKIHsKLQlyZXR1cm4gZG1hX2J1Zl9keW5hbWljX2F0dGFjaChkbWFidWYsIGRl diwgZmFsc2UpOworCXJldHVybiBkbWFfYnVmX2R5bmFtaWNfYXR0YWNoKGRtYWJ1ZiwgZGV2LCBO VUxMLCBOVUxMKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfYXR0YWNoKTsKIApAQCAt NzY3LDggKzc4MiwxMCBAQCB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFi dWYsIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKIAogCQlkbWFidWYtPm9wcy0+ dW5tYXBfZG1hX2J1ZihhdHRhY2gsIGF0dGFjaC0+c2d0LCBhdHRhY2gtPmRpcik7CiAKLQkJaWYg KGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpCisJCWlmIChkbWFfYnVmX2lzX2R5 bmFtaWMoYXR0YWNoLT5kbWFidWYpKSB7CisJCQlkbWFfYnVmX3VucGluKGF0dGFjaCk7CiAJCQlk bWFfcmVzdl91bmxvY2soYXR0YWNoLT5kbWFidWYtPnJlc3YpOworCQl9CiAJfQogCiAJZG1hX3Jl c3ZfbG9jayhkbWFidWYtPnJlc3YsIE5VTEwpOwpAQCAtNzgxLDYgKzc5OCw0NCBAQCB2b2lkIGRt YV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBkbWFfYnVmX2F0dGFj aG1lbnQgKmF0dGFjaCkKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfZGV0YWNoKTsKIAor LyoqCisgKiBkbWFfYnVmX3BpbiAtIExvY2sgZG93biB0aGUgRE1BLWJ1ZgorICoKKyAqIEBhdHRh Y2g6CVtpbl0JYXR0YWNobWVudCB3aGljaCBzaG91bGQgYmUgcGlubmVkCisgKgorICogUmV0dXJu czoKKyAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICov CitpbnQgZG1hX2J1Zl9waW4oc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQorewor CXN0cnVjdCBkbWFfYnVmICpkbWFidWYgPSBhdHRhY2gtPmRtYWJ1ZjsKKwlpbnQgcmV0ID0gMDsK KworCWRtYV9yZXN2X2Fzc2VydF9oZWxkKGRtYWJ1Zi0+cmVzdik7CisKKwlpZiAoZG1hYnVmLT5v cHMtPnBpbikKKwkJcmV0ID0gZG1hYnVmLT5vcHMtPnBpbihhdHRhY2gpOworCisJcmV0dXJuIHJl dDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfcGluKTsKKworLyoqCisgKiBkbWFfYnVm X3VucGluIC0gUmVtb3ZlIGxvY2sgZnJvbSBETUEtYnVmCisgKgorICogQGF0dGFjaDoJW2luXQlh dHRhY2htZW50IHdoaWNoIHNob3VsZCBiZSB1bnBpbm5lZAorICovCit2b2lkIGRtYV9idWZfdW5w aW4oc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoKQoreworCXN0cnVjdCBkbWFfYnVm ICpkbWFidWYgPSBhdHRhY2gtPmRtYWJ1ZjsKKworCWRtYV9yZXN2X2Fzc2VydF9oZWxkKGRtYWJ1 Zi0+cmVzdik7CisKKwlpZiAoZG1hYnVmLT5vcHMtPnVucGluKQorCQlkbWFidWYtPm9wcy0+dW5w aW4oYXR0YWNoKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfdW5waW4pOworCiAvKioK ICAqIGRtYV9idWZfbWFwX2F0dGFjaG1lbnQgLSBSZXR1cm5zIHRoZSBzY2F0dGVybGlzdCB0YWJs ZSBvZiB0aGUgYXR0YWNobWVudDsKICAqIG1hcHBlZCBpbnRvIF9kZXZpY2VfIGFkZHJlc3Mgc3Bh Y2UuIElzIGEgd3JhcHBlciBmb3IgbWFwX2RtYV9idWYoKSBvZiB0aGUKQEAgLTgwMCw2ICs4NTUs NyBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRtYV9idWZfbWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCAqYXR0YWNoLAogCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJl Y3Rpb24pCiB7CiAJc3RydWN0IHNnX3RhYmxlICpzZ190YWJsZTsKKwlpbnQgcjsKIAogCW1pZ2h0 X3NsZWVwKCk7CiAKQEAgLTgyMSwxMyArODc3LDIzIEBAIHN0cnVjdCBzZ190YWJsZSAqZG1hX2J1 Zl9tYXBfYXR0YWNobWVudChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCiAJCXJl dHVybiBhdHRhY2gtPnNndDsKIAl9CiAKLQlpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ ZG1hYnVmKSkKKwlpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSkgewogCQlk bWFfcmVzdl9hc3NlcnRfaGVsZChhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7CisJCWlmICghYXR0YWNo LT5pbXBvcnRlcl9vcHMtPm1vdmVfbm90aWZ5KSB7CisJCQlyID0gZG1hX2J1Zl9waW4oYXR0YWNo KTsKKwkJCWlmIChyKQorCQkJCXJldHVybiBFUlJfUFRSKHIpOworCQl9CisJfQogCiAJc2dfdGFi bGUgPSBhdHRhY2gtPmRtYWJ1Zi0+b3BzLT5tYXBfZG1hX2J1ZihhdHRhY2gsIGRpcmVjdGlvbik7 CiAJaWYgKCFzZ190YWJsZSkKIAkJc2dfdGFibGUgPSBFUlJfUFRSKC1FTk9NRU0pOwogCisJaWYg KElTX0VSUihzZ190YWJsZSkgJiYgZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSAm JgorCSAgICAhYXR0YWNoLT5pbXBvcnRlcl9vcHMtPm1vdmVfbm90aWZ5KQorCQlkbWFfYnVmX3Vu cGluKGF0dGFjaCk7CisKIAlpZiAoIUlTX0VSUihzZ190YWJsZSkgJiYgYXR0YWNoLT5kbWFidWYt Pm9wcy0+Y2FjaGVfc2d0X21hcHBpbmcpIHsKIAkJYXR0YWNoLT5zZ3QgPSBzZ190YWJsZTsKIAkJ YXR0YWNoLT5kaXIgPSBkaXJlY3Rpb247CkBAIC04NjYsOSArOTMyLDMzIEBAIHZvaWQgZG1hX2J1 Zl91bm1hcF9hdHRhY2htZW50KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKIAkJ ZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQoYXR0YWNoLT5kbWFidWYtPnJlc3YpOwogCiAJYXR0YWNoLT5k bWFidWYtPm9wcy0+dW5tYXBfZG1hX2J1ZihhdHRhY2gsIHNnX3RhYmxlLCBkaXJlY3Rpb24pOwor CisJaWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikgJiYKKwkgICAgIWF0dGFj aC0+aW1wb3J0ZXJfb3BzLT5tb3ZlX25vdGlmeSkKKwkJZG1hX2J1Zl91bnBpbihhdHRhY2gpOwog fQogRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KTsKIAorLyoqCisg KiBkbWFfYnVmX21vdmVfbm90aWZ5IC0gbm90aWZ5IGF0dGFjaG1lbnRzIHRoYXQgRE1BLWJ1ZiBp cyBtb3ZpbmcKKyAqCisgKiBAZG1hYnVmOglbaW5dCWJ1ZmZlciB3aGljaCBpcyBtb3ZpbmcKKyAq CisgKiBJbmZvcm1zIGFsbCBhdHRhY2htZW5zdCB0aGF0IHRoZXkgbmVlZCB0byBkZXN0cm95IGFu ZCByZWNyZWF0ZWQgYWxsIHRoZWlyCisgKiBtYXBwaW5ncy4KKyAqLwordm9pZCBkbWFfYnVmX21v dmVfbm90aWZ5KHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCit7CisJc3RydWN0IGRtYV9idWZfYXR0 YWNobWVudCAqYXR0YWNoOworCisJZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQoZG1hYnVmLT5yZXN2KTsK KworCWxpc3RfZm9yX2VhY2hfZW50cnkoYXR0YWNoLCAmZG1hYnVmLT5hdHRhY2htZW50cywgbm9k ZSkKKwkJaWYgKGF0dGFjaC0+aW1wb3J0ZXJfb3BzICYmIGF0dGFjaC0+aW1wb3J0ZXJfb3BzLT5t b3ZlX25vdGlmeSkKKwkJCWF0dGFjaC0+aW1wb3J0ZXJfb3BzLT5tb3ZlX25vdGlmeShhdHRhY2gp OworfQorRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9tb3ZlX25vdGlmeSk7CisKIC8qKgogICog RE9DOiBjcHUgYWNjZXNzCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2RtYV9idWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k bWFfYnVmLmMKaW5kZXggZTJlZWM3YjY2MzM0Li5iMmNhNzhiNmFiY2UgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYwpAQCAtNDE0LDYgKzQxNCw5IEBAIGFt ZGdwdV9kbWFfYnVmX2NyZWF0ZV9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRt YV9idWYgKmRtYV9idWYpCiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KIAorc3RhdGljIGNvbnN0 IHN0cnVjdCBkbWFfYnVmX2F0dGFjaF9vcHMgYW1kZ3B1X2RtYV9idWZfYXR0YWNoX29wcyA9IHsK K307CisKIC8qKgogICogYW1kZ3B1X2dlbV9wcmltZV9pbXBvcnQgLSAmZHJtX2RyaXZlci5nZW1f cHJpbWVfaW1wb3J0IGltcGxlbWVudGF0aW9uCiAgKiBAZGV2OiBEUk0gZGV2aWNlCkBAIC00NDYs NyArNDQ5LDggQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICphbWRncHVfZ2VtX3ByaW1lX2ltcG9y dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChJU19FUlIob2JqKSkKIAkJcmV0dXJuIG9i ajsKIAotCWF0dGFjaCA9IGRtYV9idWZfZHluYW1pY19hdHRhY2goZG1hX2J1ZiwgZGV2LT5kZXYs IHRydWUpOworCWF0dGFjaCA9IGRtYV9idWZfZHluYW1pY19hdHRhY2goZG1hX2J1ZiwgZGV2LT5k ZXYsCisJCQkJCSZhbWRncHVfZG1hX2J1Zl9hdHRhY2hfb3BzLCBOVUxMKTsKIAlpZiAoSVNfRVJS KGF0dGFjaCkpIHsKIAkJZHJtX2dlbV9vYmplY3RfcHV0KG9iaik7CiAJCXJldHVybiBFUlJfQ0FT VChhdHRhY2gpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmggYi9pbmNsdWRl L2xpbnV4L2RtYS1idWYuaAppbmRleCBhZjczZjgzNWM1MWMuLjc0NTZiYjkzNzYzNSAxMDA2NDQK LS0tIGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKKysrIGIvaW5jbHVkZS9saW51eC9kbWEtYnVm LmgKQEAgLTkzLDE0ICs5Myw0MCBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewogCSAqLwogCXZvaWQg KCpkZXRhY2gpKHN0cnVjdCBkbWFfYnVmICosIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKik7 CiAKKwkvKioKKwkgKiBAcGluOgorCSAqCisJICogVGhpcyBpcyBjYWxsZWQgYnkgZG1hX2J1Zl9w aW4gYW5kIGxldHMgdGhlIGV4cG9ydGVyIGtub3cgdGhhdCB0aGUKKwkgKiBETUEtYnVmIGNhbid0 IGJlIG1vdmVkIGFueSBtb3JlLgorCSAqCisJICogVGhpcyBpcyBjYWxsZWQgd2l0aCB0aGUgZG1h YnVmLT5yZXN2IG9iamVjdCBsb2NrZWQuCisJICoKKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlv bmFsLgorCSAqCisJICogUmV0dXJuczoKKwkgKgorCSAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUg ZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorCSAqLworCWludCAoKnBpbikoc3RydWN0IGRtYV9idWZf YXR0YWNobWVudCAqYXR0YWNoKTsKKworCS8qKgorCSAqIEB1bnBpbjoKKwkgKgorCSAqIFRoaXMg aXMgY2FsbGVkIGJ5IGRtYV9idWZfdW5waW4gYW5kIGxldHMgdGhlIGV4cG9ydGVyIGtub3cgdGhh dCB0aGUKKwkgKiBETUEtYnVmIGNhbiBiZSBtb3ZlZCBhZ2Fpbi4KKwkgKgorCSAqIFRoaXMgaXMg Y2FsbGVkIHdpdGggdGhlIGRtYWJ1Zi0+cmVzdiBvYmplY3QgbG9ja2VkLgorCSAqCisJICogVGhp cyBjYWxsYmFjayBpcyBvcHRpb25hbC4KKwkgKi8KKwl2b2lkICgqdW5waW4pKHN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgKmF0dGFjaCk7CisKIAkvKioKIAkgKiBAbWFwX2RtYV9idWY6CiAJICoK IAkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVmX21hcF9hdHRhY2htZW50KCkgYW5kIGlzIHVz ZWQgdG8gbWFwIGEKIAkgKiBzaGFyZWQgJmRtYV9idWYgaW50byBkZXZpY2UgYWRkcmVzcyBzcGFj ZSwgYW5kIGl0IGlzIG1hbmRhdG9yeS4gSXQKLQkgKiBjYW4gb25seSBiZSBjYWxsZWQgaWYgQGF0 dGFjaCBoYXMgYmVlbiBjYWxsZWQgc3VjY2Vzc2Z1bGx5LiBUaGlzCi0JICogZXNzZW50aWFsbHkg cGlucyB0aGUgRE1BIGJ1ZmZlciBpbnRvIHBsYWNlLCBhbmQgaXQgY2Fubm90IGJlIG1vdmVkCi0J ICogYW55IG1vcmUKKwkgKiBjYW4gb25seSBiZSBjYWxsZWQgaWYgQGF0dGFjaCBoYXMgYmVlbiBj YWxsZWQgc3VjY2Vzc2Z1bGx5LgogCSAqCiAJICogVGhpcyBjYWxsIG1heSBzbGVlcCwgZS5nLiB3 aGVuIHRoZSBiYWNraW5nIHN0b3JhZ2UgZmlyc3QgbmVlZHMgdG8gYmUKIAkgKiBhbGxvY2F0ZWQs IG9yIG1vdmVkIHRvIGEgbG9jYXRpb24gc3VpdGFibGUgZm9yIGFsbCBjdXJyZW50bHkgYXR0YWNo ZWQKQEAgLTE0MSw5ICsxNjcsNiBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewogCSAqCiAJICogVGhp cyBpcyBjYWxsZWQgYnkgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KCkgYW5kIHNob3VsZCB1bm1h cCBhbmQKIAkgKiByZWxlYXNlIHRoZSAmc2dfdGFibGUgYWxsb2NhdGVkIGluIEBtYXBfZG1hX2J1 ZiwgYW5kIGl0IGlzIG1hbmRhdG9yeS4KLQkgKiBJdCBzaG91bGQgYWxzbyB1bnBpbiB0aGUgYmFj a2luZyBzdG9yYWdlIGlmIHRoaXMgaXMgdGhlIGxhc3QgbWFwcGluZwotCSAqIG9mIHRoZSBETUEg YnVmZmVyLCBpdCB0aGUgZXhwb3J0ZXIgc3VwcG9ydHMgYmFja2luZyBzdG9yYWdlCi0JICogbWln cmF0aW9uLgogCSAqLwogCXZvaWQgKCp1bm1hcF9kbWFfYnVmKShzdHJ1Y3QgZG1hX2J1Zl9hdHRh Y2htZW50ICosCiAJCQkgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKiwKQEAgLTMzNiw2ICszNTksMzQg QEAgc3RydWN0IGRtYV9idWYgewogCX0gY2JfZXhjbCwgY2Jfc2hhcmVkOwogfTsKIAorLyoqCisg KiBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfb3BzIC0gaW1wb3J0ZXIgb3BlcmF0aW9ucyBmb3IgYW4g YXR0YWNobWVudAorICogQG1vdmVfbm90aWZ5OiBbb3B0aW9uYWxdIG5vdGlmaWNhdGlvbiB0aGF0 IHRoZSBETUEtYnVmIGlzIG1vdmluZworICoKKyAqIEF0dGFjaG1lbnQgb3BlcmF0aW9ucyBpbXBs ZW1lbnRlZCBieSB0aGUgaW1wb3J0ZXIuCisgKi8KK3N0cnVjdCBkbWFfYnVmX2F0dGFjaF9vcHMg eworCS8qKgorCSAqIEBtb3ZlX25vdGlmeQorCSAqCisJICogSWYgdGhpcyBjYWxsYmFjayBpcyBw cm92aWRlZCB0aGUgZnJhbWV3b3JrIGNhbiBhdm9pZCBwaW5uaW5nIHRoZQorCSAqIGJhY2tpbmcg c3RvcmUgd2hpbGUgbWFwcGluZ3MgZXhpc3RzLgorCSAqCisJICogVGhpcyBjYWxsYmFjayBpcyBj YWxsZWQgd2l0aCB0aGUgbG9jayBvZiB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0CisJICogYXNzb2Np YXRlZCB3aXRoIHRoZSBkbWFfYnVmIGhlbGQgYW5kIHRoZSBtYXBwaW5nIGZ1bmN0aW9uIG11c3Qg YmUKKwkgKiBjYWxsZWQgd2l0aCB0aGlzIGxvY2sgaGVsZCBhcyB3ZWxsLiBUaGlzIG1ha2VzIHN1 cmUgdGhhdCBubyBtYXBwaW5nCisJICogaXMgY3JlYXRlZCBjb25jdXJyZW50bHkgd2l0aCBhbiBv bmdvaW5nIG1vdmUgb3BlcmF0aW9uLgorCSAqCisJICogTWFwcGluZ3Mgc3RheSB2YWxpZCBhbmQg YXJlIG5vdCBkaXJlY3RseSBhZmZlY3RlZCBieSB0aGlzIGNhbGxiYWNrLgorCSAqIEJ1dCB0aGUg RE1BLWJ1ZiBjYW4gbm93IGJlIGluIGEgZGlmZmVyZW50IHBoeXNpY2FsIGxvY2F0aW9uLCBzbyBh bGwKKwkgKiBtYXBwaW5ncyBzaG91bGQgYmUgZGVzdHJveWVkIGFuZCByZS1jcmVhdGVkIGFzIHNv b24gYXMgcG9zc2libGUuCisJICoKKwkgKiBOZXcgbWFwcGluZ3MgY2FuIGJlIGNyZWF0ZWQgYWZ0 ZXIgdGhpcyBjYWxsYmFjayByZXR1cm5zLCBhbmQgd2lsbAorCSAqIHBvaW50IHRvIHRoZSBuZXcg bG9jYXRpb24gb2YgdGhlIERNQS1idWYuCisJICovCisJdm9pZCAoKm1vdmVfbm90aWZ5KShzdHJ1 Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpOworfTsKKwogLyoqCiAgKiBzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50IC0gaG9sZHMgZGV2aWNlLWJ1ZmZlciBhdHRhY2htZW50IGRhdGEKICAq IEBkbWFidWY6IGJ1ZmZlciBmb3IgdGhpcyBhdHRhY2htZW50LgpAQCAtMzQ0LDggKzM5NSw5IEBA IHN0cnVjdCBkbWFfYnVmIHsKICAqIEBzZ3Q6IGNhY2hlZCBtYXBwaW5nLgogICogQGRpcjogZGly ZWN0aW9uIG9mIGNhY2hlZCBtYXBwaW5nLgogICogQHByaXY6IGV4cG9ydGVyIHNwZWNpZmljIGF0 dGFjaG1lbnQgZGF0YS4KLSAqIEBkeW5hbWljX21hcHBpbmc6IHRydWUgaWYgZG1hX2J1Zl9tYXAv dW5tYXBfYXR0YWNobWVudCgpIGlzIGNhbGxlZCB3aXRoIHRoZQotICogZG1hX3Jlc3YgbG9jayBo ZWxkLgorICogQGltcG9ydGVyX29wczogaW1wb3J0ZXIgb3BlcmF0aW9ucyBmb3IgdGhpcyBhdHRh Y2htZW50LCBpZiBwcm92aWRlZAorICogZG1hX2J1Zl9tYXAvdW5tYXBfYXR0YWNobWVudCgpIG11 c3QgYmUgY2FsbGVkIHdpdGggdGhlIGRtYV9yZXN2IGxvY2sgaGVsZC4KKyAqIEBpbXBvcnRlcl9w cml2OiBpbXBvcnRlciBzcGVjaWZpYyBhdHRhY2htZW50IGRhdGEuCiAgKgogICogVGhpcyBzdHJ1 Y3R1cmUgaG9sZHMgdGhlIGF0dGFjaG1lbnQgaW5mb3JtYXRpb24gYmV0d2VlbiB0aGUgZG1hX2J1 ZiBidWZmZXIKICAqIGFuZCBpdHMgdXNlciBkZXZpY2UocykuIFRoZSBsaXN0IGNvbnRhaW5zIG9u ZSBhdHRhY2htZW50IHN0cnVjdCBwZXIgZGV2aWNlCkBAIC0zNjIsNyArNDE0LDggQEAgc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCB7CiAJc3RydWN0IGxpc3RfaGVhZCBub2RlOwogCXN0cnVjdCBz Z190YWJsZSAqc2d0OwogCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcjsKLQlib29sIGR5bmFt aWNfbWFwcGluZzsKKwljb25zdCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2hfb3BzICppbXBvcnRlcl9v cHM7CisJdm9pZCAqaW1wb3J0ZXJfcHJpdjsKIAl2b2lkICpwcml2OwogfTsKIApAQCAtNDM4LDE2 ICs0OTEsMTkgQEAgc3RhdGljIGlubGluZSBib29sIGRtYV9idWZfaXNfZHluYW1pYyhzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmKQogc3RhdGljIGlubGluZSBib29sCiBkbWFfYnVmX2F0dGFjaG1lbnRf aXNfZHluYW1pYyhzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCiB7Ci0JcmV0dXJu IGF0dGFjaC0+ZHluYW1pY19tYXBwaW5nOworCXJldHVybiAhIWF0dGFjaC0+aW1wb3J0ZXJfb3Bz OwogfQogCiBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hYnVmLAogCQkJCQkgIHN0cnVjdCBkZXZpY2UgKmRldik7CiBzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICoKIGRtYV9idWZfZHluYW1pY19hdHRhY2goc3RydWN0IGRtYV9idWYg KmRtYWJ1Ziwgc3RydWN0IGRldmljZSAqZGV2LAotCQkgICAgICAgYm9vbCBkeW5hbWljX21hcHBp bmcpOworCQkgICAgICAgY29uc3Qgc3RydWN0IGRtYV9idWZfYXR0YWNoX29wcyAqaW1wb3J0ZXJf b3BzLAorCQkgICAgICAgdm9pZCAqaW1wb3J0ZXJfcHJpdik7CiB2b2lkIGRtYV9idWZfZGV0YWNo KHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCiAJCSAgICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50 ICphdHRhY2gpOworaW50IGRtYV9idWZfcGluKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0 dGFjaCk7Cit2b2lkIGRtYV9idWZfdW5waW4oc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0 YWNoKTsKIAogc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0KGNvbnN0IHN0cnVjdCBkbWFf YnVmX2V4cG9ydF9pbmZvICpleHBfaW5mbyk7CiAKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==