[PATCH v3 1/3] hw/virtio: Comment virtqueue_flush() must be called with RCU read lock

Philippe Mathieu-Daudé posted 3 patches 4 years, 5 months ago
[PATCH v3 1/3] hw/virtio: Comment virtqueue_flush() must be called with RCU read lock
Posted by Philippe Mathieu-Daudé 4 years, 5 months ago
Reported-by: Stefano Garzarella <sgarzare@redhat.com>
Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 include/hw/virtio/virtio.h | 7 +++++++
 hw/virtio/virtio.c         | 1 +
 2 files changed, 8 insertions(+)

diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index 8bab9cfb750..c1c5f6e53c8 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -186,6 +186,13 @@ void virtio_delete_queue(VirtQueue *vq);
 
 void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
                     unsigned int len);
+/**
+ * virtqueue_flush:
+ * @vq: The #VirtQueue
+ * @count: Number of elements to flush
+ *
+ * Must be called within RCU critical section.
+ */
 void virtqueue_flush(VirtQueue *vq, unsigned int count);
 void virtqueue_detach_element(VirtQueue *vq, const VirtQueueElement *elem,
                               unsigned int len);
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 3a1f6c520cb..97f60017466 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -896,6 +896,7 @@ static void virtqueue_packed_flush(VirtQueue *vq, unsigned int count)
     }
 }
 
+/* Called within rcu_read_lock().  */
 void virtqueue_flush(VirtQueue *vq, unsigned int count)
 {
     if (virtio_device_disabled(vq->vdev)) {
-- 
2.31.1

Re: [PATCH v3 1/3] hw/virtio: Comment virtqueue_flush() must be called with RCU read lock
Posted by Cornelia Huck 4 years, 4 months ago
On Mon, Sep 06 2021, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:

> Reported-by: Stefano Garzarella <sgarzare@redhat.com>
> Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  include/hw/virtio/virtio.h | 7 +++++++
>  hw/virtio/virtio.c         | 1 +
>  2 files changed, 8 insertions(+)
>
> diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
> index 8bab9cfb750..c1c5f6e53c8 100644
> --- a/include/hw/virtio/virtio.h
> +++ b/include/hw/virtio/virtio.h
> @@ -186,6 +186,13 @@ void virtio_delete_queue(VirtQueue *vq);
>  
>  void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
>                      unsigned int len);
> +/**
> + * virtqueue_flush:
> + * @vq: The #VirtQueue
> + * @count: Number of elements to flush
> + *
> + * Must be called within RCU critical section.
> + */

Hm... do these doc comments belong into .h files, or rather into .c files?

>  void virtqueue_flush(VirtQueue *vq, unsigned int count);
>  void virtqueue_detach_element(VirtQueue *vq, const VirtQueueElement *elem,
>                                unsigned int len);
> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
> index 3a1f6c520cb..97f60017466 100644
> --- a/hw/virtio/virtio.c
> +++ b/hw/virtio/virtio.c
> @@ -896,6 +896,7 @@ static void virtqueue_packed_flush(VirtQueue *vq, unsigned int count)
>      }
>  }
>  
> +/* Called within rcu_read_lock().  */
>  void virtqueue_flush(VirtQueue *vq, unsigned int count)
>  {
>      if (virtio_device_disabled(vq->vdev)) {

The content of the change looks good to me, I'm only wondering about
the style...


Re: [PATCH v3 1/3] hw/virtio: Comment virtqueue_flush() must be called with RCU read lock
Posted by Philippe Mathieu-Daudé 4 years, 4 months ago
On 9/27/21 12:18, Cornelia Huck wrote:
> On Mon, Sep 06 2021, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
> 
>> Reported-by: Stefano Garzarella <sgarzare@redhat.com>
>> Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>>  include/hw/virtio/virtio.h | 7 +++++++
>>  hw/virtio/virtio.c         | 1 +
>>  2 files changed, 8 insertions(+)
>>
>> diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
>> index 8bab9cfb750..c1c5f6e53c8 100644
>> --- a/include/hw/virtio/virtio.h
>> +++ b/include/hw/virtio/virtio.h
>> @@ -186,6 +186,13 @@ void virtio_delete_queue(VirtQueue *vq);
>>  
>>  void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
>>                      unsigned int len);
>> +/**
>> + * virtqueue_flush:
>> + * @vq: The #VirtQueue
>> + * @count: Number of elements to flush
>> + *
>> + * Must be called within RCU critical section.
>> + */
> 
> Hm... do these doc comments belong into .h files, or rather into .c files?

Maybe we should restart this old thread, vote(?) and settle on a style?

https://lore.kernel.org/qemu-devel/349cd87b-0526-30b8-d9cd-0eee537ab5a4@redhat.com/

>>  void virtqueue_flush(VirtQueue *vq, unsigned int count);
>>  void virtqueue_detach_element(VirtQueue *vq, const VirtQueueElement *elem,
>>                                unsigned int len);
>> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
>> index 3a1f6c520cb..97f60017466 100644
>> --- a/hw/virtio/virtio.c
>> +++ b/hw/virtio/virtio.c
>> @@ -896,6 +896,7 @@ static void virtqueue_packed_flush(VirtQueue *vq, unsigned int count)
>>      }
>>  }
>>  
>> +/* Called within rcu_read_lock().  */
>>  void virtqueue_flush(VirtQueue *vq, unsigned int count)
>>  {
>>      if (virtio_device_disabled(vq->vdev)) {
> 
> The content of the change looks good to me, I'm only wondering about
> the style...
> 


Re: [PATCH v3 1/3] hw/virtio: Comment virtqueue_flush() must be called with RCU read lock
Posted by Cornelia Huck 4 years, 4 months ago
On Mon, Sep 27 2021, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:

> On 9/27/21 12:18, Cornelia Huck wrote:
>> On Mon, Sep 06 2021, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
>> 
>>> Reported-by: Stefano Garzarella <sgarzare@redhat.com>
>>> Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> ---
>>>  include/hw/virtio/virtio.h | 7 +++++++
>>>  hw/virtio/virtio.c         | 1 +
>>>  2 files changed, 8 insertions(+)
>>>
>>> diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
>>> index 8bab9cfb750..c1c5f6e53c8 100644
>>> --- a/include/hw/virtio/virtio.h
>>> +++ b/include/hw/virtio/virtio.h
>>> @@ -186,6 +186,13 @@ void virtio_delete_queue(VirtQueue *vq);
>>>  
>>>  void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
>>>                      unsigned int len);
>>> +/**
>>> + * virtqueue_flush:
>>> + * @vq: The #VirtQueue
>>> + * @count: Number of elements to flush
>>> + *
>>> + * Must be called within RCU critical section.
>>> + */
>> 
>> Hm... do these doc comments belong into .h files, or rather into .c files?
>
> Maybe we should restart this old thread, vote(?) and settle on a style?
>
> https://lore.kernel.org/qemu-devel/349cd87b-0526-30b8-d9cd-0eee537ab5a4@redhat.com/

My vote would still go to putting this into .c files :) Not sure if we
want to go through the hassle of a wholesale cleanup; but if others
agree, we could at least start with putting new doc comments next to the
implementation.

