From: "Tian, Kevin" <kevin.tian@intel.com>
To: Brett Creeley <bcreeley@amd.com>,
Brett Creeley <brett.creeley@amd.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
"jgg@nvidia.com" <jgg@nvidia.com>,
"yishaih@nvidia.com" <yishaih@nvidia.com>,
"shameerali.kolothum.thodi@huawei.com"
<shameerali.kolothum.thodi@huawei.com>
Cc: "shannon.nelson@amd.com" <shannon.nelson@amd.com>
Subject: RE: [PATCH v10 vfio 4/7] vfio/pds: Add VFIO live migration support
Date: Tue, 20 Jun 2023 02:19:50 +0000 [thread overview]
Message-ID: <BN9PR11MB52762B0ACFC46319498FE0908C5CA@BN9PR11MB5276.namprd11.prod.outlook.com> (raw)
In-Reply-To: <f1d31c66-4914-b5a4-4092-5e7a3f74ee76@amd.com>
> From: Brett Creeley <bcreeley@amd.com>
> Sent: Saturday, June 17, 2023 12:45 PM
>
> On 6/16/2023 1:06 AM, Tian, Kevin wrote:
> > Caution: This message originated from an External Source. Use proper
> caution when opening attachments, clicking links, or responding.
> >
> >
> >> From: Brett Creeley <brett.creeley@amd.com>
> >> Sent: Saturday, June 3, 2023 6:03 AM
> >>
> >> +
> >> +static int pds_vfio_client_adminq_cmd(struct pds_vfio_pci_device
> *pds_vfio,
> >> + union pds_core_adminq_cmd *req,
> >> + size_t req_len,
> >> + union pds_core_adminq_comp *resp,
> >> + u64 flags)
> >> +{
> >> + union pds_core_adminq_cmd cmd = {};
> >> + size_t cp_len;
> >> + int err;
> >> +
> >> + /* Wrap the client request */
> >> + cmd.client_request.opcode = PDS_AQ_CMD_CLIENT_CMD;
> >> + cmd.client_request.client_id = cpu_to_le16(pds_vfio->client_id);
> >> + cp_len = min_t(size_t, req_len,
> >> sizeof(cmd.client_request.client_cmd));
> >
> > 'req_len' is kind of redundant. Looks all the callers use sizeof(req).
>
> It does a memcpy based on the min size between req_len and the size of
> the request.
If all the callers just pass in sizeof(union) as 'req_len', then it's pointless
to do min_t and you can just use sizeof(cmd.client_request.client_cmd) here
which is always smaller than or equal to the sizeof(union).
> >> +
> >> + err = pds_vfio_client_adminq_cmd(pds_vfio, &cmd, sizeof(cmd),
> >> &comp,
> >> + PDS_AQ_FLAG_FASTPOLL);
> >> + if (err) {
> >> + dev_err(dev, "vf%u: Suspend failed: %pe\n", pds_vfio->vf_id,
> >> + ERR_PTR(err));
> >> + return err;
> >> + }
> >> +
> >> + return pds_vfio_suspend_wait_device_cmd(pds_vfio);
> >> +}
> >
> > The logic in this function is very confusing.
> >
> > PDS_LM_CMD_SUSPEND has a completion record:
> >
> > +struct pds_lm_suspend_comp {
> > + u8 status;
> > + u8 rsvd;
> > + __le16 comp_index;
> > + union {
> > + __le64 state_size;
> > + u8 rsvd2[11];
> > + } __packed;
> > + u8 color;
> >
> > Presumably this function can look at the completion record to know
> whether
> > the suspend request succeeds.
> >
> > Why do you require another wait_device step to query the suspend status?
>
> The driver sends the initial suspend request to tell the DSC/firmware to
> suspend the VF's data/control path. The DSC/firmware will ack/nack the
> suspend request in the completion.
>
> Then the driver polls the DSC/firmware to find when the VF's
> data/control path has been fully suspended. When the DSC/firmware isn't
> done suspending yet it will return -EAGAIN. Otherwise it will return
> success/failure.
>
> I will add some comments clarifying these details.
Yes more comment is welcomed.
It's also misleading to have a ' state_size ' field in suspend_comp. In concept
the firmware cannot calculate it accurately before the VF is fully suspended.
next prev parent reply other threads:[~2023-06-20 2:19 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-02 22:03 [PATCH v10 vfio 0/7] pds_vfio driver Brett Creeley
2023-06-02 22:03 ` [PATCH v10 vfio 1/7] vfio: Commonize combine_ranges for use in other VFIO drivers Brett Creeley
2023-06-16 6:52 ` Tian, Kevin
2023-06-16 18:37 ` Brett Creeley
2023-06-02 22:03 ` [PATCH v10 vfio 2/7] vfio/pds: Initial support for pds_vfio VFIO driver Brett Creeley
2023-06-14 21:31 ` Alex Williamson
2023-06-14 21:41 ` Brett Creeley
2023-06-16 6:56 ` Tian, Kevin
2023-06-16 18:42 ` Brett Creeley
2023-06-02 22:03 ` [PATCH v10 vfio 3/7] vfio/pds: register with the pds_core PF Brett Creeley
2023-06-15 21:05 ` Shameerali Kolothum Thodi
2023-06-15 21:30 ` Brett Creeley
2023-06-16 7:04 ` Tian, Kevin
2023-06-16 19:01 ` Brett Creeley
2023-06-20 2:11 ` Tian, Kevin
2023-06-02 22:03 ` [PATCH v10 vfio 4/7] vfio/pds: Add VFIO live migration support Brett Creeley
2023-06-15 21:07 ` Shameerali Kolothum Thodi
2023-06-15 21:36 ` Brett Creeley
2023-06-16 8:06 ` Tian, Kevin
2023-06-17 4:45 ` Brett Creeley
2023-06-20 2:19 ` Tian, Kevin [this message]
2023-06-19 12:46 ` Jason Gunthorpe
2023-06-20 2:02 ` Tian, Kevin
2023-06-20 12:31 ` Jason Gunthorpe
2023-06-21 6:49 ` Tian, Kevin
2023-06-21 13:27 ` Jason Gunthorpe
2023-06-26 7:31 ` Tian, Kevin
2023-06-26 18:13 ` Jason Gunthorpe
2023-06-27 6:03 ` Tian, Kevin
2023-06-02 22:03 ` [PATCH v10 vfio 5/7] vfio/pds: Add support for dirty page tracking Brett Creeley
2023-06-02 22:03 ` [PATCH v10 vfio 6/7] vfio/pds: Add support for firmware recovery Brett Creeley
2023-06-16 8:24 ` Tian, Kevin
2023-06-17 0:47 ` Brett Creeley
2023-06-02 22:03 ` [PATCH v10 vfio 7/7] vfio/pds: Add Kconfig and documentation Brett Creeley
2023-06-16 8:25 ` Tian, Kevin
2023-06-16 20:05 ` Brett Creeley
2023-06-14 20:20 ` [PATCH v10 vfio 0/7] pds_vfio driver Alex Williamson
2023-06-16 6:47 ` Tian, Kevin
2023-06-16 20:06 ` Brett Creeley
2023-06-17 4:49 ` Brett Creeley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BN9PR11MB52762B0ACFC46319498FE0908C5CA@BN9PR11MB5276.namprd11.prod.outlook.com \
--to=kevin.tian@intel.com \
--cc=alex.williamson@redhat.com \
--cc=bcreeley@amd.com \
--cc=brett.creeley@amd.com \
--cc=jgg@nvidia.com \
--cc=kvm@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=shannon.nelson@amd.com \
--cc=yishaih@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).