qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel]  vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply?
@ 2014-09-17  8:38 Michael S. Tsirkin
  2014-09-17  9:39 ` Linhaifeng
  0 siblings, 1 reply; 9+ messages in thread
From: Michael S. Tsirkin @ 2014-09-17  8:38 UTC (permalink / raw)
  To: Linhaifeng; +Cc: qemu-devel, n.nikolaev, jerry.lilijun

Reply-To: 

Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE
is used to update the memory mappings.

So shouldn't we want for response?
Otherwise e.g. guest can start using the memory
that vhost-user can't access.

Similarly, with an IOMMU vhost-user might access memory it shouldn't.

VHOST_SET_VRING_CALL is used for MSI-X masking.
Again, after vector is masted by switching the call fd,
backend shouldn't assert the old one.

Thoughts?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply?
  2014-09-17  8:38 [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply? Michael S. Tsirkin
@ 2014-09-17  9:39 ` Linhaifeng
  2014-09-17  9:56   ` Michael S. Tsirkin
  0 siblings, 1 reply; 9+ messages in thread
From: Linhaifeng @ 2014-09-17  9:39 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel, n.nikolaev, jerry.lilijun

I think maybe is not need for the backend to wait for response.

There is another way.vhost-user send "VHOST_GET_MEM_TABLE" to qemu then qemu send VHOST_SET_MEM_TABLE to update the regions of vhost-user.same as other command.
If qemu could response the request of the vhost-user.the vhost-user could update date at anytime.

I think it's very useful for Commercialization.

On 2014/9/17 16:38, Michael S. Tsirkin wrote:
> Reply-To: 
> 
> Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE
> is used to update the memory mappings.
> 
> So shouldn't we want for response?
> Otherwise e.g. guest can start using the memory
> that vhost-user can't access.
> 
> Similarly, with an IOMMU vhost-user might access memory it shouldn't.
> 
> VHOST_SET_VRING_CALL is used for MSI-X masking.
> Again, after vector is masted by switching the call fd,
> backend shouldn't assert the old one.
> 
> Thoughts?
> 
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply?
  2014-09-17  9:39 ` Linhaifeng
@ 2014-09-17  9:56   ` Michael S. Tsirkin
  2014-09-18  0:45     ` Linhaifeng
  2014-09-18  2:39     ` Linhaifeng
  0 siblings, 2 replies; 9+ messages in thread
From: Michael S. Tsirkin @ 2014-09-17  9:56 UTC (permalink / raw)
  To: Linhaifeng; +Cc: qemu-devel, n.nikolaev, jerry.lilijun

On Wed, Sep 17, 2014 at 05:39:04PM +0800, Linhaifeng wrote:
> I think maybe is not need for the backend to wait for response.
> 
> There is another way.vhost-user send "VHOST_GET_MEM_TABLE" to qemu then qemu send VHOST_SET_MEM_TABLE to update the regions of vhost-user.same as other command.
> If qemu could response the request of the vhost-user.the vhost-user could update date at anytime.

The updates are initiated by QEMU, as a result of IOMMU,
memory hotplug or some other configuration change.

> I think it's very useful for Commercialization.
> 
> On 2014/9/17 16:38, Michael S. Tsirkin wrote:
> > Reply-To: 
> > 
> > Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE
> > is used to update the memory mappings.
> > 
> > So shouldn't we want for response?
> > Otherwise e.g. guest can start using the memory
> > that vhost-user can't access.
> > 
> > Similarly, with an IOMMU vhost-user might access memory it shouldn't.
> > 
> > VHOST_SET_VRING_CALL is used for MSI-X masking.
> > Again, after vector is masted by switching the call fd,
> > backend shouldn't assert the old one.
> > 
> > Thoughts?
> > 
> > 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply?
  2014-09-17  9:56   ` Michael S. Tsirkin
