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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7019DC38A2D for ; Wed, 26 Oct 2022 04:45:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229497AbiJZEo6 (ORCPT ); Wed, 26 Oct 2022 00:44:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39748 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230025AbiJZEoz (ORCPT ); Wed, 26 Oct 2022 00:44:55 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C4A0F17E32 for ; Tue, 25 Oct 2022 21:44:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666759491; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Dj+eqQDOPnxD1d2xex/P6auBK55p9rCcO9+QKsmGE10=; b=hEtCMTZmo0b2LnNDAnbuaZKloQFTwnqco5V8Q9HWjDR5sezz0hZsF6lRg5m7Hk+cHzXRoe cykVW+fM/H+SgBXjUgXjTPKv2aykeFMs2MtHNfE9qlZoefe0F6R9C83299xi67IIgLEJdQ bwcYTFy5+ADWK5dLNEQk69i1onmhIm8= Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-396-c6Cpwb8JM8KQMej759P9Rg-1; Wed, 26 Oct 2022 00:44:50 -0400 X-MC-Unique: c6Cpwb8JM8KQMej759P9Rg-1 Received: by mail-pl1-f198.google.com with SMTP id x18-20020a170902ec9200b001869f20da7eso5590264plg.10 for ; Tue, 25 Oct 2022 21:44:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Dj+eqQDOPnxD1d2xex/P6auBK55p9rCcO9+QKsmGE10=; b=ICIMKo115zaqhj5L9qp/qXUqYYT09gVEHJwhkiVHl8TeRhAZ2XD/Y/fcmz+VsTd65e paF3pt2TMLPLm3+F12/ShG6bAJXSjcxP0bmkrpVILJ/UsGDeO1UNkzB7VDSmvN3QccQ2 bJ+8WDHcQMplY6oLNQTxW6gd1L41p7A3VKpEfnyNmHdx9y4YvCiN6okrBMVG2HcUhF6U kfZZPebkr0g3fvFq/tS/EnrSbF9K7BVG9vMM4m2E8ZglHGSZo3nt9rqQxcl5vPyOp0+R JgN3j7OyFqdM1quvuYxDi8N4/2UYWvSH+HrdqqbnqVdSTFDXQq73g6DuWVgPkfSA7Ax5 zS+w== X-Gm-Message-State: ACrzQf2ZCbrXrzh99npJcL3IYDdHKYoeOWYR464g6vES1tNZQNP2F4/h EA6FIJ+aeCplPAEJo2bWLdVGdKe5ZyfRwxCZuyUE6hSpWx4ff7zjgLp+32/xIqn7EqYEVmgjhlI rKK+RG0kkuHvsU9gtFUlKpsnG X-Received: by 2002:a17:902:d503:b0:185:457a:9325 with SMTP id b3-20020a170902d50300b00185457a9325mr42447897plg.140.1666759489113; Tue, 25 Oct 2022 21:44:49 -0700 (PDT) X-Google-Smtp-Source: AMsMyM51Uj/BKr6QFJxAeGAR4GWGNOqPqsbobwFcc2aqfQB26RzAJ5cNyT5rBLRlf102Ah3jupd4OQ== X-Received: by 2002:a17:902:d503:b0:185:457a:9325 with SMTP id b3-20020a170902d50300b00185457a9325mr42447874plg.140.1666759488743; Tue, 25 Oct 2022 21:44:48 -0700 (PDT) Received: from [10.72.13.65] ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id i12-20020a17090a718c00b002132f3e71c6sm384827pjk.52.2022.10.25.21.44.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 25 Oct 2022 21:44:48 -0700 (PDT) Message-ID: <38b9648b-8795-5b41-b06c-d13a1a6d5d3f@redhat.com> Date: Wed, 26 Oct 2022 12:44:44 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.13.1 Subject: Re: [PATCH v3 3/4] vdpa: show dev config as-is in "vdpa dev show" output Content-Language: en-US To: Si-Wei Liu Cc: mst@redhat.com, parav@nvidia.com, virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Cindy Lu References: <1666392237-4042-1-git-send-email-si-wei.liu@oracle.com> <1666392237-4042-4-git-send-email-si-wei.liu@oracle.com> <5b9efa3a-8a82-4bd1-a5b4-b9ca5b15b51a@oracle.com> <25a18d7a-ebae-3647-32f0-14ad733118be@oracle.com> From: Jason Wang In-Reply-To: <25a18d7a-ebae-3647-32f0-14ad733118be@oracle.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 在 2022/10/26 09:10, Si-Wei Liu 写道: > > > On 10/24/2022 7:24 PM, Jason Wang wrote: >> On Tue, Oct 25, 2022 at 3:14 AM Si-Wei Liu wrote: >>> On 10/24/2022 1:40 AM, Jason Wang wrote: >>>> On Sat, Oct 22, 2022 at 7:49 AM Si-Wei Liu wrote: >>>>> Live migration of vdpa would typically require re-instate vdpa >>>>> device with an idential set of configs on the destination node, >>>>> same way as how source node created the device in the first >>>>> place. In order to save orchestration software from memorizing >>>>> and keeping track of vdpa config, it will be helpful if the vdpa >>>>> tool provides the aids for exporting the initial configs as-is, >>>>> the way how vdpa device was created. The "vdpa dev show" command >>>>> seems to be the right vehicle for that. It is unlike the "vdpa dev >>>>> config show" command output which usually goes with the live value >>>>> in the device config space, and is not quite reliable subject to >>>>> the dynamics of feature negotiation or possible change by the >>>>> driver to the config space. >>>>> >>>>> Examples: >>>>> >>>>> 1) Create vDPA by default without any config attribute >>>>> >>>>> $ vdpa dev add mgmtdev pci/0000:41:04.2 name vdpa0 >>>>> $ vdpa dev show vdpa0 >>>>> vdpa0: type network mgmtdev pci/0000:41:04.2 vendor_id 5555 max_vqs 9 max_vq_size 256 >>>>> $ vdpa dev -jp show vdpa0 >>>>> { >>>>> "dev": { >>>>> "vdpa0": { >>>>> "type": "network", >>>>> "mgmtdev": "pci/0000:41:04.2", >>>>> "vendor_id": 5555, >>>>> "max_vqs": 9, >>>>> "max_vq_size": 256, >>>>> } >>>>> } >>>>> } >>>>> >>>>> 2) Create vDPA with config attribute(s) specified >>>>> >>>>> $ vdpa dev add mgmtdev pci/0000:41:04.2 name vdpa0 \ >>>>> mac e4:11:c6:d3:45:f0 max_vq_pairs 4 >>>>> $ vdpa dev show >>>>> vdpa0: type network mgmtdev pci/0000:41:04.2 vendor_id 5555 max_vqs 9 max_vq_size 256 >>>>> initial_config: mac e4:11:c6:d3:45:f0 max_vq_pairs 4 >>>>> $ vdpa dev -jp show >>>>> { >>>>> "dev": { >>>>> "vdpa0": { >>>>> "type": "network", >>>>> "mgmtdev": "pci/0000:41:04.2", >>>>> "vendor_id": 5555, >>>>> "max_vqs": 9, >>>>> "max_vq_size": 256, >>>>> "initial_config": { >>>>> "mac": "e4:11:c6:d3:45:f0", >>>>> "max_vq_pairs": 4 >>>>> } >>>>> } >>>>> } >>>>> } >>>>> >>>>> Signed-off-by: Si-Wei Liu >>>>> --- >>>>> drivers/vdpa/vdpa.c | 39 +++++++++++++++++++++++++++++++++++++++ >>>>> 1 file changed, 39 insertions(+) >>>>> >>>>> diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c >>>>> index bebded6..bfb8f54 100644 >>>>> --- a/drivers/vdpa/vdpa.c >>>>> +++ b/drivers/vdpa/vdpa.c >>>>> @@ -677,6 +677,41 @@ static int vdpa_nl_cmd_dev_del_set_doit(struct sk_buff *skb, struct genl_info *i >>>>> } >>>>> >>>>> static int >>>>> +vdpa_dev_initcfg_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 device_id) >>>>> +{ >>>>> + struct vdpa_dev_set_config *cfg = &vdev->init_cfg; >>>>> + int err = -EMSGSIZE; >>>>> + >>>>> + if (!cfg->mask) >>>>> + return 0; >>>>> + >>>>> + switch (device_id) { >>>>> + case VIRTIO_ID_NET: >>>>> + if ((cfg->mask & BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MACADDR)) != 0 && >>>>> + nla_put(msg, VDPA_ATTR_DEV_NET_CFG_MACADDR, >>>>> + sizeof(cfg->net.mac), cfg->net.mac)) >>>>> + return err; >>>>> + if ((cfg->mask & BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MTU)) != 0 && >>>>> + nla_put_u16(msg, VDPA_ATTR_DEV_NET_CFG_MTU, cfg->net.mtu)) >>>>> + return err; >>>>> + if ((cfg->mask & BIT_ULL(VDPA_ATTR_DEV_NET_CFG_MAX_VQP)) != 0 && >>>>> + nla_put_u16(msg, VDPA_ATTR_DEV_NET_CFG_MAX_VQP, >>>>> + cfg->net.max_vq_pairs)) >>>>> + return err; >>>>> + break; >>>>> + default: >>>>> + break; >>>>> + } >>>>> + >>>>> + if ((cfg->mask & BIT_ULL(VDPA_ATTR_DEV_FEATURES)) != 0 && >>>>> + nla_put_u64_64bit(msg, VDPA_ATTR_DEV_FEATURES, >>>>> + cfg->device_features, VDPA_ATTR_PAD)) >>>>> + return err; >>>> A question: If any of those above attributes were not provisioned, >>>> should we show the ones that are inherited from the parent? >>> A simple answer would be yes, but the long answer is that I am not sure >>> if there's any for the moment - there's no default value for mtu, mac, >>> and max_vqp that can be inherited from the parent (max_vqp by default >>> being 1 is spec defined, not something inherited from the parent). >> Note that it is by default from driver level that if _F_MQ is not >> negotiated. But I think we are talking about something different that >> is out of the spec here, what if: >> >> vDPA inherit _F_MQ but mqx_vqp is not provisioned via netlink. >> >> Or is it not allowed? > My understanding is that this is not allowed any more since the > introduction of max_vqp attribute. Noted, currently we don't have a > way for vendor driver to report the default value for mqx_vqp, I think it can be reported in this patch? > if not otherwise specified in the CLI. Without getting the default > value reported in 'vdpa mgmtdev show' level, it'd just confuse mgmt > software even more. Yes, this is something that we need to fix. And what's more in order to support dynamic provisioning, we need a way to report the number of available instances that could be used for vDPA device provisioning. > >> At least some time in the past, mlx5 were >> enabled with MQ with 8 queue pairs by default. > That was the situation when there's no max_vqp attribute support from > vdpa netlink API level. I think now every driver honors the vdpa core > disposition to get a single queue pair if max_vqp config is missing. So we have: int vdpa_register_device(struct vdpa_device *vdev, int nvqs) This means technically, parent can allocate a multiqueue devices with _F_MQ features if max_vqp and device_features is not provisioned. And what's more, what happens if _F_MQ is provisioned by max_vqp is not specified? The question is: When a attribute is not specificed/provisioned via net link, what's the default value? The answer should be consistent: if device_features is determined by the parent, we should do the same for mqx_vqp. And it looks to me all of those belongs to the initial config (self-contained) > And the mlx5_vdpa driver with 8 queue pairs in the wild days is just > irrelevant to be manageable by mgmt software, regardless of live > migration. >>> And >>> the device_features if inherited is displayed at 'vdpa dev config show' >>> output. Can you remind me of a good example for inherited value that we >>> may want to show here? >> Some other cases: >> >> 1) MTU: there should be something that the device needs to report if >> _F_MTU is negotiated even if it is not provisioned from netlink. > I am not sure I understand the ask here. Noted the QEMU argument has > to offer host_mtu=X with the maximum MTU value for guest to use (and > applied as the initial MTU config during virtio-net probing for Linux > driver), Adding Cindy. I think it's a known issue that we need to do sanity check to make sure cli parameters matches what is provisioned from netlink. > and the way to get the parent device MTU and whether that's relevant > to vdpa device's MTU is very vendor specific. So I think the max MTU of parent should be equal to the max MTU of the vDPA. > I think we would need new attribute(s) in the mgmtdev level to support > what you want here? Not sure, but what I want to ask is consider we provision MTU feature but without max MTU value, do we need to report the initial max MTU here? > >> 2) device_features: if device_features is not provisioned, we should >> still report it via netlink here > Not the way I expected it, but with Lingshan's series to expose fields > out of FEATURES_OK, the device_features is now reported through 'vdpa > dev config show' regardless being specified or not, if I am not mistaken? Yes. > > Currently we export the config attributes upon vdpa creation under the > "initial_config" key. If we want to expose more default values > inherited from mgmtdev, I think we can wrap up these default values > under another key "inherited_config" to display in 'vdpa dev show' > output. Does it fit what you have in mind? I wonder if it's better to merge those two, or is there any advantages of splitting them? > >> or do you mean the mgmt can assume it >> should be the same as mgmtdev. Anyhow if we don't show device_features >> if it is not provisioned, it will complicate the mgmt software. > Yes, as I said earlier, since the device_features attr getting added > to the 'vdpa dev config show' command, this divergence started to > complicate mgmt software already. > > Thanks, Thanks > -Siwei >> Thanks >> >>> Thanks, >>> -Siwei >>> >>> >>>> Thanks >>>> >>>>> + >>>>> + return 0; >>>>> +} >>>>> + >>>>> +static int >>>>> vdpa_dev_fill(struct vdpa_device *vdev, struct sk_buff *msg, u32 portid, u32 seq, >>>>> int flags, struct netlink_ext_ack *extack) >>>>> { >>>>> @@ -715,6 +750,10 @@ static int vdpa_nl_cmd_dev_del_set_doit(struct sk_buff *skb, struct genl_info *i >>>>> if (nla_put_u16(msg, VDPA_ATTR_DEV_MIN_VQ_SIZE, min_vq_size)) >>>>> goto msg_err; >>>>> >>>>> + err = vdpa_dev_initcfg_fill(vdev, msg, device_id); >>>>> + if (err) >>>>> + goto msg_err; >>>>> + >>>>> genlmsg_end(msg, hdr); >>>>> return 0; >>>>> >>>>> -- >>>>> 1.8.3.1 >>>>> > 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 Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 69FCCC433FE for ; Wed, 26 Oct 2022 04:45:01 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id D58FD80D51; Wed, 26 Oct 2022 04:45:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org D58FD80D51 Authentication-Results: smtp1.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=hKSiZ+no X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hF4tc1QvxBpw; Wed, 26 Oct 2022 04:44:59 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 180D380D50; Wed, 26 Oct 2022 04:44:59 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 180D380D50 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id DAD18C0033; Wed, 26 Oct 2022 04:44:58 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) by lists.linuxfoundation.org (Postfix) with ESMTP id F0A54C002D for ; Wed, 26 Oct 2022 04:44:57 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id D2F9880D50 for ; Wed, 26 Oct 2022 04:44:57 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org D2F9880D50 X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rnqSc6mhIUNO for ; Wed, 26 Oct 2022 04:44:55 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 9113880D51 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by smtp1.osuosl.org (Postfix) with ESMTPS id 9113880D51 for ; Wed, 26 Oct 2022 04:44:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666759494; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Dj+eqQDOPnxD1d2xex/P6auBK55p9rCcO9+QKsmGE10=; b=hKSiZ+noPTlNE+v9xXh2fh6SiIwOyjs6hO4xop/o5l6Wpz3yksYuGW19GIXTBUgphI2Q6B YGRdIOFEhQonG3XEEfEFyEHmNi2IRB+Xfolf49tf67kq3w0ANoCspa149jo5rB3Hn0LW4Y XGSs09vUxrgoCdEMJLS8Icm5aKYOwZ0= Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-130-52_I4VCbPX-Szf19KoiBOg-1; Wed, 26 Oct 2022 00:44:50 -0400 X-MC-Unique: 52_I4VCbPX-Szf19KoiBOg-1 Received: by mail-pj1-f69.google.com with SMTP id lw1-20020a17090b180100b0021316472a8fso717730pjb.6 for ; Tue, 25 Oct 2022 21:44:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Dj+eqQDOPnxD1d2xex/P6auBK55p9rCcO9+QKsmGE10=; b=kdd1fYwbQtHyu73YdvF4VGts4JM+siRPIFO7zjQysSge6kN3dEJO05+P2uOOAkmR0t XG8o9m5fVMzhYqeyhgjKeD7IAvUKpF9WGtsQsSR3St/OgnGvkKcIUAnqTQcHDzb9xOyb c7gWUtx0QTnOXDBQF1CT/agSXP1EGWdOe9ldJ/6SXjYdE/2UgqzSUUwV9Ozwrdl66Oj0 quipbeN/CpSrkr7v/ZA0oN7oUeFdO9swvftVSrAnvBSA6TPkCVG/ktE6gKFsWU3iwIaB o82U1MaBq8C2bDw1XIV8g3f2M376pV5nSMRuLqz/EnmO0VfFVMugViE7dFpqm49dmt0q +xPQ== X-Gm-Message-State: ACrzQf1jc0Cmn6GEq0wr6OhHN02+JcsO0DNJ+cvHw9CB4rRC04OlFkW+ TPiUDSkLrSHQmecy7Q0yOUU2KHfACkn2cKCq/cSApH8yYt5ZFOOocWXzajKm2nfHt0O09mVryE/ DsPyd9O5mFQnVV99cHzYrh/szhKYjAtUekVUpfDen7w== X-Received: by 2002:a17:902:d503:b0:185:457a:9325 with SMTP id b3-20020a170902d50300b00185457a9325mr42447895plg.140.1666759489093; Tue, 25 Oct 2022 21:44:49 -0700 (PDT) X-Google-Smtp-Source: AMsMyM51Uj/BKr6QFJxAeGAR4GWGNOqPqsbobwFcc2aqfQB26RzAJ5cNyT5rBLRlf102Ah3jupd4OQ== X-Received: by 2002:a17:902:d503:b0:185:457a:9325 with SMTP id b3-20020a170902d50300b00185457a9325mr42447874plg.140.1666759488743; Tue, 25 Oct 2022 21:44:48 -0700 (PDT) Received: from [10.72.13.65] ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id i12-20020a17090a718c00b002132f3e71c6sm384827pjk.52.2022.10.25.21.44.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 25 Oct 2022 21:44:48 -0700 (PDT) Message-ID: <38b9648b-8795-5b41-b06c-d13a1a6d5d3f@redhat.com> Date: Wed, 26 Oct 2022 12:44:44 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.13.1 Subject: Re: [PATCH v3 3/4] vdpa: show dev config as-is in "vdpa dev show" output To: Si-Wei Liu References: <1666392237-4042-1-git-send-email-si-wei.liu@oracle.com> <1666392237-4042-4-git-send-email-si-wei.liu@oracle.com> <5b9efa3a-8a82-4bd1-a5b4-b9ca5b15b51a@oracle.com> <25a18d7a-ebae-3647-32f0-14ad733118be@oracle.com> From: Jason Wang In-Reply-To: <25a18d7a-ebae-3647-32f0-14ad733118be@oracle.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Cindy Lu , mst@redhat.com 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" CuWcqCAyMDIyLzEwLzI2IDA5OjEwLCBTaS1XZWkgTGl1IOWGmemBkzoKPgo+Cj4gT24gMTAvMjQv MjAyMiA3OjI0IFBNLCBKYXNvbiBXYW5nIHdyb3RlOgo+PiBPbiBUdWUsIE9jdCAyNSwgMjAyMiBh dCAzOjE0IEFNIFNpLVdlaSBMaXU8c2ktd2VpLmxpdUBvcmFjbGUuY29tPiAgd3JvdGU6Cj4+PiBP biAxMC8yNC8yMDIyIDE6NDAgQU0sIEphc29uIFdhbmcgd3JvdGU6Cj4+Pj4gT24gU2F0LCBPY3Qg MjIsIDIwMjIgYXQgNzo0OSBBTSBTaS1XZWkgTGl1PHNpLXdlaS5saXVAb3JhY2xlLmNvbT4gIHdy b3RlOgo+Pj4+PiBMaXZlIG1pZ3JhdGlvbiBvZiB2ZHBhIHdvdWxkIHR5cGljYWxseSByZXF1aXJl IHJlLWluc3RhdGUgdmRwYQo+Pj4+PiBkZXZpY2Ugd2l0aCBhbiBpZGVudGlhbCBzZXQgb2YgY29u ZmlncyBvbiB0aGUgZGVzdGluYXRpb24gbm9kZSwKPj4+Pj4gc2FtZSB3YXkgYXMgaG93IHNvdXJj ZSBub2RlIGNyZWF0ZWQgdGhlIGRldmljZSBpbiB0aGUgZmlyc3QKPj4+Pj4gcGxhY2UuIEluIG9y ZGVyIHRvIHNhdmUgb3JjaGVzdHJhdGlvbiBzb2Z0d2FyZSBmcm9tIG1lbW9yaXppbmcKPj4+Pj4g YW5kIGtlZXBpbmcgdHJhY2sgb2YgdmRwYSBjb25maWcsIGl0IHdpbGwgYmUgaGVscGZ1bCBpZiB0 aGUgdmRwYQo+Pj4+PiB0b29sIHByb3ZpZGVzIHRoZSBhaWRzIGZvciBleHBvcnRpbmcgdGhlIGlu aXRpYWwgY29uZmlncyBhcy1pcywKPj4+Pj4gdGhlIHdheSBob3cgdmRwYSBkZXZpY2Ugd2FzIGNy ZWF0ZWQuIFRoZSAidmRwYSBkZXYgc2hvdyIgY29tbWFuZAo+Pj4+PiBzZWVtcyB0byBiZSB0aGUg cmlnaHQgdmVoaWNsZSBmb3IgdGhhdC4gSXQgaXMgdW5saWtlIHRoZSAidmRwYSBkZXYKPj4+Pj4g Y29uZmlnIHNob3ciIGNvbW1hbmQgb3V0cHV0IHdoaWNoIHVzdWFsbHkgZ29lcyB3aXRoIHRoZSBs aXZlIHZhbHVlCj4+Pj4+IGluIHRoZSBkZXZpY2UgY29uZmlnIHNwYWNlLCBhbmQgaXMgbm90IHF1 aXRlIHJlbGlhYmxlIHN1YmplY3QgdG8KPj4+Pj4gdGhlIGR5bmFtaWNzIG9mIGZlYXR1cmUgbmVn b3RpYXRpb24gb3IgcG9zc2libGUgY2hhbmdlIGJ5IHRoZQo+Pj4+PiBkcml2ZXIgdG8gdGhlIGNv bmZpZyBzcGFjZS4KPj4+Pj4KPj4+Pj4gRXhhbXBsZXM6Cj4+Pj4+Cj4+Pj4+IDEpIENyZWF0ZSB2 RFBBIGJ5IGRlZmF1bHQgd2l0aG91dCBhbnkgY29uZmlnIGF0dHJpYnV0ZQo+Pj4+Pgo+Pj4+PiAk IHZkcGEgZGV2IGFkZCBtZ210ZGV2IHBjaS8wMDAwOjQxOjA0LjIgbmFtZSB2ZHBhMAo+Pj4+PiAk IHZkcGEgZGV2IHNob3cgdmRwYTAKPj4+Pj4gdmRwYTA6IHR5cGUgbmV0d29yayBtZ210ZGV2IHBj aS8wMDAwOjQxOjA0LjIgdmVuZG9yX2lkIDU1NTUgbWF4X3ZxcyA5IG1heF92cV9zaXplIDI1Ngo+ Pj4+PiAkIHZkcGEgZGV2IC1qcCBzaG93IHZkcGEwCj4+Pj4+IHsKPj4+Pj4gICAgICAgImRldiI6 IHsKPj4+Pj4gICAgICAgICAgICJ2ZHBhMCI6IHsKPj4+Pj4gICAgICAgICAgICAgICAidHlwZSI6 ICJuZXR3b3JrIiwKPj4+Pj4gICAgICAgICAgICAgICAibWdtdGRldiI6ICJwY2kvMDAwMDo0MTow NC4yIiwKPj4+Pj4gICAgICAgICAgICAgICAidmVuZG9yX2lkIjogNTU1NSwKPj4+Pj4gICAgICAg ICAgICAgICAibWF4X3ZxcyI6IDksCj4+Pj4+ICAgICAgICAgICAgICAgIm1heF92cV9zaXplIjog MjU2LAo+Pj4+PiAgICAgICAgICAgfQo+Pj4+PiAgICAgICB9Cj4+Pj4+IH0KPj4+Pj4KPj4+Pj4g MikgQ3JlYXRlIHZEUEEgd2l0aCBjb25maWcgYXR0cmlidXRlKHMpIHNwZWNpZmllZAo+Pj4+Pgo+ Pj4+PiAkIHZkcGEgZGV2IGFkZCBtZ210ZGV2IHBjaS8wMDAwOjQxOjA0LjIgbmFtZSB2ZHBhMCBc Cj4+Pj4+ICAgICAgIG1hYyBlNDoxMTpjNjpkMzo0NTpmMCBtYXhfdnFfcGFpcnMgNAo+Pj4+PiAk IHZkcGEgZGV2IHNob3cKPj4+Pj4gdmRwYTA6IHR5cGUgbmV0d29yayBtZ210ZGV2IHBjaS8wMDAw OjQxOjA0LjIgdmVuZG9yX2lkIDU1NTUgbWF4X3ZxcyA5IG1heF92cV9zaXplIDI1Ngo+Pj4+PiAg ICAgaW5pdGlhbF9jb25maWc6IG1hYyBlNDoxMTpjNjpkMzo0NTpmMCBtYXhfdnFfcGFpcnMgNAo+ Pj4+PiAkIHZkcGEgZGV2IC1qcCBzaG93Cj4+Pj4+IHsKPj4+Pj4gICAgICAgImRldiI6IHsKPj4+ Pj4gICAgICAgICAgICJ2ZHBhMCI6IHsKPj4+Pj4gICAgICAgICAgICAgICAidHlwZSI6ICJuZXR3 b3JrIiwKPj4+Pj4gICAgICAgICAgICAgICAibWdtdGRldiI6ICJwY2kvMDAwMDo0MTowNC4yIiwK Pj4+Pj4gICAgICAgICAgICAgICAidmVuZG9yX2lkIjogNTU1NSwKPj4+Pj4gICAgICAgICAgICAg ICAibWF4X3ZxcyI6IDksCj4+Pj4+ICAgICAgICAgICAgICAgIm1heF92cV9zaXplIjogMjU2LAo+ Pj4+PiAgICAgICAgICAgICAgICJpbml0aWFsX2NvbmZpZyI6IHsKPj4+Pj4gICAgICAgICAgICAg ICAgICAgIm1hYyI6ICJlNDoxMTpjNjpkMzo0NTpmMCIsCj4+Pj4+ICAgICAgICAgICAgICAgICAg ICJtYXhfdnFfcGFpcnMiOiA0Cj4+Pj4+ICAgICAgICAgICAgICAgfQo+Pj4+PiAgICAgICAgICAg fQo+Pj4+PiAgICAgICB9Cj4+Pj4+IH0KPj4+Pj4KPj4+Pj4gU2lnbmVkLW9mZi1ieTogU2ktV2Vp IExpdTxzaS13ZWkubGl1QG9yYWNsZS5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiAgICBkcml2ZXJzL3Zk cGEvdmRwYS5jIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ Pj4+ICAgIDEgZmlsZSBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspCj4+Pj4+Cj4+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3ZkcGEvdmRwYS5jIGIvZHJpdmVycy92ZHBhL3ZkcGEuYwo+Pj4+PiBp bmRleCBiZWJkZWQ2Li5iZmI4ZjU0IDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL3ZkcGEvdmRw YS5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMvdmRwYS92ZHBhLmMKPj4+Pj4gQEAgLTY3Nyw2ICs2Nzcs NDEgQEAgc3RhdGljIGludCB2ZHBhX25sX2NtZF9kZXZfZGVsX3NldF9kb2l0KHN0cnVjdCBza19i dWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmkKPj4+Pj4gICAgfQo+Pj4+Pgo+Pj4+PiAgICBz dGF0aWMgaW50Cj4+Pj4+ICt2ZHBhX2Rldl9pbml0Y2ZnX2ZpbGwoc3RydWN0IHZkcGFfZGV2aWNl ICp2ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCB1MzIgZGV2aWNlX2lkKQo+Pj4+PiArewo+Pj4+ PiArICAgICAgIHN0cnVjdCB2ZHBhX2Rldl9zZXRfY29uZmlnICpjZmcgPSAmdmRldi0+aW5pdF9j Zmc7Cj4+Pj4+ICsgICAgICAgaW50IGVyciA9IC1FTVNHU0laRTsKPj4+Pj4gKwo+Pj4+PiArICAg ICAgIGlmICghY2ZnLT5tYXNrKQo+Pj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4+ ICsKPj4+Pj4gKyAgICAgICBzd2l0Y2ggKGRldmljZV9pZCkgewo+Pj4+PiArICAgICAgIGNhc2Ug VklSVElPX0lEX05FVDoKPj4+Pj4gKyAgICAgICAgICAgICAgIGlmICgoY2ZnLT5tYXNrICYgQklU X1VMTChWRFBBX0FUVFJfREVWX05FVF9DRkdfTUFDQUREUikpICE9IDAgJiYKPj4+Pj4gKyAgICAg ICAgICAgICAgICAgICBubGFfcHV0KG1zZywgVkRQQV9BVFRSX0RFVl9ORVRfQ0ZHX01BQ0FERFIs Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY2ZnLT5uZXQubWFjKSwg Y2ZnLT5uZXQubWFjKSkKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsK Pj4+Pj4gKyAgICAgICAgICAgICAgIGlmICgoY2ZnLT5tYXNrICYgQklUX1VMTChWRFBBX0FUVFJf REVWX05FVF9DRkdfTVRVKSkgIT0gMCAmJgo+Pj4+PiArICAgICAgICAgICAgICAgICAgIG5sYV9w dXRfdTE2KG1zZywgVkRQQV9BVFRSX0RFVl9ORVRfQ0ZHX01UVSwgY2ZnLT5uZXQubXR1KSkKPj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4+Pj4gKyAgICAgICAgICAg ICAgIGlmICgoY2ZnLT5tYXNrICYgQklUX1VMTChWRFBBX0FUVFJfREVWX05FVF9DRkdfTUFYX1ZR UCkpICE9IDAgJiYKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICBubGFfcHV0X3UxNihtc2csIFZE UEFfQVRUUl9ERVZfTkVUX0NGR19NQVhfVlFQLAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNmZy0+bmV0Lm1heF92cV9wYWlycykpCj4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBlcnI7Cj4+Pj4+ICsgICAgICAgICAgICAgICBicmVhazsKPj4+Pj4gKyAg ICAgICBkZWZhdWx0Ogo+Pj4+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4+ICsgICAgICAg fQo+Pj4+PiArCj4+Pj4+ICsgICAgICAgaWYgKChjZmctPm1hc2sgJiBCSVRfVUxMKFZEUEFfQVRU Ul9ERVZfRkVBVFVSRVMpKSAhPSAwICYmCj4+Pj4+ICsgICAgICAgICAgIG5sYV9wdXRfdTY0XzY0 Yml0KG1zZywgVkRQQV9BVFRSX0RFVl9GRUFUVVJFUywKPj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2ZnLT5kZXZpY2VfZmVhdHVyZXMsIFZEUEFfQVRUUl9QQUQpKQo+Pj4+PiAr ICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4+PiBBIHF1ZXN0aW9uOiBJZiBhbnkgb2YgdGhv c2UgYWJvdmUgYXR0cmlidXRlcyB3ZXJlIG5vdCBwcm92aXNpb25lZCwKPj4+PiBzaG91bGQgd2Ug c2hvdyB0aGUgb25lcyB0aGF0IGFyZSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50Pwo+Pj4gQSBz aW1wbGUgYW5zd2VyIHdvdWxkIGJlIHllcywgYnV0IHRoZSBsb25nIGFuc3dlciBpcyB0aGF0IEkg YW0gbm90IHN1cmUKPj4+IGlmIHRoZXJlJ3MgYW55IGZvciB0aGUgbW9tZW50IC0gdGhlcmUncyBu byAgZGVmYXVsdCB2YWx1ZSBmb3IgbXR1LCBtYWMsCj4+PiBhbmQgbWF4X3ZxcCB0aGF0IGNhbiBi ZSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IChtYXhfdnFwIGJ5IGRlZmF1bHQKPj4+IGJlaW5n IDEgaXMgc3BlYyBkZWZpbmVkLCBub3Qgc29tZXRoaW5nIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJl bnQpLgo+PiBOb3RlIHRoYXQgaXQgaXMgYnkgZGVmYXVsdCBmcm9tIGRyaXZlciBsZXZlbCB0aGF0 IGlmIF9GX01RIGlzIG5vdAo+PiBuZWdvdGlhdGVkLiBCdXQgSSB0aGluayB3ZSBhcmUgdGFsa2lu ZyBhYm91dCBzb21ldGhpbmcgZGlmZmVyZW50IHRoYXQKPj4gaXMgb3V0IG9mIHRoZSBzcGVjIGhl cmUsIHdoYXQgaWY6Cj4+Cj4+IHZEUEEgaW5oZXJpdCBfRl9NUSBidXQgbXF4X3ZxcCBpcyBub3Qg cHJvdmlzaW9uZWQgdmlhIG5ldGxpbmsuCj4+Cj4+IE9yIGlzIGl0IG5vdCBhbGxvd2VkPwo+IE15 IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIGlzIG5vdCBhbGxvd2VkIGFueSBtb3JlIHNpbmNl IHRoZSAKPiBpbnRyb2R1Y3Rpb24gb2YgbWF4X3ZxcCBhdHRyaWJ1dGUuIE5vdGVkLCBjdXJyZW50 bHkgd2UgZG9uJ3QgaGF2ZSBhIAo+IHdheSBmb3IgdmVuZG9yIGRyaXZlciB0byByZXBvcnQgdGhl IGRlZmF1bHQgdmFsdWUgZm9yIG1xeF92cXAsIAoKCkkgdGhpbmsgaXQgY2FuIGJlIHJlcG9ydGVk IGluIHRoaXMgcGF0Y2g/CgoKPiBpZiBub3Qgb3RoZXJ3aXNlIHNwZWNpZmllZCBpbiB0aGUgQ0xJ LiBXaXRob3V0IGdldHRpbmcgdGhlIGRlZmF1bHQgCj4gdmFsdWUgcmVwb3J0ZWQgaW4gJ3ZkcGEg bWdtdGRldiBzaG93JyBsZXZlbCwgaXQnZCBqdXN0IGNvbmZ1c2UgbWdtdCAKPiBzb2Z0d2FyZSBl dmVuIG1vcmUuCgoKWWVzLCB0aGlzIGlzIHNvbWV0aGluZyB0aGF0IHdlIG5lZWQgdG8gZml4LiBB bmQgd2hhdCdzIG1vcmUgaW4gb3JkZXIgdG8gCnN1cHBvcnQgZHluYW1pYyBwcm92aXNpb25pbmcs IHdlIG5lZWQgYSB3YXkgdG8gcmVwb3J0IHRoZSBudW1iZXIgb2YgCmF2YWlsYWJsZSBpbnN0YW5j ZXMgdGhhdCBjb3VsZCBiZSB1c2VkIGZvciB2RFBBIGRldmljZSBwcm92aXNpb25pbmcuCgoKPgo+ PiAgICBBdCBsZWFzdCBzb21lIHRpbWUgaW4gdGhlIHBhc3QsIG1seDUgd2VyZQo+PiBlbmFibGVk IHdpdGggTVEgd2l0aCA4IHF1ZXVlIHBhaXJzIGJ5IGRlZmF1bHQuCj4gVGhhdCB3YXMgdGhlIHNp dHVhdGlvbiB3aGVuIHRoZXJlJ3Mgbm8gbWF4X3ZxcCBhdHRyaWJ1dGUgc3VwcG9ydCBmcm9tIAo+ IHZkcGEgbmV0bGluayBBUEkgbGV2ZWwuIEkgdGhpbmsgbm93IGV2ZXJ5IGRyaXZlciBob25vcnMg dGhlIHZkcGEgY29yZSAKPiBkaXNwb3NpdGlvbiB0byBnZXQgYSBzaW5nbGUgcXVldWUgcGFpciBp ZiBtYXhfdnFwIGNvbmZpZyBpcyBtaXNzaW5nLgoKU28gd2UgaGF2ZToKCmludCB2ZHBhX3JlZ2lz dGVyX2RldmljZShzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYsIGludCBudnFzKQoKVGhpcyBtZWFu cyB0ZWNobmljYWxseSwgcGFyZW50IGNhbiBhbGxvY2F0ZSBhIG11bHRpcXVldWUgZGV2aWNlcyB3 aXRoIApfRl9NUSBmZWF0dXJlcyBpZiBtYXhfdnFwIGFuZCBkZXZpY2VfZmVhdHVyZXMgaXMgbm90 IHByb3Zpc2lvbmVkLiBBbmQgCndoYXQncyBtb3JlLCB3aGF0IGhhcHBlbnMgaWYgX0ZfTVEgaXMg cHJvdmlzaW9uZWQgYnkgbWF4X3ZxcCBpcyBub3QgCnNwZWNpZmllZD8KClRoZSBxdWVzdGlvbiBp czoKCldoZW4gYSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmljZWQvcHJvdmlzaW9uZWQgdmlhIG5l dCBsaW5rLCB3aGF0J3MgdGhlIApkZWZhdWx0IHZhbHVlPyBUaGUgYW5zd2VyIHNob3VsZCBiZSBj b25zaXN0ZW50OiBpZiBkZXZpY2VfZmVhdHVyZXMgaXMgCmRldGVybWluZWQgYnkgdGhlIHBhcmVu dCwgd2Ugc2hvdWxkIGRvIHRoZSBzYW1lIGZvciBtcXhfdnFwLiBBbmQgaXQgCmxvb2tzIHRvIG1l IGFsbCBvZiB0aG9zZSBiZWxvbmdzIHRvIHRoZSBpbml0aWFsIGNvbmZpZyAoc2VsZi1jb250YWlu ZWQpCgoKPiBBbmQgdGhlIG1seDVfdmRwYSBkcml2ZXIgd2l0aCA4IHF1ZXVlIHBhaXJzIGluIHRo ZSB3aWxkIGRheXMgaXMganVzdCAKPiBpcnJlbGV2YW50IHRvIGJlIG1hbmFnZWFibGUgYnkgbWdt dCBzb2Z0d2FyZSwgcmVnYXJkbGVzcyBvZiBsaXZlIAo+IG1pZ3JhdGlvbi4KPj4+IEFuZAo+Pj4g dGhlIGRldmljZV9mZWF0dXJlcyBpZiBpbmhlcml0ZWQgaXMgZGlzcGxheWVkIGF0ICd2ZHBhIGRl diBjb25maWcgc2hvdycKPj4+IG91dHB1dC4gQ2FuIHlvdSByZW1pbmQgbWUgb2YgYSBnb29kIGV4 YW1wbGUgZm9yIGluaGVyaXRlZCB2YWx1ZSB0aGF0IHdlCj4+PiBtYXkgd2FudCB0byBzaG93IGhl cmU/Cj4+IFNvbWUgb3RoZXIgY2FzZXM6Cj4+Cj4+IDEpIE1UVTogdGhlcmUgc2hvdWxkIGJlIHNv bWV0aGluZyB0aGF0IHRoZSBkZXZpY2UgbmVlZHMgdG8gcmVwb3J0IGlmCj4+IF9GX01UVSBpcyBu ZWdvdGlhdGVkIGV2ZW4gaWYgaXQgaXMgbm90IHByb3Zpc2lvbmVkIGZyb20gbmV0bGluay4KPiBJ IGFtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgYXNrIGhlcmUuIE5vdGVkIHRoZSBRRU1VIGFy Z3VtZW50IGhhcyAKPiB0byBvZmZlciBob3N0X210dT1YIHdpdGggdGhlIG1heGltdW0gTVRVIHZh bHVlIGZvciBndWVzdCB0byB1c2UgKGFuZCAKPiBhcHBsaWVkIGFzIHRoZSBpbml0aWFsIE1UVSBj b25maWcgZHVyaW5nIHZpcnRpby1uZXQgcHJvYmluZyBmb3IgTGludXggCj4gZHJpdmVyKSwgCgoK QWRkaW5nIENpbmR5LgoKSSB0aGluayBpdCdzIGEga25vd24gaXNzdWUgdGhhdCB3ZSBuZWVkIHRv IGRvIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgCmNsaSBwYXJhbWV0ZXJzIG1hdGNoZXMgd2hh dCBpcyBwcm92aXNpb25lZCBmcm9tIG5ldGxpbmsuCgoKPiBhbmQgdGhlIHdheSB0byBnZXQgdGhl IHBhcmVudCBkZXZpY2UgTVRVIGFuZCB3aGV0aGVyIHRoYXQncyByZWxldmFudCAKPiB0byB2ZHBh IGRldmljZSdzIE1UVSBpcyB2ZXJ5IHZlbmRvciBzcGVjaWZpYy4KCgpTbyBJIHRoaW5rIHRoZSBt YXggTVRVIG9mIHBhcmVudCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIG1heCBNVFUgb2YgdGhlIHZE UEEuCgoKPiBJIHRoaW5rIHdlIHdvdWxkIG5lZWQgbmV3IGF0dHJpYnV0ZShzKSBpbiB0aGUgbWdt dGRldiBsZXZlbCB0byBzdXBwb3J0IAo+IHdoYXQgeW91IHdhbnQgaGVyZT8KCgpOb3Qgc3VyZSwg YnV0IHdoYXQgSSB3YW50IHRvIGFzayBpcyBjb25zaWRlciB3ZSBwcm92aXNpb24gTVRVIGZlYXR1 cmUgCmJ1dCB3aXRob3V0IG1heCBNVFUgdmFsdWUsIGRvIHdlIG5lZWQgdG8gcmVwb3J0IHRoZSBp bml0aWFsIG1heCBNVFUgaGVyZT8KCgo+Cj4+IDIpIGRldmljZV9mZWF0dXJlczogaWYgZGV2aWNl X2ZlYXR1cmVzIGlzIG5vdCBwcm92aXNpb25lZCwgd2Ugc2hvdWxkCj4+IHN0aWxsIHJlcG9ydCBp dCB2aWEgbmV0bGluayBoZXJlCj4gTm90IHRoZSB3YXkgSSBleHBlY3RlZCBpdCwgYnV0IHdpdGgg TGluZ3NoYW4ncyBzZXJpZXMgdG8gZXhwb3NlIGZpZWxkcyAKPiBvdXQgb2YgRkVBVFVSRVNfT0ss IHRoZSBkZXZpY2VfZmVhdHVyZXMgaXMgbm93IHJlcG9ydGVkIHRocm91Z2ggJ3ZkcGEgCj4gZGV2 IGNvbmZpZyBzaG93JyByZWdhcmRsZXNzIGJlaW5nIHNwZWNpZmllZCBvciBub3QsIGlmIEkgYW0g bm90IG1pc3Rha2VuPwoKClllcy4KCgo+Cj4gQ3VycmVudGx5IHdlIGV4cG9ydCB0aGUgY29uZmln IGF0dHJpYnV0ZXMgdXBvbiB2ZHBhIGNyZWF0aW9uIHVuZGVyIHRoZSAKPiAiaW5pdGlhbF9jb25m aWciIGtleS4gSWYgd2Ugd2FudCB0byBleHBvc2UgbW9yZSBkZWZhdWx0IHZhbHVlcyAKPiBpbmhl cml0ZWQgZnJvbSBtZ210ZGV2LCBJIHRoaW5rIHdlIGNhbiB3cmFwIHVwIHRoZXNlIGRlZmF1bHQg dmFsdWVzIAo+IHVuZGVyIGFub3RoZXIga2V5ICJpbmhlcml0ZWRfY29uZmlnIiB0byBkaXNwbGF5 IGluICd2ZHBhIGRldiBzaG93JyAKPiBvdXRwdXQuIERvZXMgaXQgZml0IHdoYXQgeW91IGhhdmUg aW4gbWluZD8KCgpJIHdvbmRlciBpZiBpdCdzIGJldHRlciB0byBtZXJnZSB0aG9zZSB0d28sIG9y IGlzIHRoZXJlIGFueSBhZHZhbnRhZ2VzIApvZiBzcGxpdHRpbmcgdGhlbT8KCgo+Cj4+IG9yIGRv IHlvdSBtZWFuIHRoZSBtZ210IGNhbiBhc3N1bWUgaXQKPj4gc2hvdWxkIGJlIHRoZSBzYW1lIGFz IG1nbXRkZXYuIEFueWhvdyBpZiB3ZSBkb24ndCBzaG93IGRldmljZV9mZWF0dXJlcwo+PiBpZiBp dCBpcyBub3QgcHJvdmlzaW9uZWQsIGl0IHdpbGwgY29tcGxpY2F0ZSB0aGUgbWdtdCBzb2Z0d2Fy ZS4KPiBZZXMsIGFzIEkgc2FpZCBlYXJsaWVyLCBzaW5jZSB0aGUgZGV2aWNlX2ZlYXR1cmVzIGF0 dHIgZ2V0dGluZyBhZGRlZCAKPiB0byB0aGUgJ3ZkcGEgZGV2IGNvbmZpZyBzaG93JyBjb21tYW5k LCB0aGlzIGRpdmVyZ2VuY2Ugc3RhcnRlZCB0byAKPiBjb21wbGljYXRlIG1nbXQgc29mdHdhcmUg YWxyZWFkeS4KPgo+IFRoYW5rcywKCgpUaGFua3MKCgo+IC1TaXdlaQo+PiBUaGFua3MKPj4KPj4+ IFRoYW5rcywKPj4+IC1TaXdlaQo+Pj4KPj4+Cj4+Pj4gVGhhbmtzCj4+Pj4KPj4+Pj4gKwo+Pj4+ PiArICAgICAgIHJldHVybiAwOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgaW50Cj4+ Pj4+ICAgIHZkcGFfZGV2X2ZpbGwoc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2LCBzdHJ1Y3Qgc2tf YnVmZiAqbXNnLCB1MzIgcG9ydGlkLCB1MzIgc2VxLAo+Pj4+PiAgICAgICAgICAgICAgICAgaW50 IGZsYWdzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCj4+Pj4+ICAgIHsKPj4+Pj4g QEAgLTcxNSw2ICs3NTAsMTAgQEAgc3RhdGljIGludCB2ZHBhX25sX2NtZF9kZXZfZGVsX3NldF9k b2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmkKPj4+Pj4gICAgICAg ICAgIGlmIChubGFfcHV0X3UxNihtc2csIFZEUEFfQVRUUl9ERVZfTUlOX1ZRX1NJWkUsIG1pbl92 cV9zaXplKSkKPj4+Pj4gICAgICAgICAgICAgICAgICAgZ290byBtc2dfZXJyOwo+Pj4+Pgo+Pj4+ PiArICAgICAgIGVyciA9IHZkcGFfZGV2X2luaXRjZmdfZmlsbCh2ZGV2LCBtc2csIGRldmljZV9p ZCk7Cj4+Pj4+ICsgICAgICAgaWYgKGVycikKPj4+Pj4gKyAgICAgICAgICAgICAgIGdvdG8gbXNn X2VycjsKPj4+Pj4gKwo+Pj4+PiAgICAgICAgICAgZ2VubG1zZ19lbmQobXNnLCBoZHIpOwo+Pj4+ PiAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4+Cj4+Pj4+IC0tCj4+Pj4+IDEuOC4zLjEKPj4+Pj4K PgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVh bGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRp b24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZv L3ZpcnR1YWxpemF0aW9u