Do we actually consume these comments in an automated way somewhere?


Re: [PATCH v3 1/3] hw/virtio: Comment virtqueue_flush() must be called with RCU read lock
Posted by Stefan Hajnoczi 4 years, 4 months ago
On Mon, Sep 27, 2021 at 01:29:46PM +0200, Cornelia Huck wrote:
> On Mon, Sep 27 2021, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
> 
> > On 9/27/21 12:18, Cornelia Huck wrote:
> >> On Mon, Sep 06 2021, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
> >> 
> >>> Reported-by: Stefano Garzarella <sgarzare@redhat.com>
> >>> Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
> >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> >>> ---
> >>>  include/hw/virtio/virtio.h | 7 +++++++
> >>>  hw/virtio/virtio.c         | 1 +
> >>>  2 files changed, 8 insertions(+)
> >>>
> >>> diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
> >>> index 8bab9cfb750..c1c5f6e53c8 100644
> >>> --- a/include/hw/virtio/virtio.h
> >>> +++ b/include/hw/virtio/virtio.h
> >>> @@ -186,6 +186,13 @@ void virtio_delete_queue(VirtQueue *vq);
> >>>  
> >>>  void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
> >>>                      unsigned int len);
> >>> +/**
> >>> + * virtqueue_flush:
> >>> + * @vq: The #VirtQueue
> >>> + * @count: Number of elements to flush
> >>> + *
> >>> + * Must be called within RCU critical section.
> >>> + */
> >> 
> >> Hm... do these doc comments belong into .h files, or rather into .c files?
> >
> > Maybe we should restart this old thread, vote(?) and settle on a style?
> >
> > https://lore.kernel.org/qemu-devel/349cd87b-0526-30b8-d9cd-0eee537ab5a4@redhat.com/
> 
> My vote would still go to putting this into .c files :) Not sure if we
> want to go through the hassle of a wholesale cleanup; but if others
> agree, we could at least start with putting new doc comments next to the
> implementation.

In the virtio.c/h case doc comments (and especially the RCU-related
ones) are in the .c file. The exception is that constants and structs
are documented in the header file.

I would follow that and avoid duplicating doc comments into the .h file.

Stefan