@ 2014-09-18  0:45     ` Linhaifeng
  2014-09-18  5:16       ` Michael S. Tsirkin
  2014-09-18  2:39     ` Linhaifeng
  1 sibling, 1 reply; 9+ messages in thread
From: Linhaifeng @ 2014-09-18  0:45 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel, n.nikolaev, jerry.lilijun



On 2014/9/17 17:56, Michael S. Tsirkin wrote:
> On Wed, Sep 17, 2014 at 05:39:04PM +0800, Linhaifeng wrote:
>> I think maybe is not need for the backend to wait for response.
>>
>> There is another way.vhost-user send "VHOST_GET_MEM_TABLE" to qemu then qemu send VHOST_SET_MEM_TABLE to update the regions of vhost-user.same as other command.
>> If qemu could response the request of the vhost-user.the vhost-user could update date at anytime.
> 
> The updates are initiated by QEMU, as a result of IOMMU,
> memory hotplug or some other configuration change.

How to deal with the vhost-user restart?
when vhost-user restart it will lost the infomation which QEMU send.

In the kernel mode vhost will restart with QEMU but in the user mode vhost will not.

> 
>> I think it's very useful for Commercialization.
>>
>> On 2014/9/17 16:38, Michael S. Tsirkin wrote:
>>> Reply-To: 
>>>
>>> Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE
>>> is used to update the memory mappings.
>>>
>>> So shouldn't we want for response?
>>> Otherwise e.g. guest can start using the memory
>>> that vhost-user can't access.
>>>
>>> Similarly, with an IOMMU vhost-user might access memory it shouldn't.
>>>
>>> VHOST_SET_VRING_CALL is used for MSI-X masking.
>>> Again, after vector is masted by switching the call fd,
>>> backend shouldn't assert the old one.
>>>
>>> Thoughts?
>>>
>>>
> 
> .
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply?
  2014-09-17  9:56   ` Michael S. Tsirkin
  2014-09-18  0:45     ` Linhaifeng
@ 2014-09-18  2:39     ` Linhaifeng
  2014-09-18  5:19       ` Michael S. Tsirkin
  1 sibling, 1 reply; 9+ messages in thread
From: Linhaifeng @ 2014-09-18  2:39 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel, n.nikolaev, jerry.lilijun



On 2014/9/17 17:56, Michael S. Tsirkin wrote:
> On Wed, Sep 17, 2014 at 05:39:04PM +0800, Linhaifeng wrote:
>> I think maybe is not need for the backend to wait for response.
>>
>> There is another way.vhost-user send "VHOST_GET_MEM_TABLE" to qemu then qemu send VHOST_SET_MEM_TABLE to update the regions of vhost-user.same as other command.
>> If qemu could response the request of the vhost-user.the vhost-user could update date at anytime.
> 
> The updates are initiated by QEMU, as a result of IOMMU,
> memory hotplug or some other configuration change.

yes.when memory unplug/plug should tell vhost-user.

> 
>> I think it's very useful for Commercialization.
>>
>> On 2014/9/17 16:38, Michael S. Tsirkin wrote:
>>> Reply-To: 
>>>
>>> Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE
>>> is used to update the memory mappings.
>>>
>>> So shouldn't we want for response?
>>> Otherwise e.g. guest can start using the memory
>>> that vhost-user can't access.
>>>
>>> Similarly, with an IOMMU vhost-user might access memory it shouldn't.
>>>
>>> VHOST_SET_VRING_CALL is used for MSI-X masking.
>>> Again, after vector is masted by switching the call fd,
>>> backend shouldn't assert the old one.
>>>
>>> Thoughts?
>>>
>>>
> 
> .
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply?
  2014-09-18  0:45     ` Linhaifeng
@ 2014-09-18  5:16       ` Michael S. Tsirkin
  2014-09-18 12:39         ` Linhaifeng
  0 siblings, 1 reply; 9+ messages in thread
