mbox series

[v3,0/4] vhost: add device op to offload the interrupt kick

Message ID 168431450017.558450.16680518469610688737.stgit@ebuild.local (mailing list archive)
Headers
Series vhost: add device op to offload the interrupt kick |

Message

Eelco Chaudron May 17, 2023, 9:08 a.m. UTC
  This series adds an operation callback which gets called every time the
library wants to call eventfd_write(). This eventfd_write() call could
result in a system call, which could potentially block the PMD thread.

The callback function can decide whether it's ok to handle the
eventfd_write() now or have the newly introduced function,
rte_vhost_notify_guest(), called at a later time.

This can be used by 3rd party applications, like OVS, to avoid system
calls being called as part of the PMD threads.

v3:
    - Changed ABI compatibility code to no longer use a boolean
      to avoid having to disable specific GCC warnings.
    - Moved the fd check fix to a separate patch (patch 3/4).
    - Fixed some coding style issues.

v2: - Used vhost_virtqueue->index to find index for operation.
    - Aligned function name to VDUSE RFC patchset.
    - Added error and offload statistics counter.
    - Mark new API as experimental.
    - Change the virtual queue spin lock to read/write spin lock.
    - Made shared counters atomic.
    - Add versioned rte_vhost_driver_callback_register() for
      ABI compliance.

Eelco Chaudron (4):
      vhost: change vhost_virtqueue access lock to a read/write one
      vhost: make the guest_notifications statistic counter atomic
      vhost: fix invalid call FD handling
      vhost: add device op to offload the interrupt kick


 lib/eal/include/generic/rte_rwlock.h | 17 +++++
 lib/vhost/meson.build                |  2 +
 lib/vhost/rte_vhost.h                | 23 ++++++-
 lib/vhost/socket.c                   | 63 +++++++++++++++++--
 lib/vhost/version.map                |  9 +++
 lib/vhost/vhost.c                    | 92 +++++++++++++++++++++-------
 lib/vhost/vhost.h                    | 69 ++++++++++++++-------
 lib/vhost/vhost_user.c               | 14 ++---
 lib/vhost/virtio_net.c               | 90 +++++++++++++--------------
 9 files changed, 278 insertions(+), 101 deletions(-)
  

Comments

Maxime Coquelin June 1, 2023, 8 p.m. UTC | #1
On 5/17/23 11:08, Eelco Chaudron wrote:
> This series adds an operation callback which gets called every time the
> library wants to call eventfd_write(). This eventfd_write() call could
> result in a system call, which could potentially block the PMD thread.
> 
> The callback function can decide whether it's ok to handle the
> eventfd_write() now or have the newly introduced function,
> rte_vhost_notify_guest(), called at a later time.
> 
> This can be used by 3rd party applications, like OVS, to avoid system
> calls being called as part of the PMD threads.
> 
> v3:
>      - Changed ABI compatibility code to no longer use a boolean
>        to avoid having to disable specific GCC warnings.
>      - Moved the fd check fix to a separate patch (patch 3/4).
>      - Fixed some coding style issues.
> 
> v2: - Used vhost_virtqueue->index to find index for operation.
>      - Aligned function name to VDUSE RFC patchset.
>      - Added error and offload statistics counter.
>      - Mark new API as experimental.
>      - Change the virtual queue spin lock to read/write spin lock.
>      - Made shared counters atomic.
>      - Add versioned rte_vhost_driver_callback_register() for
>        ABI compliance.
> 
> Eelco Chaudron (4):
>        vhost: change vhost_virtqueue access lock to a read/write one
>        vhost: make the guest_notifications statistic counter atomic
>        vhost: fix invalid call FD handling
>        vhost: add device op to offload the interrupt kick
> 
> 
>   lib/eal/include/generic/rte_rwlock.h | 17 +++++
>   lib/vhost/meson.build                |  2 +
>   lib/vhost/rte_vhost.h                | 23 ++++++-
>   lib/vhost/socket.c                   | 63 +++++++++++++++++--
>   lib/vhost/version.map                |  9 +++
>   lib/vhost/vhost.c                    | 92 +++++++++++++++++++++-------
>   lib/vhost/vhost.h                    | 69 ++++++++++++++-------
>   lib/vhost/vhost_user.c               | 14 ++---
>   lib/vhost/virtio_net.c               | 90 +++++++++++++--------------
>   9 files changed, 278 insertions(+), 101 deletions(-)
> 


Applied to dpdk-next-virtio/main.

Thanks,
Maxime
  
Eelco Chaudron June 2, 2023, 6:20 a.m. UTC | #2
On 1 Jun 2023, at 22:00, Maxime Coquelin wrote:

> On 5/17/23 11:08, Eelco Chaudron wrote:
>> This series adds an operation callback which gets called every time the
>> library wants to call eventfd_write(). This eventfd_write() call could
>> result in a system call, which could potentially block the PMD thread.
>>
>> The callback function can decide whether it's ok to handle the
>> eventfd_write() now or have the newly introduced function,
>> rte_vhost_notify_guest(), called at a later time.
>>
>> This can be used by 3rd party applications, like OVS, to avoid system
>> calls being called as part of the PMD threads.
>>
>> v3:
>>      - Changed ABI compatibility code to no longer use a boolean
>>        to avoid having to disable specific GCC warnings.
>>      - Moved the fd check fix to a separate patch (patch 3/4).
>>      - Fixed some coding style issues.
>>
>> v2: - Used vhost_virtqueue->index to find index for operation.
>>      - Aligned function name to VDUSE RFC patchset.
>>      - Added error and offload statistics counter.
>>      - Mark new API as experimental.
>>      - Change the virtual queue spin lock to read/write spin lock.
>>      - Made shared counters atomic.
>>      - Add versioned rte_vhost_driver_callback_register() for
>>        ABI compliance.
>>
>> Eelco Chaudron (4):
>>        vhost: change vhost_virtqueue access lock to a read/write one
>>        vhost: make the guest_notifications statistic counter atomic
>>        vhost: fix invalid call FD handling
>>        vhost: add device op to offload the interrupt kick
>>
>>
>>   lib/eal/include/generic/rte_rwlock.h | 17 +++++
>>   lib/vhost/meson.build                |  2 +
>>   lib/vhost/rte_vhost.h                | 23 ++++++-
>>   lib/vhost/socket.c                   | 63 +++++++++++++++++--
>>   lib/vhost/version.map                |  9 +++
>>   lib/vhost/vhost.c                    | 92 +++++++++++++++++++++-------
>>   lib/vhost/vhost.h                    | 69 ++++++++++++++-------
>>   lib/vhost/vhost_user.c               | 14 ++---
>>   lib/vhost/virtio_net.c               | 90 +++++++++++++--------------
>>   9 files changed, 278 insertions(+), 101 deletions(-)
>>
>
>
> Applied to dpdk-next-virtio/main.

Thanks Maxime!

//Eelco