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.5 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,USER_AGENT_GIT autolearn=unavailable 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 6733CC10F29 for ; Wed, 11 Mar 2020 15:04:36 +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 63478206C0 for ; Wed, 11 Mar 2020 15:04:35 +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="Rev8PwV8" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 63478206C0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.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 CDBD36E99C; Wed, 11 Mar 2020 15:04:33 +0000 (UTC) Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by gabe.freedesktop.org (Postfix) with ESMTPS id DFB416E988; Wed, 11 Mar 2020 13:52:07 +0000 (UTC) Received: by mail-wm1-x341.google.com with SMTP id n2so2224627wmc.3; Wed, 11 Mar 2020 06:52:07 -0700 (PDT) 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=2jcARVtU7yHOinId9qpR+Hw2dvEtPObOk+bGG1YCV/I=; b=Rev8PwV8NSO3oQAw2LPqgoEXhvX6BYGUxYbiA+lZkiM45h0DZY9dnfvap0AVX0PmrV GWOxV97wObC6ucxP2TzwGJYI70uLFztyWABHxbPC3RuwZQ7dOpqV7krX0OgYeM/ejPQC FM2XCzZOtBnmBOyL4rwEsS4803uB5w2op9/QGYmJ8VusjgwUkRXth0NHVC/8Y9PLZpzq +G5G8DmRDUPaI9gnYPq0ytyfwnWiUbzO5pPM4o1qGV465MDR3q35sYVQQMqzzm9k2gH7 YBjzps9jxuGiVQXmQS6ddaWTDNgrwY2hCqIbKRh4+wCQflbUAgQ7+fdaEE6qbYNR0WFQ jKnA== 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=2jcARVtU7yHOinId9qpR+Hw2dvEtPObOk+bGG1YCV/I=; b=M1SPWbK+0ue8AiATxhpSJSgWyA3Xc/tSRInaEnanV7iHRugUmHfceJu0jgwDE7pXGJ ZHuHroNK/E0okTjLkDb5TnSEJ2yg925OF3hLN28al19tZ/7XVNxslFVr3VcNAv8ol8MT vj9D2lKT7VV5mQ8LZIvEqGJFg1Hiz38NWLpotmYma73eagE973i7Ly6tLIUdWYfTKTVz ANDRkePQN0IyZ9rHCFTOx7VuBtb/LlPra+NxwgHA3qEFQS6HbL2GTsa1HfUrX8/vSBb3 dU26ltJbd/SqlVdjelTG0VPnCnIO+lbmIgR+z/wxYYUsIv1ukhLfIQWs1qTj8vhH3C7I 4cRA== X-Gm-Message-State: ANhLgQ1P4Yf2aNFQj5I8/TqxOAh0uLVOsicn1r9yOZy0qDvYzq0PO36P wp54AkA5oWytGsSa6zspkq0= X-Google-Smtp-Source: ADFU+vvUSYX5/OM5hcn0nhu2x1Tew/qLu46Zbs/YfGjEMxA7BATk4X93nC/7GYaJ7x30Kuv7UgiyNQ== X-Received: by 2002:a05:600c:258:: with SMTP id 24mr3917220wmj.59.1583934726458; Wed, 11 Mar 2020 06:52:06 -0700 (PDT) Received: from abel.fritz.box ([2a02:908:1252:fb60:8dc:e796:e7da:a319]) by smtp.gmail.com with ESMTPSA id 138sm3183811wmb.21.2020.03.11.06.52.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Mar 2020 06:52:06 -0700 (PDT) From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" X-Google-Original-From: =?UTF-8?q?Christian=20K=C3=B6nig?= To: David1.Zhou@amd.com, hch@infradead.org, jgg@ziepe.ca, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-media@vger.kernel.org, intel-gfx@lists.freedesktop.org Date: Wed, 11 Mar 2020 14:51:57 +0100 Message-Id: <20200311135158.3310-6-christian.koenig@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200311135158.3310-1-christian.koenig@amd.com> References: <20200311135158.3310-1-christian.koenig@amd.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 11 Mar 2020 15:04:30 +0000 Subject: [Intel-gfx] [PATCH 5/6] drm/amdgpu: add support for exporting VRAM using DMA-buf v2 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" V2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gdGhpcyBub3cgYWZ0ZXIgY2hlY2tpbmcgYWxsIHRoZSBw cmVyZXF1aXNpdGVzLgoKdjI6IGZpeCBlbnRyaWUgY291bnQgaW4gdGhlIHNndAoKU2lnbmVkLW9m Zi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMgIHwgNTYgKysrKysrKyst LS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uaCAgICAgIHwgMTIgKyst CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYyB8IDk3ICsrKysr KysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCAxNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZG1hX2J1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYu YwppbmRleCBiYmY2NzgwMGM4YTYuLjQzZDhlZDdkYmQwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jCkBAIC0yNzYsMTQgKzI3NiwyMSBAQCBzdGF0aWMg c3RydWN0IHNnX3RhYmxlICphbWRncHVfZG1hX2J1Zl9tYXAoc3RydWN0IGRtYV9idWZfYXR0YWNo bWVudCAqYXR0YWNoLAogCXN0cnVjdCBkbWFfYnVmICpkbWFfYnVmID0gYXR0YWNoLT5kbWFidWY7 CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2OwogCXN0cnVjdCBh bWRncHVfYm8gKmJvID0gZ2VtX3RvX2FtZGdwdV9ibyhvYmopOworCXN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2ID0gYW1kZ3B1X3R0bV9hZGV2KGJvLT50Ym8uYmRldik7CiAJc3RydWN0IHNnX3Rh YmxlICpzZ3Q7CiAJbG9uZyByOwogCiAJaWYgKCFiby0+cGluX2NvdW50KSB7Ci0JCS8qIG1vdmUg YnVmZmVyIGludG8gR1RUICovCisJCS8qIG1vdmUgYnVmZmVyIGludG8gR1RUIG9yIFZSQU0gKi8K IAkJc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07CisJCXVu c2lnbmVkIGRvbWFpbnMgPSBBTURHUFVfR0VNX0RPTUFJTl9HVFQ7CiAKLQkJYW1kZ3B1X2JvX3Bs YWNlbWVudF9mcm9tX2RvbWFpbihibywgQU1ER1BVX0dFTV9ET01BSU5fR1RUKTsKKwkJaWYgKGJv LT5wcmVmZXJyZWRfZG9tYWlucyAmIEFNREdQVV9HRU1fRE9NQUlOX1ZSQU0gJiYKKwkJICAgIGF0 dGFjaC0+cGVlcjJwZWVyKSB7CisJCQliby0+ZmxhZ3MgfD0gQU1ER1BVX0dFTV9DUkVBVEVfQ1BV X0FDQ0VTU19SRVFVSVJFRDsKKwkJCWRvbWFpbnMgfD0gQU1ER1BVX0dFTV9ET01BSU5fVlJBTTsK KwkJfQorCQlhbWRncHVfYm9fcGxhY2VtZW50X2Zyb21fZG9tYWluKGJvLCBkb21haW5zKTsKIAkJ ciA9IHR0bV9ib192YWxpZGF0ZSgmYm8tPnRibywgJmJvLT5wbGFjZW1lbnQsICZjdHgpOwogCQlp ZiAocikKIAkJCXJldHVybiBFUlJfUFRSKHIpOwpAQCAtMjkzLDIwICszMDAsMzQgQEAgc3RhdGlj IHN0cnVjdCBzZ190YWJsZSAqYW1kZ3B1X2RtYV9idWZfbWFwKHN0cnVjdCBkbWFfYnVmX2F0dGFj aG1lbnQgKmF0dGFjaCwKIAkJcmV0dXJuIEVSUl9QVFIoLUVCVVNZKTsKIAl9CiAKLQlzZ3QgPSBk cm1fcHJpbWVfcGFnZXNfdG9fc2coYm8tPnRiby50dG0tPnBhZ2VzLCBiby0+dGJvLm51bV9wYWdl cyk7Ci0JaWYgKElTX0VSUihzZ3QpKQotCQlyZXR1cm4gc2d0OwotCi0JaWYgKCFkbWFfbWFwX3Nn X2F0dHJzKGF0dGFjaC0+ZGV2LCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgZGlyLAotCQkJICAgICAg RE1BX0FUVFJfU0tJUF9DUFVfU1lOQykpCi0JCWdvdG8gZXJyb3JfZnJlZTsKKwlzd2l0Y2ggKGJv LT50Ym8ubWVtLm1lbV90eXBlKSB7CisJY2FzZSBUVE1fUExfVFQ6CisJCXNndCA9IGRybV9wcmlt ZV9wYWdlc190b19zZyhiby0+dGJvLnR0bS0+cGFnZXMsCisJCQkJCSAgICBiby0+dGJvLm51bV9w YWdlcyk7CisJCWlmIChJU19FUlIoc2d0KSkKKwkJCXJldHVybiBzZ3Q7CisKKwkJaWYgKCFkbWFf bWFwX3NnX2F0dHJzKGF0dGFjaC0+ZGV2LCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgZGlyLAorCQkJ CSAgICAgIERNQV9BVFRSX1NLSVBfQ1BVX1NZTkMpKQorCQkJZ290byBlcnJvcl9mcmVlOworCQli cmVhazsKKworCWNhc2UgVFRNX1BMX1ZSQU06CisJCXIgPSBhbWRncHVfdnJhbV9tZ3JfYWxsb2Nf c2d0KGFkZXYsICZiby0+dGJvLm1lbSwgYXR0YWNoLT5kZXYsCisJCQkJCSAgICAgIGRpciwgJnNn dCk7CisJCWlmIChyKQorCQkJcmV0dXJuIEVSUl9QVFIocik7CisJCWJyZWFrOworCWRlZmF1bHQ6 CisJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCX0KIAogCXJldHVybiBzZ3Q7CiAKIGVycm9y X2ZyZWU6CiAJc2dfZnJlZV90YWJsZShzZ3QpOwogCWtmcmVlKHNndCk7Ci0JcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7CisJcmV0dXJuIEVSUl9QVFIoLUVCVVNZKTsKIH0KIAogLyoqCkBAIC0zMjIs OSArMzQzLDE4IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kbWFfYnVmX3VubWFwKHN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKIAkJCQkgc3RydWN0IHNnX3RhYmxlICpzZ3QsCiAJCQkJ IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKIHsKLQlkbWFfdW5tYXBfc2coYXR0YWNoLT5k ZXYsIHNndC0+c2dsLCBzZ3QtPm5lbnRzLCBkaXIpOwotCXNnX2ZyZWVfdGFibGUoc2d0KTsKLQlr ZnJlZShzZ3QpOworCXN0cnVjdCBkbWFfYnVmICpkbWFfYnVmID0gYXR0YWNoLT5kbWFidWY7CisJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2OworCXN0cnVjdCBhbWRn cHVfYm8gKmJvID0gZ2VtX3RvX2FtZGdwdV9ibyhvYmopOworCXN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2ID0gYW1kZ3B1X3R0bV9hZGV2KGJvLT50Ym8uYmRldik7CisKKwlpZiAoc2d0LT5zZ2wt PnBhZ2VfbGluaykgeworCQlkbWFfdW5tYXBfc2coYXR0YWNoLT5kZXYsIHNndC0+c2dsLCBzZ3Qt Pm5lbnRzLCBkaXIpOworCQlzZ19mcmVlX3RhYmxlKHNndCk7CisJCWtmcmVlKHNndCk7CisJfSBl bHNlIHsKKwkJYW1kZ3B1X3ZyYW1fbWdyX2ZyZWVfc2d0KGFkZXYsIGF0dGFjaC0+ZGV2LCBkaXIs IHNndCk7CisJfQogfQogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV90dG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0u aAppbmRleCA3NTUxZjM3Mjk0NDUuLmE5OWQ4MTNiMjNhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV90dG0uaApAQCAtMjQsOCArMjQsOSBAQAogI2lmbmRlZiBfX0FNREdQVV9U VE1fSF9fCiAjZGVmaW5lIF9fQU1ER1BVX1RUTV9IX18KIAotI2luY2x1ZGUgImFtZGdwdS5oIgor I2luY2x1ZGUgPGxpbnV4L2RtYS1kaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxkcm0vZ3B1X3NjaGVk dWxlci5oPgorI2luY2x1ZGUgImFtZGdwdS5oIgogCiAjZGVmaW5lIEFNREdQVV9QTF9HRFMJCShU VE1fUExfUFJJViArIDApCiAjZGVmaW5lIEFNREdQVV9QTF9HV1MJCShUVE1fUExfUFJJViArIDEp CkBAIC03NCw2ICs3NSwxNSBAQCB1aW50NjRfdCBhbWRncHVfZ3R0X21ncl91c2FnZShzdHJ1Y3Qg dHRtX21lbV90eXBlX21hbmFnZXIgKm1hbik7CiBpbnQgYW1kZ3B1X2d0dF9tZ3JfcmVjb3Zlcihz dHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1hbik7CiAKIHU2NCBhbWRncHVfdnJhbV9tZ3Jf Ym9fdmlzaWJsZV9zaXplKHN0cnVjdCBhbWRncHVfYm8gKmJvKTsKK2ludCBhbWRncHVfdnJhbV9t Z3JfYWxsb2Nfc2d0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAorCQkJICAgICAgc3RydWN0 IHR0bV9tZW1fcmVnICptZW0sCisJCQkgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkgICAg ICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIsCisJCQkgICAgICBzdHJ1Y3Qgc2dfdGFibGUg KipzZ3QpOwordm9pZCBhbWRncHVfdnJhbV9tZ3JfZnJlZV9zZ3Qoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCisJCQkgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkgICAgICBlbnVtIGRt YV9kYXRhX2RpcmVjdGlvbiBkaXIsCisJCQkgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnNndCk7CiB1 aW50NjRfdCBhbWRncHVfdnJhbV9tZ3JfdXNhZ2Uoc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2Vy ICptYW4pOwogdWludDY0X3QgYW1kZ3B1X3ZyYW1fbWdyX3Zpc191c2FnZShzdHJ1Y3QgdHRtX21l bV90eXBlX21hbmFnZXIgKm1hbik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV92cmFtX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3ZyYW1fbWdyLmMKaW5kZXggODJhMzI5OWU1M2MwLi5jNmU3ZjAwYzViMjEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jCkBAIC0yMiw2ICsyMiw3 IEBACiAgKiBBdXRob3JzOiBDaHJpc3RpYW4gS8O2bmlnCiAgKi8KIAorI2luY2x1ZGUgPGxpbnV4 L2RtYS1tYXBwaW5nLmg+CiAjaW5jbHVkZSAiYW1kZ3B1LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3Zt LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X2F0b21maXJtd2FyZS5oIgpAQCAtNDU4LDYgKzQ1OSwxMDIg QEAgc3RhdGljIHZvaWQgYW1kZ3B1X3ZyYW1fbWdyX2RlbChzdHJ1Y3QgdHRtX21lbV90eXBlX21h bmFnZXIgKm1hbiwKIAltZW0tPm1tX25vZGUgPSBOVUxMOwogfQogCisvKioKKyAqIGFtZGdwdV92 cmFtX21ncl9hbGxvY19zZ3QgLSBhbGxvY2F0ZSBhbmQgZmlsbCBhIHNnIHRhYmxlCisgKgorICog QGFkZXY6IGFtZGdwdSBkZXZpY2UgcG9pbnRlcgorICogQG1lbTogVFRNIG1lbW9yeSBvYmplY3QK KyAqIEBkZXY6IHRoZSBvdGhlciBkZXZpY2UKKyAqIEBkaXI6IGRtYSBkaXJlY3Rpb24KKyAqIEBz Z3Q6IHJlc3VsdGluZyBzZyB0YWJsZQorICoKKyAqIEFsbG9jYXRlIGFuZCBmaWxsIGEgc2cgdGFi bGUgZnJvbSBhIFZSQU0gYWxsb2NhdGlvbi4KKyAqLworaW50IGFtZGdwdV92cmFtX21ncl9hbGxv Y19zZ3Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCisJCQkgICAgICBzdHJ1Y3QgdHRtX21l bV9yZWcgKm1lbSwKKwkJCSAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCSAgICAgIGVudW0g ZG1hX2RhdGFfZGlyZWN0aW9uIGRpciwKKwkJCSAgICAgIHN0cnVjdCBzZ190YWJsZSAqKnNndCkK K3sKKwlzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGU7CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsK KwlpbnQgbnVtX2VudHJpZXMgPSAwOworCXVuc2lnbmVkIGludCBwYWdlczsKKwlpbnQgaSwgcjsK KworCSpzZ3QgPSBrbWFsbG9jKHNpemVvZigqc2cpLCBHRlBfS0VSTkVMKTsKKwlpZiAoISpzZ3Qp CisJCXJldHVybiAtRU5PTUVNOworCisJZm9yIChwYWdlcyA9IG1lbS0+bnVtX3BhZ2VzLCBub2Rl ID0gbWVtLT5tbV9ub2RlOworCSAgICAgcGFnZXM7IHBhZ2VzIC09IG5vZGUtPnNpemUsICsrbm9k ZSkKKwkJKytudW1fZW50cmllczsKKworCXIgPSBzZ19hbGxvY190YWJsZSgqc2d0LCBudW1fZW50 cmllcywgR0ZQX0tFUk5FTCk7CisJaWYgKHIpCisJCWdvdG8gZXJyb3JfZnJlZTsKKworCWZvcl9l YWNoX3NnKCgqc2d0KS0+c2dsLCBzZywgbnVtX2VudHJpZXMsIGkpCisJCXNnLT5sZW5ndGggPSAw OworCisJbm9kZSA9IG1lbS0+bW1fbm9kZTsKKwlmb3JfZWFjaF9zZygoKnNndCktPnNnbCwgc2cs IG51bV9lbnRyaWVzLCBpKSB7CisJCXBoeXNfYWRkcl90IHBoeXMgPSAobm9kZS0+c3RhcnQgPDwg UEFHRV9TSElGVCkgKworCQkJYWRldi0+Z21jLmFwZXJfYmFzZTsKKwkJc2l6ZV90IHNpemUgPSBu b2RlLT5zaXplIDw8IFBBR0VfU0hJRlQ7CisJCWRtYV9hZGRyX3QgYWRkcjsKKworCQkrK25vZGU7 CisJCWFkZHIgPSBkbWFfbWFwX3Jlc291cmNlKGRldiwgcGh5cywgc2l6ZSwgZGlyLAorCQkJCQlE TUFfQVRUUl9TS0lQX0NQVV9TWU5DKTsKKwkJciA9IGRtYV9tYXBwaW5nX2Vycm9yKGRldiwgYWRk cik7CisJCWlmIChyKQorCQkJZ290byBlcnJvcl91bm1hcDsKKworCQlzZ19zZXRfZG1hX2FkZHIo c2csIGFkZHIsIHNpemUsIDApOworCX0KKwlyZXR1cm4gMDsKKworZXJyb3JfdW5tYXA6CisJZm9y X2VhY2hfc2coKCpzZ3QpLT5zZ2wsIHNnLCBudW1fZW50cmllcywgaSkgeworCQlpZiAoIXNnLT5s ZW5ndGgpCisJCQljb250aW51ZTsKKworCQlkbWFfdW5tYXBfcmVzb3VyY2UoZGV2LCBzZy0+ZG1h X2FkZHJlc3MsCisJCQkJICAgc2ctPmxlbmd0aCwgZGlyLAorCQkJCSAgIERNQV9BVFRSX1NLSVBf Q1BVX1NZTkMpOworCX0KKwlzZ19mcmVlX3RhYmxlKCpzZ3QpOworCitlcnJvcl9mcmVlOgorCWtm cmVlKCpzZ3QpOworCXJldHVybiByOworfQorCisvKioKKyAqIGFtZGdwdV92cmFtX21ncl9hbGxv Y19zZ3QgLSBhbGxvY2F0ZSBhbmQgZmlsbCBhIHNnIHRhYmxlCisgKgorICogQGFkZXY6IGFtZGdw dSBkZXZpY2UgcG9pbnRlcgorICogQHNndDogc2cgdGFibGUgdG8gZnJlZQorICoKKyAqIEZyZWUg YSBwcmV2aW91c2x5IGFsbG9jYXRlIHNnIHRhYmxlLgorICovCit2b2lkIGFtZGdwdV92cmFtX21n cl9mcmVlX3NndChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKKwkJCSAgICAgIHN0cnVjdCBk ZXZpY2UgKmRldiwKKwkJCSAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciwKKwkJCSAg ICAgIHN0cnVjdCBzZ190YWJsZSAqc2d0KQoreworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisJ aW50IGk7CisKKwlmb3JfZWFjaF9zZyhzZ3QtPnNnbCwgc2csIHNndC0+bmVudHMsIGkpCisJCWRt YV91bm1hcF9yZXNvdXJjZShkZXYsIHNnLT5kbWFfYWRkcmVzcywKKwkJCQkgICBzZy0+bGVuZ3Ro LCBkaXIsCisJCQkJICAgRE1BX0FUVFJfU0tJUF9DUFVfU1lOQyk7CisJc2dfZnJlZV90YWJsZShz Z3QpOworCWtmcmVlKHNndCk7Cit9CisKIC8qKgogICogYW1kZ3B1X3ZyYW1fbWdyX3VzYWdlIC0g aG93IG1hbnkgYnl0ZXMgYXJlIHVzZWQgaW4gdGhpcyBkb21haW4KICAqCi0tIAoyLjE3LjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=