From: Michael S. Tsirkin @ 2014-09-18  5:16 UTC (permalink / raw)
  To: Linhaifeng; +Cc: qemu-devel, n.nikolaev, jerry.lilijun

On Thu, Sep 18, 2014 at 08:45:37AM +0800, Linhaifeng wrote:
> 
> 
> On 2014/9/17 17:56, Michael S. Tsirkin wrote:
> > On Wed, Sep 17, 2014 at 05:39:04PM +0800, Linhaifeng wrote:
> >> I think maybe is not need for the backend to wait for response.
> >>
> >> There is another way.vhost-user send "VHOST_GET_MEM_TABLE" to qemu then qemu send VHOST_SET_MEM_TABLE to update the regions of vhost-user.same as other command.
> >> If qemu could response the request of the vhost-user.the vhost-user could update date at anytime.
> > 
> > The updates are initiated by QEMU, as a result of IOMMU,
> > memory hotplug or some other configuration change.
> 
> How to deal with the vhost-user restart?
> when vhost-user restart it will lost the infomation which QEMU send.
> 
> In the kernel mode vhost will restart with QEMU but in the user mode vhost will not.

vhost-user must restart with qemu only.

The nature of virtio protocol is such that there's not enough in-memory
state for host to gracefully recover from losing VQ state.

We could add a new feature to allow recovery by reporting
failure to guest, and disabling processing new requests.
Guest could respond by recovering / discarding submitted
requests, re-enabling the device (likely by executing a reset)
and re-submitting requests.


This would need a new feature bit though, and would have to
be acknowledged by guest. As such this would have to be
virtio 1.0 feature, virtio 0.x is frozen.

> > 
> >> I think it's very useful for Commercialization.
> >>
> >> On 2014/9/17 16:38, Michael S. Tsirkin wrote:
> >>> Reply-To: 
> >>>
> >>> Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE
> >>> is used to update the memory mappings.
> >>>
> >>> So shouldn't we want for response?
> >>> Otherwise e.g. guest can start using the memory
> >>> that vhost-user can't access.
> >>>
> >>> Similarly, with an IOMMU vhost-user might access memory it shouldn't.
> >>>
> >>> VHOST_SET_VRING_CALL is used for MSI-X masking.
> >>> Again, after vector is masted by switching the call fd,
> >>> backend shouldn't assert the old one.
> >>>
> >>> Thoughts?
> >>>
> >>>
> > 
> > .
> > 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply?
  2014-09-18  2:39     ` Linhaifeng
@ 2014-09-18  5:19       ` Michael S. Tsirkin
  0 siblings, 0 replies; 9+ messages in thread
From: Michael S. Tsirkin @ 2014-09-18  5:19 UTC (permalink / raw)
  To: Linhaifeng; +Cc: qemu-devel, n.nikolaev, jerry.lilijun

On Thu, Sep 18, 2014 at 10:39:00AM +0800, Linhaifeng wrote:
> 
> 
> On 2014/9/17 17:56, Michael S. Tsirkin wrote:
> > On Wed, Sep 17, 2014 at 05:39:04PM +0800, Linhaifeng wrote:
> >> I think maybe is not need for the backend to wait for response.
> >>
> >> There is another way.vhost-user send "VHOST_GET_MEM_TABLE" to qemu then qemu send VHOST_SET_MEM_TABLE to update the regions of vhost-user.same as other command.
> >> If qemu could response the request of the vhost-user.the vhost-user could update date at anytime.
> > 
> > The updates are initiated by QEMU, as a result of IOMMU,
> > memory hotplug or some other configuration change.
> 
> yes.when memory unplug/plug should tell vhost-user.

Right. So VHOST_SET_MEM_TABLE needs a response then, at least
for cases when it's freeing memory.

When memory is added, we can avoid waiting for the response
if vhost-user can detect a fault and flush the incoming
command pipe looking for VHOST_SET_MEM_TABLE.


