Thread (68 messages) flat view 68 messages, 6 authors, 2021-07-08

Re: Re: [PATCH v8 09/10] vduse: Introduce VDUSE - vDPA Device in Userspace

From: Yongji Xie <hidden>
Date: 2021-06-25 04:19:32
Also in: kvm, linux-fsdevel, linux-iommu, lkml

On Fri, Jun 25, 2021 at 11:09 AM Jason Wang [off-list ref] wrote:

在 2021/6/24 下午5:16, Yongji Xie 写道:
quoted
On Thu, Jun 24, 2021 at 4:14 PM Jason Wang [off-list ref] wrote:
quoted
在 2021/6/24 下午12:46, Yongji Xie 写道:
quoted
quoted
So we need to deal with both FEATURES_OK and reset, but probably not
DRIVER_OK.
OK, I see. Thanks for the explanation. One more question is how about
clearing the corresponding status bit in get_status() rather than
making set_status() fail. Since the spec recommends this way for
validation which is done in virtio_dev_remove() and
virtio_finalize_features().

Thanks,
Yongji
I think you can. Or it would be even better that we just don't set the
bit during set_status().
Yes, that's what I mean.
quoted
I just realize that in vdpa_reset() we had:

static inline void vdpa_reset(struct vdpa_device *vdev)
{
          const struct vdpa_config_ops *ops = vdev->config;

          vdev->features_valid = false;
          ops->set_status(vdev, 0);
}

We probably need to add the synchronization here. E.g re-read with a
timeout.
Looks like the timeout is already in set_status().

Do you mean the VDUSE's implementation?
Yes.
quoted
  Do we really need a
duplicated one here?

1) this is the timeout at the vDPA layer instead of the VDUSE layer.
OK, I get it.
2) it really depends on what's the meaning of the timeout for set_status
of VDUSE.

Do we want:

2a) for set_status(): relay the message to userspace and wait for the
userspace to quiescence the datapath

or

2b) for set_status(): simply relay the message to userspace, reply is no
needed. Userspace will use a command to update the status when the
datapath is stop. The the status could be fetched via get_stats().

2b looks more spec complaint.
Looks good to me. And I think we can use the reply of the message to
update the status instead of introducing a new command.
quoted
And how to handle failure? Adding a return value
to virtio_config_ops->reset() and passing the error to the upper
layer?

Something like this.
OK.

Thanks,
Yongji
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help