RE: [PATCH V3 2/4] misc: vop: do not allocate and reassign the used ring
From: Sherry Sun
Date: Wed Oct 28 2020 - 22:44:27 EST
Hi Arnd,
> Subject: Re: [PATCH V3 2/4] misc: vop: do not allocate and reassign the used
> ring
>
> (resending from the kernel.org address after getting bounces again)
>
> On Wed, Oct 28, 2020 at 7:29 AM Sherry Sun <sherry.sun@xxxxxxx> wrote:
> > > Subject: Re: [PATCH V3 2/4] misc: vop: do not allocate and reassign
> > > the used
> > >
> > > Both Ashutosh and I have moved on to other projects. The MIC devices
> > > have been discontinued. I have just sent across a patch to remove
> > > the MIC drivers from the kernel tree.
> > >
> > > We are very glad to see that Sherry is able to reuse some of the VOP
> > > logic and it is working well. It is best if the MIC drivers are
> > > removed so Sherry can add the specific VOP logic required for imx8qm
> > > subsequently without having to worry about other driver dependencies.
> > > Hoping this results in a cleaner imx8qm driver moving forward.
> >
> > I'm ok with your patch.
> > Since you have deprecated the MIC related code, may I ask do you have
> > a better solution instead of vop/scif?
>
> I think we should try to do something on top of the PCIe endpoint subsystem
> to make it work across arbitrary combinations of host and device
> implementations, and provide a superset of what the MIC driver, (out-of-
> tree) Bluefield endpoint driver, and the NTB subsystem as well as a couple of
> others used to do, each of them tunneling block/network/serial/... over a
> PCIe link of some sort, usually with virtio.
>
> At the moment, there is only one driver for the endpoint framework in the
> kernel, in drivers/pci/endpoint/functions/pci-epf-test.c, but I think this can
> serve as a starting point.
>
Thanks for your detailed reply.
Yes, the PCIe endpoint subsystem is the base code, actually we have implemented a set of pci endpoint code similar to pci-epf-test.c, combine with vop (Virtio Over PCIe).
But now the vop code is going to be removed, we planned to change to NTB framework, I saw Kishon has done some jobs based on NTB and PCIe endpoint subsystem, will get a deep look. Maybe it is a good solution.
Best regards
Sherry
> The PCI endpoint subsystem already uses configfs for configuring the
> available devices, and this seems like a good fit for making it work in general.
> However, there are a number of use cases that have somewhat conflicting
> requirements, so the first step would be to figure out what everyone actually
> needs for virtio communication.
>
> These are some of the main differences that I have noticed in the
> past:
>
> - The simple case would be to use one PCIe endpoint device
> for each virtio device, but I think this needs to be multiplexed
> so that hardware that only supports a single PCIe endpoint
> can still have multiple virtio devices tunneled through it.
>
> - While sometimes the configuration is hardcoded in the driver, ideally
> the type of virtio device(s) that is tunneled over the PCIe link should
> be configurable. The configuration of the endpoint device itself is
> done on the machine running on the endpoint side, but for the
> virtio devices, this might be either on the host or the endpoint.
> Not sure if one of the two ways is common enough, or we have to
> allow both.
>
> - When the link is configured, you still need one side to provide a
> virtio device host implementation, while the other side would
> run the normal virtio device driver. Again, these could be done
> either way, and it is independent of which side has configured
> the link, and we might want to only allow one of the two options,
> or do both, or tie it to who configures it (e.g. the side that creates
> the device must be the virtio device host, while the other side
> just sees the device pop up and uses a virtio driver).
>
> Arnd