> > 
> >> I think it's very useful for Commercialization.
> >>
> >> On 2014/9/17 16:38, Michael S. Tsirkin wrote:
> >>> Reply-To: 
> >>>
> >>> Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE
> >>> is used to update the memory mappings.
> >>>
> >>> So shouldn't we want for response?
> >>> Otherwise e.g. guest can start using the memory
> >>> that vhost-user can't access.
> >>>
> >>> Similarly, with an IOMMU vhost-user might access memory it shouldn't.
> >>>
> >>> VHOST_SET_VRING_CALL is used for MSI-X masking.
> >>> Again, after vector is masted by switching the call fd,
> >>> backend shouldn't assert the old one.
> >>>
> >>> Thoughts?
> >>>
> >>>
> > 
> > .
> > 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply?
  2014-09-18  5:16       ` Michael S. Tsirkin
@ 2014-09-18 12:39         ` Linhaifeng
  2014-09-18 12:54           ` Michael S. Tsirkin
  0 siblings, 1 reply; 9+ messages in thread
From: Linhaifeng @ 2014-09-18 12:39 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel, n.nikolaev, jerry.lilijun



On 2014/9/18 13:16, Michael S. Tsirkin wrote:
> On Thu, Sep 18, 2014 at 08:45:37AM +0800, Linhaifeng wrote:
>>
>>
>> On 2014/9/17 17:56, Michael S. Tsirkin wrote:
>>> On Wed, Sep 17, 2014 at 05:39:04PM +0800, Linhaifeng wrote:
>>>> I think maybe is not need for the backend to wait for response.
>>>>
>>>> There is another way.vhost-user send "VHOST_GET_MEM_TABLE" to qemu then qemu send VHOST_SET_MEM_TABLE to update the regions of vhost-user.same as other command.
>>>> If qemu could response the request of the vhost-user.the vhost-user could update date at anytime.
>>>
>>> The updates are initiated by QEMU, as a result of IOMMU,
>>> memory hotplug or some other configuration change.
>>
>> How to deal with the vhost-user restart?
>> when vhost-user restart it will lost the infomation which QEMU send.
>>
>> In the kernel mode vhost will restart with QEMU but in the user mode vhost will not.
> 
> vhost-user must restart with qemu only.
> 


Sometimes qemu not allowed to restart. e.g. The customer want to update the vhost-user to a newer version but don't want to restart the VM.


> The nature of virtio protocol is such that there's not enough in-memory
> state for host to gracefully recover from losing VQ state.
> 
> We could add a new feature to allow recovery by reporting
> failure to guest, and disabling processing new requests.
> Guest could respond by recovering / discarding submitted
> requests, re-enabling the device (likely by executing a reset)
> and re-submitting requests.
> 
> 
> This would need a new feature bit though, and would have to
> be acknowledged by guest. As such this would have to be
> virtio 1.0 feature, virtio 0.x is frozen.
> 
>>>
>>>> I think it's very useful for Commercialization.
>>>>
>>>> On 2014/9/17 16:38, Michael S. Tsirkin wrote:
>>>>> Reply-To: 
>>>>>
>>>>> Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE
>>>>> is used to update the memory mappings.
>>>>>
>>>>> So shouldn't we want for response?
>>>>> Otherwise e.g. guest can start using the memory
>>>>> that vhost-user can't access.
>>>>>
>>>>> Similarly, with an IOMMU vhost-user might access memory it shouldn't.
>>>>>
>>>>> VHOST_SET_VRING_CALL is used for MSI-X masking.
>>>>> Again, after vector is masted by switching the call fd,
>>>>> backend shouldn't assert the old one.
>>>>>
>>>>> Thoughts?
>>>>>
>>>>>
>>>
>>> .
>>>
> 
> .
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply?
  2014-09-18 12:39         ` Linhaifeng
