From: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-crypto@vger.kernel.org" <linux-crypto@vger.kernel.org>,
"alex.williamson@redhat.com" <alex.williamson@redhat.com>,
"mgurtovoy@nvidia.com" <mgurtovoy@nvidia.com>,
Linuxarm <linuxarm@huawei.com>,
liulongfang <liulongfang@huawei.com>,
"Zengtao (B)" <prime.zeng@hisilicon.com>,
yuzenghui <yuzenghui@huawei.com>,
"Jonathan Cameron" <jonathan.cameron@huawei.com>,
"Wangzhou (B)" <wangzhou1@hisilicon.com>
Subject: RE: [RFC v2 0/4] vfio/hisilicon: add acc live migration driver
Date: Wed, 2 Feb 2022 14:34:52 +0000 [thread overview]
Message-ID: <a29ae3ea51344e18b9659424772a4b42@huawei.com> (raw)
In-Reply-To: <20220202131448.GA2538420@nvidia.com>
> -----Original Message-----
> From: Jason Gunthorpe [mailto:jgg@nvidia.com]
> Sent: 02 February 2022 13:15
> To: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
> Cc: kvm@vger.kernel.org; linux-kernel@vger.kernel.org;
> linux-crypto@vger.kernel.org; alex.williamson@redhat.com;
> mgurtovoy@nvidia.com; Linuxarm <linuxarm@huawei.com>; liulongfang
> <liulongfang@huawei.com>; Zengtao (B) <prime.zeng@hisilicon.com>;
> yuzenghui <yuzenghui@huawei.com>; Jonathan Cameron
> <jonathan.cameron@huawei.com>; Wangzhou (B) <wangzhou1@hisilicon.com>
> Subject: Re: [RFC v2 0/4] vfio/hisilicon: add acc live migration driver
>
> On Fri, Jul 02, 2021 at 10:58:45AM +0100, Shameer Kolothum wrote:
> > This series attempts to add vfio live migration support for
> > HiSilicon ACC VF devices. HiSilicon ACC VF device MMIO space
> > includes both the functional register space and migration
> > control register space. As discussed in RFCv1[0], this may create
> > security issues as these regions get shared between the Guest
> > driver and the migration driver. Based on the feedback, we tried
> > to address those concerns in this version.
> >
> > This is now based on the new vfio-pci-core framework proposal[1].
> > Understand that the framework proposal is still under discussion,
> > but really appreciate any feedback on the approach taken here
> > to mitigate the security risks.
>
> Hi, can you look at the v6 proposal for the mlx5 implementation of the
> migration API and see if it meets hisilicon acc's needs as well?
>
> https://lore.kernel.org/all/20220130160826.32449-1-yishaih@nvidia.com/
Yes, I saw that one. Thanks for that and is now looking into it.
>
> There are few topics to consider:
> - Which of the three feature sets (STOP_COPY, P2P and PRECOPY) make
> sense for this driver?
I think it will be STOP_COPY only for now. We might have PRECOPY feature once
we have the SMMUv3 HTTU support in future.
>
> I see pf_qm_state_pre_save() but didn't understand why it wanted to
> send the first 32 bytes in the PRECOPY mode? It is fine, but it
> will add some complexity to continue to do this.
That was mainly to do a quick verification between src and dst compatibility
before we start saving the state. I think probably we can delay that check
for later.
> - I think we discussed the P2P implementation and decided it would
> work for this device? Can you re-read and confirm?
In our case these devices are Integrated End Point devices and doesn't have
P2P DMA capability. Hence the FSM arcs will be limited to STOP_COPY feature
I guess. Also, since we cannot guarantee a NDMA state in STOP, my
assumption currently is the onus of making sure that no MMIO access happens
in STOP is on the user. Is that a valid assumption?
> - Are the arcs we defined going to work here as well? The current
> implementation in hisi_acc_vf_set_device_state() is very far away
> from what the v1 protocol is, so I'm having a hard time guessing,
> but..
Right. The FSM has changed a couple of times since we posted this.
I am going to rebase all that now.
> RESUMING -> STOP
> Probably vf_qm_state_resume()
>
> RUNNING -> STOP
> vf_qm_fun_restart() - that is oddly named..
>
> STOP -> RESUMING
> Seems to be a nop (likely a bug)
>
> STOP -> RUNNING
> Not implemented currenty? (also a bug)
>
> STOP -> STOP_COPY
> pf_qm_state_pre_save / vf_qm_state_save
>
> STOP_COPY -> STOP
> NOP
I will check and verify this.
> And the modification for the P2P/NO DMA is presumably just
> fun_restart too since stopping the device and stopping DMA are
> going to be the same thing here?
Yes, in our case stopping device and stopping DMA are effectively the
same thing.
>
> The mlx5 implementation linked above is a full example you can cut and
> paste from for how to implement the state function and the how to do
> the data transfer. The f_ops read/write implementation for acc looks
> trivial as it only streams the fixed size and pre-allocated 'struct
> acc_vf_data'
>
> It looks like it would be a short path to implement our v2 proposal
> and remove a lot of driver code, as we saw in mlx5.
>
Ok. These are the git repo I am using for the rework,
https://github.com/jgunthorpe/qemu/commits/vfio_migration_v2
https://github.com/jgunthorpe/linux/tree/vfio_migration_v2
Please let me know if the above are not up to date.
Also, just noted that my quick prototype is now failing
with below error,
" Error: VFIO device doesn't support migration"
Do we need to set the below before the feature query?
Or am I using a wrong Qemu/kernel repo?
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -488,6 +488,7 @@ static int vfio_migration_query_flags(VFIODevice
*vbasedev, uint64_t *mig_flags)
struct vfio_device_feature_migration *mig = (void *)feature->data;
feature->argsz = sizeof(buf);
+ feature->flags = VFIO_DEVICE_FEATURE_MIGRATION | VFIO_DEVICE_FEATURE_GET;
if (ioctl(vbasedev->fd, VFIO_DEVICE_FEATURE, feature) != 0)
return -EOPNOTSUPP;
Thanks,
Shameer
next prev parent reply other threads:[~2022-02-02 14:35 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-02 9:58 Shameer Kolothum
2021-07-02 9:58 ` [RFC v2 1/4] hisi-acc-vfio-pci: add new vfio_pci driver for HiSilicon ACC devices Shameer Kolothum
2021-07-02 20:29 ` Alex Williamson
2021-07-05 7:20 ` Shameerali Kolothum Thodi
2021-07-04 7:03 ` Leon Romanovsky
2021-07-05 8:47 ` Shameerali Kolothum Thodi
2021-07-05 9:41 ` Max Gurtovoy
2021-07-05 10:18 ` Shameerali Kolothum Thodi
2021-07-05 18:27 ` Leon Romanovsky
2021-07-05 18:32 ` Jason Gunthorpe
2021-07-06 3:59 ` Leon Romanovsky
2021-07-06 4:39 ` Christoph Hellwig
2021-07-06 11:51 ` Jason Gunthorpe
2021-07-02 9:58 ` [RFC v2 2/4] hisi_acc_vfio_pci: Override ioctl method to limit BAR2 region size Shameer Kolothum
2021-07-02 20:29 ` Alex Williamson
2021-07-05 7:22 ` Shameerali Kolothum Thodi
2021-07-02 9:58 ` [RFC v2 3/4] crypto: hisilicon/qm - Export mailbox functions for common use Shameer Kolothum
2021-07-04 9:34 ` Max Gurtovoy
2021-07-05 10:23 ` Shameerali Kolothum Thodi
2021-07-02 9:58 ` [RFC v2 4/4] hisi_acc_vfio_pci: Add support for vfio live migration Shameer Kolothum
2022-02-02 13:14 ` [RFC v2 0/4] vfio/hisilicon: add acc live migration driver Jason Gunthorpe
2022-02-02 14:34 ` Shameerali Kolothum Thodi [this message]
2022-02-02 15:39 ` Jason Gunthorpe
2022-02-02 16:10 ` Shameerali Kolothum Thodi
2022-02-02 17:03 ` Jason Gunthorpe
2022-02-02 19:05 ` Joao Martins
2022-02-03 15:18 ` Jason Gunthorpe
2022-02-04 19:53 ` Joao Martins
2022-02-04 23:07 ` Jason Gunthorpe
2022-02-11 17:28 ` Joao Martins
2022-02-11 17:49 ` Jason Gunthorpe
2022-02-11 21:43 ` Joao Martins
2022-02-12 0:01 ` Jason Gunthorpe
2022-02-14 13:34 ` Joao Martins
2022-02-14 14:06 ` Jason Gunthorpe
2022-02-15 16:00 ` Joao Martins
2022-02-15 16:21 ` Jason Gunthorpe
2022-02-22 11:55 ` Joao Martins
2022-02-23 1:03 ` Jason Gunthorpe
2022-02-25 19:18 ` Joao Martins
2022-02-25 20:44 ` Jason Gunthorpe
2022-02-28 13:01 ` Joao Martins
2022-02-28 21:01 ` Jason Gunthorpe
2022-03-01 13:06 ` Joao Martins
2022-03-01 13:54 ` Jason Gunthorpe
2022-03-01 14:27 ` Joao Martins
2022-03-11 13:51 ` iommufd(+vfio-compat) dirty tracking (Was: Re: [RFC v2 0/4] vfio/hisilicon: add acc live migration driver) Joao Martins
2022-03-15 19:29 ` Jason Gunthorpe
2022-03-16 16:36 ` iommufd(+vfio-compat) dirty tracking Joao Martins
2022-03-16 20:37 ` Joao Martins
2022-03-18 17:12 ` Joao Martins
2022-03-18 17:34 ` Jason Gunthorpe
2022-02-02 17:30 ` [RFC v2 0/4] vfio/hisilicon: add acc live migration driver Alex Williamson
2022-02-02 18:04 ` Jason Gunthorpe
2022-02-18 16:37 ` Jason Gunthorpe
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=a29ae3ea51344e18b9659424772a4b42@huawei.com \
--to=shameerali.kolothum.thodi@huawei.com \
--cc=alex.williamson@redhat.com \
--cc=jgg@nvidia.com \
--cc=jonathan.cameron@huawei.com \
--cc=kvm@vger.kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=liulongfang@huawei.com \
--cc=mgurtovoy@nvidia.com \
--cc=prime.zeng@hisilicon.com \
--cc=wangzhou1@hisilicon.com \
--cc=yuzenghui@huawei.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
Powered by JetHome