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=-12.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,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 5012FC4727C for ; Fri, 25 Sep 2020 12:52:00 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (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 E1C7C2075E for ; Fri, 25 Sep 2020 12:51:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="BTf4LrGC" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E1C7C2075E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id BA202875C9; Fri, 25 Sep 2020 12:51:59 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ez1Ez7wNxWU2; Fri, 25 Sep 2020 12:51:58 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by hemlock.osuosl.org (Postfix) with ESMTP id 90BD087517; Fri, 25 Sep 2020 12:51:58 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 82A81C1AD5; Fri, 25 Sep 2020 12:51:58 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id A20AEC0859 for ; Fri, 25 Sep 2020 12:51:57 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 918C0874E3 for ; Fri, 25 Sep 2020 12:51:57 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7kt+YLo7PBMm for ; Fri, 25 Sep 2020 12:51:56 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by hemlock.osuosl.org (Postfix) with ESMTPS id EADAC87143 for ; Fri, 25 Sep 2020 12:51:55 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id o5so3428603wrn.13 for ; Fri, 25 Sep 2020 05:51:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SXamygjWRu+l2cZVRdgzhVlVjHli46731VVAeJxcnj0=; b=BTf4LrGC9ShJaCd7QstOeBSBNWgniJTYtz1S2uQLBtp8p96nZ8yyrTc3K9Mv8H+dsF fLZOMH/bftpHSJUzvmqHbYrkWOdqVHGcGOGD7exgel5zuNfjs5Va+GZUYNZlM+WoV44i 9EZmKkmmGQ4AXw4IgiDpmILiu97i4YJntdFmugh6Q4EZy1qt3bZMupOTjc9eeWNRaAB5 yQUwUsXOcOrCAKVIQbmi9A5rw4qwRZMR/EXrN/DuoVE2et5lUQ5S0AHBmJjDQY4rro41 bOYVP7RsPDfumygm2CtYUvh1AvRML0We4EuWc2RJfar3kFgD5a3WFy6tuMvhNhfdXkpu 7SBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SXamygjWRu+l2cZVRdgzhVlVjHli46731VVAeJxcnj0=; b=gNcl/CBDXVNOn13xgtycMZLp7B64UdJ7h26ONBuCmF7DYSVDK9T9k2SVoCPkmIQiLx AabCTaUsQ7pru3JLVEmeNuKbxQgJibJqgbrItrj4/EkgIX0L4Ice1p9wu3QGrZ6ZSNYU XShQtcf8gLnE3Ql0O9qKBd207tvEJBfrTzVPKRPZg9c89ZQj7IkUlViVjvB0nhdMnp9X VzC0tXQNlPAGqIUCJaYN3Y7hc7iHg+fodb30EF/qn0OhpsL8apFpgcvyBow6N87oZVHL nQNbD3F4idPCOmkhbU9gUMjKVMmJ2GoEKXHSJNrd2RyIffhx4JfnhITU1/6dTqsfip0x RfdA== X-Gm-Message-State: AOAM530goKnuOLFtRUKEckU6bOph+YFNBAtvt05XomZE1FMiFHFaxNOV QuDKWUBfCloFe/x+i20U4WBYkw== X-Google-Smtp-Source: ABdhPJwnOxu2IQfb6cc1OdcOPru6ncPuuxtb29c7/Pyq9H42tHlZUVqhjlVWgrmvZyT+1FxRN3Az7A== X-Received: by 2002:adf:df87:: with SMTP id z7mr4469108wrl.239.1601038314313; Fri, 25 Sep 2020 05:51:54 -0700 (PDT) Received: from zen.linaroharston ([51.148.130.216]) by smtp.gmail.com with ESMTPSA id l8sm2824058wrx.22.2020.09.25.05.51.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2020 05:51:51 -0700 (PDT) Received: from zen.lan (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 3B77E1FF8C; Fri, 25 Sep 2020 13:51:48 +0100 (BST) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org, maxim.uvarov@linaro.org, joakim.bech@linaro.org, ilias.apalodimas@linaro.org, tomas.winkler@intel.com, yang.huang@intel.com, bing.zhu@intel.com, Matti.Moell@opensynergy.com, hmo@opensynergy.com Subject: [RFC PATCH 02/19] hw/block: add boilerplate for vhost-user-rpmb device Date: Fri, 25 Sep 2020 13:51:30 +0100 Message-Id: <20200925125147.26943-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200925125147.26943-1-alex.bennee@linaro.org> References: <20200925125147.26943-1-alex.bennee@linaro.org> MIME-Version: 1.0 Cc: jean-philippe@linaro.org, "open list:Block layer core" , "Michael S. Tsirkin" , Max Reitz , takahiro.akashi@linaro.org, virtualization@lists.linuxfoundation.org, arnd@linaro.org, stratos-dev@op-lists.linaro.org X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" VGhpcyBjcmVhdGVzIHRoZSBRRU1VIHNpZGUgb2YgdGhlIHZob3N0LXVzZXItcnBtYiBkZXZpY2Ug d2hpY2gKY29ubmVjdHMgdG8gdGhlIHJlbW90ZSBkYWVtb24uIEl0IGlzIGJhc2VkIG9mIHRoZSBy ZWFzb25hYmx5IG1vZGVybgp2aG9zdC11c2VyLWZzIGNvZGUgd2l0aCBiaXRzIGZyb20gdmhvc3Qt dXNlci1ibGsgYXMgd2Ugd2FudCB0aGUKdmlydGlvLWNvbmZpZyBpdHNlbGYgdG8gYmUgc291cmNl ZCBmcm9tIHRoZSBkYWVtb24uCgpTaWduZWQtb2ZmLWJ5OiBBbGV4IEJlbm7DqWUgPGFsZXguYmVu bmVlQGxpbmFyby5vcmc+Ci0tLQogaW5jbHVkZS9ody92aXJ0aW8vdmhvc3QtdXNlci1ycG1iLmgg fCAgNDYgKysrKwogaHcvYmxvY2svdmhvc3QtdXNlci1ycG1iLmMgICAgICAgICAgfCAzMzMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogaHcvYmxvY2svS2NvbmZpZyAgICAgICAgICAgICAg ICAgICAgfCAgIDUgKwogaHcvYmxvY2svbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDEg KwogNCBmaWxlcyBjaGFuZ2VkLCAzODUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGluY2x1ZGUvaHcvdmlydGlvL3Zob3N0LXVzZXItcnBtYi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg aHcvYmxvY2svdmhvc3QtdXNlci1ycG1iLmMKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3ZpcnRp by92aG9zdC11c2VyLXJwbWIuaCBiL2luY2x1ZGUvaHcvdmlydGlvL3Zob3N0LXVzZXItcnBtYi5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2U1OTg4MTI3ZGMyCi0t LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9ody92aXJ0aW8vdmhvc3QtdXNlci1ycG1iLmgKQEAg LTAsMCArMSw0NiBAQAorLyoKKyAqIHZob3N0LXVzZXItcnBtYiB2aXJ0aW8gZGV2aWNlCisgKgor ICogQ29weXJpZ2h0IChjKSAyMDIwIExpbmFybyBMdGQKKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorICovCisKKyNpZm5kZWYgX1ZIT1NUX1VTRVJfUlBN Ql9IXworI2RlZmluZSBfVkhPU1RfVVNFUl9SUE1CX0hfCisKKyNpbmNsdWRlICJody92aXJ0aW8v dmlydGlvLmgiCisjaW5jbHVkZSAiaHcvdmlydGlvL3Zob3N0LmgiCisjaW5jbHVkZSAiaHcvdmly dGlvL3Zob3N0LXVzZXIuaCIKKyNpbmNsdWRlICJjaGFyZGV2L2NoYXItZmUuaCIKKworI2RlZmlu ZSBUWVBFX1ZIT1NUX1VTRVJfUlBNQiAidmhvc3QtdXNlci1ycG1iLWRldmljZSIKKyNkZWZpbmUg VkhPU1RfVVNFUl9SUE1CKG9iaikgXAorICAgICAgICBPQkpFQ1RfQ0hFQ0soVkhvc3RVc2VyUlBN QiwgKG9iaiksIFRZUEVfVkhPU1RfVVNFUl9SUE1CKQorCisvKiBUaGlzIGlzIGRlZmluZWQgaW4g dGhlIFZJUlRJTyBzcGVjICovCitzdHJ1Y3QgdmlydGlvX3JwbWJfY29uZmlnIHsKKyAgICB1aW50 OF90IGNhcGFjaXR5OworICAgIHVpbnQ4X3QgbWF4X3dyX2NudDsKKyAgICB1aW50OF90IG1heF9y ZF9jbnQ7Cit9OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgQ2hhckJhY2tlbmQgY2hhcmRldjsK KyAgICBzdHJ1Y3QgdmlydGlvX3JwbWJfY29uZmlnIGNvbmZpZzsKK30gVkhvc3RVc2VyUlBNQkNv bmY7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBWaXJ0SU9E ZXZpY2UgcGFyZW50OworICAgIFZIb3N0VXNlclJQTUJDb25mIGNvbmY7CisgICAgc3RydWN0IHZo b3N0X3ZpcnRxdWV1ZSAqdmhvc3RfdnE7CisgICAgc3RydWN0IHZob3N0X2RldiB2aG9zdF9kZXY7 CisgICAgVmhvc3RVc2VyU3RhdGUgdmhvc3RfdXNlcjsKKyAgICBWaXJ0UXVldWUgKnJlcV92cTsK KyAgICBib29sIGNvbm5lY3RlZDsKKyAgICAvKjwgcHVibGljID4qLworfSBWSG9zdFVzZXJSUE1C OworCisKKyNlbmRpZiAvKiBfVkhPU1RfVVNFUl9SUE1CX0hfICovCmRpZmYgLS1naXQgYS9ody9i bG9jay92aG9zdC11c2VyLXJwbWIuYyBiL2h3L2Jsb2NrL3Zob3N0LXVzZXItcnBtYi5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGUyNDNlN2E1M2EwCi0tLSAvZGV2 L251bGwKKysrIGIvaHcvYmxvY2svdmhvc3QtdXNlci1ycG1iLmMKQEAgLTAsMCArMSwzMzMgQEAK Ky8qCisgKiBWaG9zdC11c2VyIFJQTUIgdmlydGlvIGRldmljZQorICoKKyAqIFRoaXMgaXMgdGhl IGJvaWxlcnBsYXRlIGZvciBpbnN0YW50aWF0aW5nIGEgdmhvc3QtdXNlciBkZXZpY2UKKyAqIGlt cGxlbWVudGluZyBhIFJlcGxheSBQcm90ZWN0ZWQgTWVtb3J5IEJsb2NrIChSUE1CKSBkZXZpY2Uu IFRoaXMgaXMKKyAqIGEgdHlwZSBvZiBmbGFzaCBjaGlwIHRoYXQgaXMgcHJvdGVjdGVkIGZyb20g cmVwbGF5IGF0dGFja3MgYW5kIHVzZWQKKyAqIGZvciB0YW1wZXIgcmVzaXN0YW50IHN0b3JhZ2Uu IFRoZSBhY3R1YWwgYmFjay1lbmQgZm9yIHRoaXMgZHJpdmVyCisgKiBpcyB0aGUgdmhvc3QtdXNl ci1ycG1iIGRhZW1vbi4gVGhlIGNvZGUgaGVyZSBqdXN0IGNvbm5lY3RzIHVwIHRoZQorICogZGV2 aWNlIGluIFFFTVUgYW5kIGFsbG93cyBpdCB0byBiZSBpbnN0YW50aWF0ZWQuCisgKgorICogQ29w eXJpZ2h0IChjKSAyMDIwIExpbmFybyBMdGQKKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vci1sYXRlcgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5j bHVkZSAicWFwaS9lcnJvci5oIgorI2luY2x1ZGUgImh3L3FkZXYtcHJvcGVydGllcy5oIgorI2lu Y2x1ZGUgImh3L3ZpcnRpby92aXJ0aW8tYnVzLmgiCisjaW5jbHVkZSAiaHcvdmlydGlvL3Zob3N0 LXVzZXItcnBtYi5oIgorI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0LmgiCisKKy8qIGN1cnJl bnRseSB0aGVyZSBpcyBubyBSUE1CIGRyaXZlciBpbiBMaW51eCAqLworI2RlZmluZSBWSVJUSU9f SURfUlBNQiAgICAgICAgIDI4IC8qIHZpcnRpbyBSUE1CICovCisKK3N0YXRpYyB2b2lkIHZ1cnBt Yl9nZXRfY29uZmlnKFZpcnRJT0RldmljZSAqdmRldiwgdWludDhfdCAqY29uZmlnKQoreworICAg IC8qIHRoaXMgc29tZWhvdyBuZWVkcyB0byBjb21lIGZyb20gdGhlIHZob3N0LXVzZXIgZGFlbW9u ICovCit9CisKK3N0YXRpYyB2b2lkIHZ1cnBtYl9zdGFydChWaXJ0SU9EZXZpY2UgKnZkZXYpCit7 CisgICAgVkhvc3RVc2VyUlBNQiAqcnBtYiA9IFZIT1NUX1VTRVJfUlBNQih2ZGV2KTsKKyAgICBC dXNTdGF0ZSAqcWJ1cyA9IEJVUyhxZGV2X2dldF9wYXJlbnRfYnVzKERFVklDRSh2ZGV2KSkpOwor ICAgIFZpcnRpb0J1c0NsYXNzICprID0gVklSVElPX0JVU19HRVRfQ0xBU1MocWJ1cyk7CisgICAg aW50IHJldDsKKyAgICBpbnQgaTsKKworICAgIGlmICghay0+c2V0X2d1ZXN0X25vdGlmaWVycykg eworICAgICAgICBlcnJvcl9yZXBvcnQoImJpbmRpbmcgZG9lcyBub3Qgc3VwcG9ydCBndWVzdCBu b3RpZmllcnMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJldCA9IHZob3N0X2Rl dl9lbmFibGVfbm90aWZpZXJzKCZycG1iLT52aG9zdF9kZXYsIHZkZXYpOworICAgIGlmIChyZXQg PCAwKSB7CisgICAgICAgIGVycm9yX3JlcG9ydCgiRXJyb3IgZW5hYmxpbmcgaG9zdCBub3RpZmll cnM6ICVkIiwgLXJldCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXQgPSBrLT5z ZXRfZ3Vlc3Rfbm90aWZpZXJzKHFidXMtPnBhcmVudCwgcnBtYi0+dmhvc3RfZGV2Lm52cXMsIHRy dWUpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGVycm9yX3JlcG9ydCgiRXJyb3IgYmlu ZGluZyBndWVzdCBub3RpZmllcjogJWQiLCAtcmV0KTsKKyAgICAgICAgZ290byBlcnJfaG9zdF9u b3RpZmllcnM7CisgICAgfQorCisgICAgcnBtYi0+dmhvc3RfZGV2LmFja2VkX2ZlYXR1cmVzID0g dmRldi0+Z3Vlc3RfZmVhdHVyZXM7CisgICAgcmV0ID0gdmhvc3RfZGV2X3N0YXJ0KCZycG1iLT52 aG9zdF9kZXYsIHZkZXYpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIGVycm9yX3JlcG9y dCgiRXJyb3Igc3RhcnRpbmcgdmhvc3QtdXNlci1ycG1iOiAlZCIsIC1yZXQpOworICAgICAgICBn b3RvIGVycl9ndWVzdF9ub3RpZmllcnM7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBndWVzdF9u b3RpZmllcl9tYXNrL3BlbmRpbmcgbm90IHVzZWQgeWV0LCBzbyBqdXN0IHVubWFzaworICAgICAq IGV2ZXJ5dGhpbmcgaGVyZS4gIHZpcnRpby1wY2kgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgYnkK KyAgICAgKiBlbmFibGluZy9kaXNhYmxpbmcgaXJxZmQuCisgICAgICovCisgICAgZm9yIChpID0g MDsgaSA8IHJwbWItPnZob3N0X2Rldi5udnFzOyBpKyspIHsKKyAgICAgICAgdmhvc3RfdmlydHF1 ZXVlX21hc2soJnJwbWItPnZob3N0X2RldiwgdmRldiwgaSwgZmFsc2UpOworICAgIH0KKworICAg IHJldHVybjsKKworZXJyX2d1ZXN0X25vdGlmaWVyczoKKyAgICBrLT5zZXRfZ3Vlc3Rfbm90aWZp ZXJzKHFidXMtPnBhcmVudCwgcnBtYi0+dmhvc3RfZGV2Lm52cXMsIGZhbHNlKTsKK2Vycl9ob3N0 X25vdGlmaWVyczoKKyAgICB2aG9zdF9kZXZfZGlzYWJsZV9ub3RpZmllcnMoJnJwbWItPnZob3N0 X2RldiwgdmRldik7Cit9CisKK3N0YXRpYyB2b2lkIHZ1cnBtYl9zdG9wKFZpcnRJT0RldmljZSAq dmRldikKK3sKKyAgICBWSG9zdFVzZXJSUE1CICpycG1iID0gVkhPU1RfVVNFUl9SUE1CKHZkZXYp OworICAgIEJ1c1N0YXRlICpxYnVzID0gQlVTKHFkZXZfZ2V0X3BhcmVudF9idXMoREVWSUNFKHZk ZXYpKSk7CisgICAgVmlydGlvQnVzQ2xhc3MgKmsgPSBWSVJUSU9fQlVTX0dFVF9DTEFTUyhxYnVz KTsKKyAgICBpbnQgcmV0OworCisgICAgaWYgKCFrLT5zZXRfZ3Vlc3Rfbm90aWZpZXJzKSB7Cisg ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2aG9zdF9kZXZfc3RvcCgmcnBtYi0+dmhvc3Rf ZGV2LCB2ZGV2KTsKKworICAgIHJldCA9IGstPnNldF9ndWVzdF9ub3RpZmllcnMocWJ1cy0+cGFy ZW50LCBycG1iLT52aG9zdF9kZXYubnZxcywgZmFsc2UpOworICAgIGlmIChyZXQgPCAwKSB7Cisg ICAgICAgIGVycm9yX3JlcG9ydCgidmhvc3QgZ3Vlc3Qgbm90aWZpZXIgY2xlYW51cCBmYWlsZWQ6 ICVkIiwgcmV0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZob3N0X2Rldl9kaXNh YmxlX25vdGlmaWVycygmcnBtYi0+dmhvc3RfZGV2LCB2ZGV2KTsKK30KKworc3RhdGljIHZvaWQg dnVycG1iX3NldF9zdGF0dXMoVmlydElPRGV2aWNlICp2ZGV2LCB1aW50OF90IHN0YXR1cykKK3sK KyAgICBWSG9zdFVzZXJSUE1CICpycG1iID0gVkhPU1RfVVNFUl9SUE1CKHZkZXYpOworICAgIGJv b2wgc2hvdWxkX3N0YXJ0ID0gc3RhdHVzICYgVklSVElPX0NPTkZJR19TX0RSSVZFUl9PSzsKKwor ICAgIGlmICghdmRldi0+dm1fcnVubmluZykgeworICAgICAgICBzaG91bGRfc3RhcnQgPSBmYWxz ZTsKKyAgICB9CisKKyAgICBpZiAocnBtYi0+dmhvc3RfZGV2LnN0YXJ0ZWQgPT0gc2hvdWxkX3N0 YXJ0KSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxkX3N0YXJ0KSB7 CisgICAgICAgIHZ1cnBtYl9zdGFydCh2ZGV2KTsKKyAgICB9IGVsc2UgeworICAgICAgICB2dXJw bWJfc3RvcCh2ZGV2KTsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50NjRfdCB2dXJwbWJfZ2V0X2Zl YXR1cmVzKFZpcnRJT0RldmljZSAqdmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDY0X3QgcmVxdWVzdGVkX2ZlYXR1cmVzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCit7CisgICAgLyogTm8gZmVhdHVyZSBi aXRzIHVzZWQgeWV0ICovCisgICAgcmV0dXJuIHJlcXVlc3RlZF9mZWF0dXJlczsKK30KKworc3Rh dGljIHZvaWQgdnVycG1iX2hhbmRsZV9vdXRwdXQoVmlydElPRGV2aWNlICp2ZGV2LCBWaXJ0UXVl dWUgKnZxKQoreworICAgIC8qCisgICAgICogTm90IG5vcm1hbGx5IGNhbGxlZDsgaXQncyB0aGUg ZGFlbW9uIHRoYXQgaGFuZGxlcyB0aGUgcXVldWU7CisgICAgICogaG93ZXZlciB2aXJ0aW8ncyBj bGVhbnVwIHBhdGggY2FuIGNhbGwgdGhpcy4KKyAgICAgKi8KK30KKworc3RhdGljIHZvaWQgdnVy cG1iX2d1ZXN0X25vdGlmaWVyX21hc2soVmlydElPRGV2aWNlICp2ZGV2LCBpbnQgaWR4LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG1hc2spCit7Cisg ICAgVkhvc3RVc2VyUlBNQiAqcnBtYiA9IFZIT1NUX1VTRVJfUlBNQih2ZGV2KTsKKyAgICB2aG9z dF92aXJ0cXVldWVfbWFzaygmcnBtYi0+dmhvc3RfZGV2LCB2ZGV2LCBpZHgsIG1hc2spOworfQor CitzdGF0aWMgYm9vbCB2dXJwbWJfZ3Vlc3Rfbm90aWZpZXJfcGVuZGluZyhWaXJ0SU9EZXZpY2Ug KnZkZXYsIGludCBpZHgpCit7CisgICAgVkhvc3RVc2VyUlBNQiAqcnBtYiA9IFZIT1NUX1VTRVJf UlBNQih2ZGV2KTsKKyAgICByZXR1cm4gdmhvc3RfdmlydHF1ZXVlX3BlbmRpbmcoJnJwbWItPnZo b3N0X2RldiwgaWR4KTsKK30KKworLyoKKyAqIENoYXJkZXYgY29ubmVjdC9kaXNjb25uZWN0IGV2 ZW50cworICovCisKK3N0YXRpYyBpbnQgdnVycG1iX2hhbmRsZV9jb25maWdfY2hhbmdlKHN0cnVj dCB2aG9zdF9kZXYgKmRldikKK3sKKyAgICBpbnQgcmV0OworICAgIFZIb3N0VXNlclJQTUIgKnJw bWIgPSBWSE9TVF9VU0VSX1JQTUIoZGV2LT52ZGV2KTsKKworICAgIHJldCA9IHZob3N0X2Rldl9n ZXRfY29uZmlnKGRldiwgKHVpbnQ4X3QgKikmcnBtYi0+Y29uZi5jb25maWcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCB2aXJ0aW9fcnBtYl9jb25maWcpKTsK KyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBlcnJvcl9yZXBvcnQoImdldCBjb25maWcgc3Bh Y2UgZmFpbGVkIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK K30KKworY29uc3QgVmhvc3REZXZDb25maWdPcHMgcnBtYl9vcHMgPSB7CisgICAgLnZob3N0X2Rl dl9jb25maWdfbm90aWZpZXIgPSB2dXJwbWJfaGFuZGxlX2NvbmZpZ19jaGFuZ2UsCit9OworCitz dGF0aWMgaW50IHZ1cnBtYl9jb25uZWN0KERldmljZVN0YXRlICpkZXYpCit7CisgICAgVmlydElP RGV2aWNlICp2ZGV2ID0gVklSVElPX0RFVklDRShkZXYpOworICAgIFZIb3N0VXNlclJQTUIgKnJw bWIgPSBWSE9TVF9VU0VSX1JQTUIodmRldik7CisKKyAgICBpZiAocnBtYi0+Y29ubmVjdGVkKSB7 CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBycG1iLT5jb25uZWN0ZWQgPSB0cnVlOwor CisgICAgLyogcmVzdG9yZSB2aG9zdCBzdGF0ZSAqLworICAgIGlmICh2aXJ0aW9fZGV2aWNlX3N0 YXJ0ZWQodmRldiwgdmRldi0+c3RhdHVzKSkgeworICAgICAgICB2dXJwbWJfc3RhcnQodmRldik7 CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHZ1cnBtYl9kaXNjb25u ZWN0KERldmljZVN0YXRlICpkZXYpCit7CisgICAgVmlydElPRGV2aWNlICp2ZGV2ID0gVklSVElP X0RFVklDRShkZXYpOworICAgIFZIb3N0VXNlclJQTUIgKnJwbWIgPSBWSE9TVF9VU0VSX1JQTUIo dmRldik7CisKKyAgICBpZiAoIXJwbWItPmNvbm5lY3RlZCkgeworICAgICAgICByZXR1cm47Cisg ICAgfQorICAgIHJwbWItPmNvbm5lY3RlZCA9IGZhbHNlOworCisgICAgaWYgKHJwbWItPnZob3N0 X2Rldi5zdGFydGVkKSB7CisgICAgICAgIHZ1cnBtYl9zdG9wKHZkZXYpOworICAgIH0KKworICAg IHZob3N0X2Rldl9jbGVhbnVwKCZycG1iLT52aG9zdF9kZXYpOworfQorCitzdGF0aWMgdm9pZCB2 dXJwbWJfZXZlbnQodm9pZCAqb3BhcXVlLCBRRU1VQ2hyRXZlbnQgZXZlbnQpCit7CisgICAgRGV2 aWNlU3RhdGUgKmRldiA9IG9wYXF1ZTsKKyAgICBWaXJ0SU9EZXZpY2UgKnZkZXYgPSBWSVJUSU9f REVWSUNFKGRldik7CisgICAgVkhvc3RVc2VyUlBNQiAqcnBtYiA9IFZIT1NUX1VTRVJfUlBNQih2 ZGV2KTsKKworICAgIHN3aXRjaCAoZXZlbnQpIHsKKyAgICBjYXNlIENIUl9FVkVOVF9PUEVORUQ6 CisgICAgICAgIGlmICh2dXJwbWJfY29ubmVjdChkZXYpIDwgMCkgeworICAgICAgICAgICAgcWVt dV9jaHJfZmVfZGlzY29ubmVjdCgmcnBtYi0+Y29uZi5jaGFyZGV2KTsKKyAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIENIUl9FVkVOVF9DTE9T RUQ6CisgICAgICAgIHZ1cnBtYl9kaXNjb25uZWN0KGRldik7CisgICAgICAgIGJyZWFrOworICAg IGNhc2UgQ0hSX0VWRU5UX0JSRUFLOgorICAgIGNhc2UgQ0hSX0VWRU5UX01VWF9JTjoKKyAgICBj YXNlIENIUl9FVkVOVF9NVVhfT1VUOgorICAgICAgICAvKiBJZ25vcmUgKi8KKyAgICAgICAgYnJl YWs7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBkb192aG9zdF91c2VyX2NsZWFudXAoVmlydElP RGV2aWNlICp2ZGV2LCBWSG9zdFVzZXJSUE1CICpycG1iKQoreworICAgIHZob3N0X3VzZXJfY2xl YW51cCgmcnBtYi0+dmhvc3RfdXNlcik7CisgICAgdmlydGlvX2RlbGV0ZV9xdWV1ZShycG1iLT5y ZXFfdnEpOworICAgIHZpcnRpb19jbGVhbnVwKHZkZXYpOworICAgIGdfZnJlZShycG1iLT52aG9z dF9kZXYudnFzKTsKKyAgICBycG1iLT52aG9zdF9kZXYudnFzID0gTlVMTDsKK30KKworCitzdGF0 aWMgdm9pZCB2dXJwbWJfZGV2aWNlX3JlYWxpemUoRGV2aWNlU3RhdGUgKmRldiwgRXJyb3IgKipl cnJwKQoreworICAgIFZpcnRJT0RldmljZSAqdmRldiA9IFZJUlRJT19ERVZJQ0UoZGV2KTsKKyAg ICBWSG9zdFVzZXJSUE1CICpycG1iID0gVkhPU1RfVVNFUl9SUE1CKGRldik7CisgICAgaW50IHJl dDsKKworICAgIGlmICghcnBtYi0+Y29uZi5jaGFyZGV2LmNocikgeworICAgICAgICBlcnJvcl9z ZXRnKGVycnAsICJtaXNzaW5nIGNoYXJkZXYiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor ICAgIGlmICghdmhvc3RfdXNlcl9pbml0KCZycG1iLT52aG9zdF91c2VyLCAmcnBtYi0+Y29uZi5j aGFyZGV2LCBlcnJwKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmlydGlvX2lu aXQodmRldiwgInZob3N0LXVzZXItcnBtYiIsIFZJUlRJT19JRF9SUE1CLAorICAgICAgICAgICAg ICAgIHNpemVvZihzdHJ1Y3QgdmlydGlvX3JwbWJfY29uZmlnKSk7CisKKyAgICAvKiBPbmUgcmVx dWVzdCBxdWV1ZSwgNCBlbGVtZW50cyBpbiBjYXNlIHdlIGRvbid0IGRvIGluZGlyZWN0ICovCisg ICAgcnBtYi0+cmVxX3ZxID0gdmlydGlvX2FkZF9xdWV1ZSh2ZGV2LCA0LCB2dXJwbWJfaGFuZGxl X291dHB1dCk7CisgICAgcnBtYi0+dmhvc3RfZGV2Lm52cXMgPSAxOworICAgIHJwbWItPnZob3N0 X2Rldi52cXMgPSBnX25ldzAoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSwgcnBtYi0+dmhvc3RfZGV2 Lm52cXMpOworICAgIHJldCA9IHZob3N0X2Rldl9pbml0KCZycG1iLT52aG9zdF9kZXYsICZycG1i LT52aG9zdF91c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFZIT1NUX0JBQ0tFTkRfVFlQ RV9VU0VSLCAwKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBlcnJvcl9zZXRnX2Vycm5v KGVycnAsIC1yZXQsICJ2aG9zdF9kZXZfaW5pdCBmYWlsZWQiKTsKKyAgICAgICAgZG9fdmhvc3Rf dXNlcl9jbGVhbnVwKHZkZXYsIHJwbWIpOworICAgIH0KKworICAgIC8qCisgICAgICogQXQgdGhp cyBwb2ludCB0aGUgbmV4dCBldmVudCB3ZSB3aWxsIGdldCBpcyBhIGNvbm5lY3Rpb24gZnJvbQor ICAgICAqIHRoZSBkYWVtb24gb24gdGhlIGNvbnRyb2wgc29ja2V0LgorICAgICAqLworCisgICAg cWVtdV9jaHJfZmVfc2V0X2hhbmRsZXJzKCZycG1iLT5jb25mLmNoYXJkZXYsICBOVUxMLCBOVUxM LCB2dXJwbWJfZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICh2b2lk ICopZGV2LCBOVUxMLCB0cnVlKTsKKworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgdnVy cG1iX2RldmljZV91bnJlYWxpemUoRGV2aWNlU3RhdGUgKmRldikKK3sKKyAgICBWaXJ0SU9EZXZp Y2UgKnZkZXYgPSBWSVJUSU9fREVWSUNFKGRldik7CisgICAgVkhvc3RVc2VyUlBNQiAqcnBtYiA9 IFZIT1NUX1VTRVJfUlBNQihkZXYpOworCisgICAgLyogVGhpcyB3aWxsIHN0b3Agdmhvc3QgYmFj a2VuZCBpZiBhcHByb3ByaWF0ZS4gKi8KKyAgICB2dXJwbWJfc2V0X3N0YXR1cyh2ZGV2LCAwKTsK KworICAgIGRvX3Zob3N0X3VzZXJfY2xlYW51cCh2ZGV2LCBycG1iKTsKK30KKworc3RhdGljIGNv bnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2dXJwbWJfdm1zdGF0ZSA9IHsKKyAgICAubmFtZSA9ICJ2 aG9zdC11c2VyLXJwbWIiLAorICAgIC51bm1pZ3JhdGFibGUgPSAxLAorfTsKKworc3RhdGljIFBy b3BlcnR5IHZ1cnBtYl9wcm9wZXJ0aWVzW10gPSB7CisgICAgREVGSU5FX1BST1BfQ0hSKCJjaGFy ZGV2IiwgVkhvc3RVc2VyUlBNQiwgY29uZi5jaGFyZGV2KSwKKyAgICBERUZJTkVfUFJPUF9FTkRf T0ZfTElTVCgpLAorfTsKKworc3RhdGljIHZvaWQgdnVycG1iX2NsYXNzX2luaXQoT2JqZWN0Q2xh c3MgKmtsYXNzLCB2b2lkICpkYXRhKQoreworICAgIERldmljZUNsYXNzICpkYyA9IERFVklDRV9D TEFTUyhrbGFzcyk7CisgICAgVmlydGlvRGV2aWNlQ2xhc3MgKnZkYyA9IFZJUlRJT19ERVZJQ0Vf Q0xBU1Moa2xhc3MpOworCisgICAgZGV2aWNlX2NsYXNzX3NldF9wcm9wcyhkYywgdnVycG1iX3By b3BlcnRpZXMpOworICAgIGRjLT52bXNkID0gJnZ1cnBtYl92bXN0YXRlOworICAgIHNldF9iaXQo REVWSUNFX0NBVEVHT1JZX1NUT1JBR0UsIGRjLT5jYXRlZ29yaWVzKTsKKyAgICB2ZGMtPnJlYWxp emUgPSB2dXJwbWJfZGV2aWNlX3JlYWxpemU7CisgICAgdmRjLT51bnJlYWxpemUgPSB2dXJwbWJf ZGV2aWNlX3VucmVhbGl6ZTsKKyAgICB2ZGMtPmdldF9mZWF0dXJlcyA9IHZ1cnBtYl9nZXRfZmVh dHVyZXM7CisgICAgdmRjLT5nZXRfY29uZmlnID0gdnVycG1iX2dldF9jb25maWc7CisgICAgdmRj LT5zZXRfc3RhdHVzID0gdnVycG1iX3NldF9zdGF0dXM7CisgICAgdmRjLT5ndWVzdF9ub3RpZmll cl9tYXNrID0gdnVycG1iX2d1ZXN0X25vdGlmaWVyX21hc2s7CisgICAgdmRjLT5ndWVzdF9ub3Rp Zmllcl9wZW5kaW5nID0gdnVycG1iX2d1ZXN0X25vdGlmaWVyX3BlbmRpbmc7Cit9CisKK3N0YXRp YyBjb25zdCBUeXBlSW5mbyB2dXJwbWJfaW5mbyA9IHsKKyAgICAubmFtZSA9IFRZUEVfVkhPU1Rf VVNFUl9SUE1CLAorICAgIC5wYXJlbnQgPSBUWVBFX1ZJUlRJT19ERVZJQ0UsCisgICAgLmluc3Rh bmNlX3NpemUgPSBzaXplb2YoVkhvc3RVc2VyUlBNQiksCisgICAgLmNsYXNzX2luaXQgPSB2dXJw bWJfY2xhc3NfaW5pdCwKK307CisKK3N0YXRpYyB2b2lkIHZ1cnBtYl9yZWdpc3Rlcl90eXBlcyh2 b2lkKQoreworICAgIHR5cGVfcmVnaXN0ZXJfc3RhdGljKCZ2dXJwbWJfaW5mbyk7Cit9CisKK3R5 cGVfaW5pdCh2dXJwbWJfcmVnaXN0ZXJfdHlwZXMpCmRpZmYgLS1naXQgYS9ody9ibG9jay9LY29u ZmlnIGIvaHcvYmxvY2svS2NvbmZpZwppbmRleCAyZDE3ZjQ4MWFkYzYuLjEyZTIxODcwODQ3YSAx MDA2NDQKLS0tIGEvaHcvYmxvY2svS2NvbmZpZworKysgYi9ody9ibG9jay9LY29uZmlnCkBAIC0z OCw1ICszOCwxMCBAQCBjb25maWcgVkhPU1RfVVNFUl9CTEsKICAgICBkZWZhdWx0IHkgaWYgVklS VElPX1BDSQogICAgIGRlcGVuZHMgb24gVklSVElPICYmIFZIT1NUX1VTRVIgJiYgTElOVVgKIAor Y29uZmlnIFZIT1NUX1VTRVJfUlBNQgorICAgIGJvb2wKKyAgICBkZWZhdWx0IHkKKyAgICBkZXBl bmRzIG9uIFZJUlRJTyAmJiBWSE9TVF9VU0VSCisKIGNvbmZpZyBTV0lNCiAgICAgYm9vbApkaWZm IC0tZ2l0IGEvaHcvYmxvY2svbWVzb24uYnVpbGQgYi9ody9ibG9jay9tZXNvbi5idWlsZAppbmRl eCA3OGNhZDhmN2NiYTEuLjExNDIyMmYxODQyNCAxMDA2NDQKLS0tIGEvaHcvYmxvY2svbWVzb24u YnVpbGQKKysrIGIvaHcvYmxvY2svbWVzb24uYnVpbGQKQEAgLTE3LDUgKzE3LDYgQEAgc29mdG1t dV9zcy5hZGQod2hlbjogJ0NPTkZJR19OVk1FX1BDSScsIGlmX3RydWU6IGZpbGVzKCdudm1lLmMn KSkKIAogc3BlY2lmaWNfc3MuYWRkKHdoZW46ICdDT05GSUdfVklSVElPX0JMSycsIGlmX3RydWU6 IGZpbGVzKCd2aXJ0aW8tYmxrLmMnKSkKIHNwZWNpZmljX3NzLmFkZCh3aGVuOiAnQ09ORklHX1ZI T1NUX1VTRVJfQkxLJywgaWZfdHJ1ZTogZmlsZXMoJ3Zob3N0LXVzZXItYmxrLmMnKSkKK3NwZWNp ZmljX3NzLmFkZCh3aGVuOiAnQ09ORklHX1ZIT1NUX1VTRVJfUlBNQicsIGlmX3RydWU6IGZpbGVz KCd2aG9zdC11c2VyLXJwbWIuYycpKQogCiBzdWJkaXIoJ2RhdGFwbGFuZScpCi0tIAoyLjIwLjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxp emF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9u Lm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92 aXJ0dWFsaXphdGlvbg==