@ 2014-09-18 12:54           ` Michael S. Tsirkin
  0 siblings, 0 replies; 9+ messages in thread
From: Michael S. Tsirkin @ 2014-09-18 12:54 UTC (permalink / raw)
  To: Linhaifeng; +Cc: qemu-devel, n.nikolaev, jerry.lilijun

On Thu, Sep 18, 2014 at 08:39:57PM +0800, Linhaifeng wrote:
> 
> 
> On 2014/9/18 13:16, Michael S. Tsirkin wrote:
> > On Thu, Sep 18, 2014 at 08:45:37AM +0800, Linhaifeng wrote:
> >>
> >>
> >> On 2014/9/17 17:56, Michael S. Tsirkin wrote:
> >>> On Wed, Sep 17, 2014 at 05:39:04PM +0800, Linhaifeng wrote:
> >>>> I think maybe is not need for the backend to wait for response.
> >>>>
> >>>> There is another way.vhost-user send "VHOST_GET_MEM_TABLE" to qemu then qemu send VHOST_SET_MEM_TABLE to update the regions of vhost-user.same as other command.
> >>>> If qemu could response the request of the vhost-user.the vhost-user could update date at anytime.
> >>>
> >>> The updates are initiated by QEMU, as a result of IOMMU,
> >>> memory hotplug or some other configuration change.
> >>
> >> How to deal with the vhost-user restart?
> >> when vhost-user restart it will lost the infomation which QEMU send.
> >>
> >> In the kernel mode vhost will restart with QEMU but in the user mode vhost will not.
> > 
> > vhost-user must restart with qemu only.
> > 
> 
> 
> Sometimes qemu not allowed to restart. e.g. The customer want to update the vhost-user to a newer version but don't want to restart the VM.

I guess this means we'll have to implement the idea outlined below.
Fixing known issues around vhost-user (such as lack of set_backend, and
lack of synchronization around some commands) is probably higher
priority.

> 
> > The nature of virtio protocol is such that there's not enough in-memory
> > state for host to gracefully recover from losing VQ state.
> > 
> > We could add a new feature to allow recovery by reporting
> > failure to guest, and disabling processing new requests.
> > Guest could respond by recovering / discarding submitted
> > requests, re-enabling the device (likely by executing a reset)
> > and re-submitting requests.
> > 
> > 
> > This would need a new feature bit though, and would have to
> > be acknowledged by guest. As such this would have to be
> > virtio 1.0 feature, virtio 0.x is frozen.
> > 
> >>>
> >>>> I think it's very useful for Commercialization.
> >>>>
> >>>> On 2014/9/17 16:38, Michael S. Tsirkin wrote:
> >>>>> Reply-To: 
> >>>>>
> >>>>> Thinking about the vhost-user protocol, VHOST_SET_MEM_TABLE
> >>>>> is used to update the memory mappings.
> >>>>>
> >>>>> So shouldn't we want for response?
> >>>>> Otherwise e.g. guest can start using the memory
> >>>>> that vhost-user can't access.
> >>>>>
> >>>>> Similarly, with an IOMMU vhost-user might access memory it shouldn't.
> >>>>>
> >>>>> VHOST_SET_VRING_CALL is used for MSI-X masking.
> >>>>> Again, after vector is masted by switching the call fd,
> >>>>> backend shouldn't assert the old one.
> >>>>>
> >>>>> Thoughts?
> >>>>>
> >>>>>
> >>>
> >>> .
> >>>
> > 
> > .
> > 

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-09-18 12:51 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-17  8:38 [Qemu-devel] vhost-user: VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL need a reply? Michael S. Tsirkin
2014-09-17  9:39 ` Linhaifeng
2014-09-17  9:56   ` Michael S. Tsirkin
2014-09-18  0:45     ` Linhaifeng
2014-09-18  5:16       ` Michael S. Tsirkin
2014-09-18 12:39         ` Linhaifeng
2014-09-18 12:54           ` Michael S. Tsirkin
2014-09-18  2:39     ` Linhaifeng
2014-09-18  5:19       ` Michael S. Tsirkin

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).