public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] virtio: silence KCSAN warnings
@ 2026-01-27 15:25 Johannes Thumshirn
  2026-01-27 15:25 ` [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split Johannes Thumshirn
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Johannes Thumshirn @ 2026-01-27 15:25 UTC (permalink / raw)
  To: virtualization
  Cc: Michael S . Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	Alexander Graf, linux-kernel, Johannes Thumshirn

When booting a Qemu VM whith KCSAN to debug filesystem races I
encountered a bunch of KCSAN splats in virtio.

All of them are false positives, as the racy unknown origin is the
hypervisor.

Alex suggested to annotate the vring structure as racy for KCSAN, but
the __data_racy annotation turns into "volatile" and as such it cannot
be used to annotate the whole structure. Annotating every structure
embedding a pointer to the vring turned out to be way more invasive than
annotating only the few sites consumers.

Changes to v1:
- Annotate the return of more_used_split() as racy so both call sites
  are covered
- Annotate vring_avail_event() as racy so we can condense two patches
  into one.

Link to v1:
https://lore.kernel.org/virtualization/20260127083926.865555-1-johannes.thumshirn@wdc.com/

Johannes Thumshirn (2):
  virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  virtio: silence KCSAN warning in virtqueue_kick_prepare

 drivers/virtio/virtio_ring.c     | 4 ++--
 include/uapi/linux/virtio_ring.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

-- 
2.52.0


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

* [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  2026-01-27 15:25 [PATCH v2 0/2] virtio: silence KCSAN warnings Johannes Thumshirn
@ 2026-01-27 15:25 ` Johannes Thumshirn
  2026-01-27 16:30   ` Alexander Graf
  2026-01-27 15:25 ` [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare Johannes Thumshirn
  2026-01-27 15:44 ` [PATCH v2 0/2] virtio: silence KCSAN warnings Michael S. Tsirkin
  2 siblings, 1 reply; 14+ messages in thread
From: Johannes Thumshirn @ 2026-01-27 15:25 UTC (permalink / raw)
  To: virtualization
  Cc: Michael S . Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	Alexander Graf, linux-kernel, Johannes Thumshirn

When booting a Qemu VM with virtio-blk and KCSAN enabled, KCSAN emits
the following warning about a data-race in virtqueue_get_buf_ctx_split().

 ==================================================================
 BUG: KCSAN: data-race in virtqueue_get_buf_ctx_split+0x6e/0x260

 race at unknown origin, with read to 0xffff8881020f1942 of 2 bytes by task 1 on cpu 7:
  virtqueue_get_buf_ctx_split+0x6e/0x260
  virtqueue_get_buf+0x4b/0x60
  __send_to_port+0x156/0x170
  put_chars+0xcb/0x110
  hvc_console_print+0x1d6/0x2a0
  console_flush_one_record+0x3dd/0x510
  console_unlock+0x8c/0x160
  vprintk_emit+0x2fe/0x380
  vprintk_default+0x1d/0x30
  vprintk+0xe/0x20
  _printk+0x4c/0x60
  btrfs_test_raid_stripe_tree+0x25/0x90
  btrfs_run_sanity_tests.cold+0xf1/0x13b
  init_btrfs_fs+0x73/0x110
  do_one_initcall+0x5b/0x2d0
  kernel_init_freeable+0x2a2/0x340
  kernel_init+0x1e/0x1b0
  ret_from_fork+0x137/0x1b0
  ret_from_fork_asm+0x1a/0x30

 value changed: 0x0160 -> 0x0161

 Reported by Kernel Concurrency Sanitizer on:
 CPU: 7 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.19.0-rc7+ #219 PREEMPT(none)
 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-9.fc43 06/10/2025
 ==================================================================

This warning is likely a false positive as the change happens on the
virtio vring.

Annotate the return of more_used_split() with data_race() to silence
the warning.

Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
---
 drivers/virtio/virtio_ring.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index ddab68959671..1db27ee2d89f 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -808,8 +808,8 @@ static void detach_buf_split(struct vring_virtqueue *vq, unsigned int head,
 
 static bool more_used_split(const struct vring_virtqueue *vq)
 {
-	return vq->last_used_idx != virtio16_to_cpu(vq->vq.vdev,
-			vq->split.vring.used->idx);
+	return data_race(vq->last_used_idx != virtio16_to_cpu(vq->vq.vdev,
+				vq->split.vring.used->idx));
 }
 
 static void *virtqueue_get_buf_ctx_split(struct virtqueue *_vq,
-- 
2.52.0


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

* [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare
  2026-01-27 15:25 [PATCH v2 0/2] virtio: silence KCSAN warnings Johannes Thumshirn
  2026-01-27 15:25 ` [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split Johannes Thumshirn
@ 2026-01-27 15:25 ` Johannes Thumshirn
  2026-01-28 12:28   ` kernel test robot
  2026-01-28 22:23   ` kernel test robot
  2026-01-27 15:44 ` [PATCH v2 0/2] virtio: silence KCSAN warnings Michael S. Tsirkin
  2 siblings, 2 replies; 14+ messages in thread
From: Johannes Thumshirn @ 2026-01-27 15:25 UTC (permalink / raw)
  To: virtualization
  Cc: Michael S . Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	Alexander Graf, linux-kernel, Johannes Thumshirn

When booting a Qemu VM with virtio-blk and KCSAN enabled, KCSAN emits
the following warning about a data-race in virtqueue_kick_prepare().

 ==================================================================
 BUG: KCSAN: data-race in virtqueue_kick_prepare+0x14d/0x200

 race at unknown origin, with read to 0xffff888101c9cd44 of 2 bytes by task 224 on cpu 2:
  virtqueue_kick_prepare+0x14d/0x200
  virtio_fs_enqueue_req+0x664/0x7d0
  virtio_fs_send_req+0xac/0x230
  flush_bg_queue+0x1a8/0x1f0
  fuse_simple_background+0x312/0x490
  fuse_file_put+0xcf/0x190
  fuse_file_release+0xd3/0xf0
  fuse_release+0x91/0xb0
  __fput+0x200/0x4f0
  ____fput+0x15/0x20
  task_work_run+0xda/0x140
  do_exit+0x414/0x11a0
  do_group_exit+0x53/0xf0
  __x64_sys_exit_group+0x25/0x30
  x64_sys_call+0x1c23/0x1c30
  do_syscall_64+0x5d/0x240
  entry_SYSCALL_64_after_hwframe+0x76/0x7e

 value changed: 0x1ab0 -> 0x1ab3

 Reported by Kernel Concurrency Sanitizer on:
 CPU: 2 UID: 0 PID: 224 Comm: grepconf.sh Not tainted 6.19.0-rc7+ #230 PREEMPT(none)
 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-9.fc43 06/10/2025
 ==================================================================

 This warning is likely a false positive as the change happens on the
 virtio vring.

 Annotate the return of vring_avail_event() with data_race() to silence
 the warning.

Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
---
 include/uapi/linux/virtio_ring.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/virtio_ring.h b/include/uapi/linux/virtio_ring.h
index f8c20d3de8da..32568cfa1c63 100644
--- a/include/uapi/linux/virtio_ring.h
+++ b/include/uapi/linux/virtio_ring.h
@@ -194,7 +194,7 @@ struct vring {
 /* We publish the used event index at the end of the available ring, and vice
  * versa. They are at the end for backwards compatibility. */
 #define vring_used_event(vr) ((vr)->avail->ring[(vr)->num])
-#define vring_avail_event(vr) (*(__virtio16 *)&(vr)->used->ring[(vr)->num])
+#define vring_avail_event(vr) (data_race(*(__virtio16 *)&(vr)->used->ring[(vr)->num]))
 
 static inline void vring_init(struct vring *vr, unsigned int num, void *p,
 			      unsigned long align)
-- 
2.52.0


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

* Re: [PATCH v2 0/2] virtio: silence KCSAN warnings
  2026-01-27 15:25 [PATCH v2 0/2] virtio: silence KCSAN warnings Johannes Thumshirn
  2026-01-27 15:25 ` [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split Johannes Thumshirn
  2026-01-27 15:25 ` [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare Johannes Thumshirn
@ 2026-01-27 15:44 ` Michael S. Tsirkin
  2 siblings, 0 replies; 14+ messages in thread
From: Michael S. Tsirkin @ 2026-01-27 15:44 UTC (permalink / raw)
  To: Johannes Thumshirn
  Cc: virtualization, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	Alexander Graf, linux-kernel

On Tue, Jan 27, 2026 at 04:25:21PM +0100, Johannes Thumshirn wrote:
> When booting a Qemu VM whith KCSAN to debug filesystem races I
> encountered a bunch of KCSAN splats in virtio.
> 
> All of them are false positives, as the racy unknown origin is the
> hypervisor.
> 
> Alex suggested to annotate the vring structure as racy for KCSAN, but
> the __data_racy annotation turns into "volatile" and as such it cannot
> be used to annotate the whole structure. Annotating every structure
> embedding a pointer to the vring turned out to be way more invasive than
> annotating only the few sites consumers.

Oh wow and I learned Linux has

# define auto __auto_type

which then allows auto in G11:

#define data_race(expr)                                                 \
({                                                                      \
        __kcsan_disable_current();                                      \
        auto __v = (expr);                                              \
        __kcsan_enable_current();                                       \
        __v;                                                            \
})




> Changes to v1:
> - Annotate the return of more_used_split() as racy so both call sites
>   are covered
> - Annotate vring_avail_event() as racy so we can condense two patches
>   into one.

Acked-by: Michael S. Tsirkin <mst@redhat.com>

I will pick this up.

> Link to v1:
> https://lore.kernel.org/virtualization/20260127083926.865555-1-johannes.thumshirn@wdc.com/
> 
> Johannes Thumshirn (2):
>   virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
>   virtio: silence KCSAN warning in virtqueue_kick_prepare
> 
>  drivers/virtio/virtio_ring.c     | 4 ++--
>  include/uapi/linux/virtio_ring.h | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> -- 
> 2.52.0


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

* Re: [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  2026-01-27 15:25 ` [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split Johannes Thumshirn
@ 2026-01-27 16:30   ` Alexander Graf
  2026-01-28  8:47     ` Johannes Thumshirn
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Graf @ 2026-01-27 16:30 UTC (permalink / raw)
  To: Johannes Thumshirn, virtualization
  Cc: Michael S . Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	linux-kernel


On 27.01.26 16:25, Johannes Thumshirn wrote:
> When booting a Qemu VM with virtio-blk and KCSAN enabled, KCSAN emits
> the following warning about a data-race in virtqueue_get_buf_ctx_split().
>
>   ==================================================================
>   BUG: KCSAN: data-race in virtqueue_get_buf_ctx_split+0x6e/0x260
>
>   race at unknown origin, with read to 0xffff8881020f1942 of 2 bytes by task 1 on cpu 7:
>    virtqueue_get_buf_ctx_split+0x6e/0x260
>    virtqueue_get_buf+0x4b/0x60
>    __send_to_port+0x156/0x170
>    put_chars+0xcb/0x110
>    hvc_console_print+0x1d6/0x2a0
>    console_flush_one_record+0x3dd/0x510
>    console_unlock+0x8c/0x160
>    vprintk_emit+0x2fe/0x380
>    vprintk_default+0x1d/0x30
>    vprintk+0xe/0x20
>    _printk+0x4c/0x60
>    btrfs_test_raid_stripe_tree+0x25/0x90
>    btrfs_run_sanity_tests.cold+0xf1/0x13b
>    init_btrfs_fs+0x73/0x110
>    do_one_initcall+0x5b/0x2d0
>    kernel_init_freeable+0x2a2/0x340
>    kernel_init+0x1e/0x1b0
>    ret_from_fork+0x137/0x1b0
>    ret_from_fork_asm+0x1a/0x30
>
>   value changed: 0x0160 -> 0x0161
>
>   Reported by Kernel Concurrency Sanitizer on:
>   CPU: 7 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.19.0-rc7+ #219 PREEMPT(none)
>   Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-9.fc43 06/10/2025
>   ==================================================================
>
> This warning is likely a false positive as the change happens on the
> virtio vring.
>
> Annotate the return of more_used_split() with data_race() to silence
> the warning.
>
> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> ---
>   drivers/virtio/virtio_ring.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index ddab68959671..1db27ee2d89f 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -808,8 +808,8 @@ static void detach_buf_split(struct vring_virtqueue *vq, unsigned int head,
>
>   static bool more_used_split(const struct vring_virtqueue *vq)


This patches the split vring format, but does not touch the packed one. 
What happens if you run the same test with the packed format? You can do 
so by passing "packed=on" as argument to your -device parameter.


Alex





Amazon Web Services Development Center Germany GmbH
Tamara-Danz-Str. 13
10243 Berlin
Geschaeftsfuehrung: Christof Hellmis, Andreas Stieger
Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B
Sitz: Berlin
Ust-ID: DE 365 538 597

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

* Re: [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  2026-01-27 16:30   ` Alexander Graf
@ 2026-01-28  8:47     ` Johannes Thumshirn
  2026-01-28  9:03       ` Alexander Graf
  0 siblings, 1 reply; 14+ messages in thread
From: Johannes Thumshirn @ 2026-01-28  8:47 UTC (permalink / raw)
  To: Alexander Graf, virtualization@lists.linux.dev
  Cc: Michael S . Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	linux-kernel@vger.kernel.org

On 1/27/26 5:30 PM, Alexander Graf wrote:
> This patches the split vring format, but does not touch the packed one.
> What happens if you run the same test with the packed format? You can do
> so by passing "packed=on" as argument to your -device parameter.

This opened up a whole new can of worms... :(


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

* Re: [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  2026-01-28  8:47     ` Johannes Thumshirn
@ 2026-01-28  9:03       ` Alexander Graf
  2026-01-28  9:13         ` Johannes Thumshirn
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Graf @ 2026-01-28  9:03 UTC (permalink / raw)
  To: Johannes Thumshirn, virtualization@lists.linux.dev
  Cc: Michael S . Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	linux-kernel@vger.kernel.org


On 28.01.26 09:47, Johannes Thumshirn wrote:
> On 1/27/26 5:30 PM, Alexander Graf wrote:
>> This patches the split vring format, but does not touch the packed one.
>> What happens if you run the same test with the packed format? You can do
>> so by passing "packed=on" as argument to your -device parameter.
> This opened up a whole new can of worms... :(


That's what I expected :).

How do other DMA based devices handle this? Is the real problem that 
virtio by default does not use the DMA API and so it confuses generic 
KCSAN logic that would otherwise track DMA regions as "can be modified 
by DMA at any time"?

If that is the case, maybe what we really want is to force enable use of 
the DMA API when KCSAN is active. Does something like the (whitespace 
broken) patch below work?

Alex

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index ddab68959671..b1dd790ce622 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -284,6 +284,13 @@ static bool vring_use_map_api(const struct 
virtio_device *vdev)
      if (xen_domain())
          return true;

+    /*
+     * KCSAN needs to track who can modify memory. DMA API gets
+     * us that, so always use it.
+     */
+    if (IS_ENABLED(CONFIG_KCSAN))
+        return true;
+
      return false;
  }




Amazon Web Services Development Center Germany GmbH
Tamara-Danz-Str. 13
10243 Berlin
Geschaeftsfuehrung: Christof Hellmis, Andreas Stieger
Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B
Sitz: Berlin
Ust-ID: DE 365 538 597

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

* Re: [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  2026-01-28  9:03       ` Alexander Graf
@ 2026-01-28  9:13         ` Johannes Thumshirn
  2026-01-28 10:30           ` Alexander Graf
  0 siblings, 1 reply; 14+ messages in thread
From: Johannes Thumshirn @ 2026-01-28  9:13 UTC (permalink / raw)
  To: Alexander Graf, virtualization@lists.linux.dev
  Cc: Michael S . Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	linux-kernel@vger.kernel.org

On 1/28/26 10:03 AM, Alexander Graf wrote:
> On 28.01.26 09:47, Johannes Thumshirn wrote:
>> On 1/27/26 5:30 PM, Alexander Graf wrote:
>>> This patches the split vring format, but does not touch the packed one.
>>> What happens if you run the same test with the packed format? You can do
>>> so by passing "packed=on" as argument to your -device parameter.
>> This opened up a whole new can of worms... :(
>
> That's what I expected :).
>
> How do other DMA based devices handle this? Is the real problem that
> virtio by default does not use the DMA API and so it confuses generic
> KCSAN logic that would otherwise track DMA regions as "can be modified
> by DMA at any time"?
>
> If that is the case, maybe what we really want is to force enable use of
> the DMA API when KCSAN is active. Does something like the (whitespace
> broken) patch below work?
>
> Alex
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index ddab68959671..b1dd790ce622 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -284,6 +284,13 @@ static bool vring_use_map_api(const struct
> virtio_device *vdev)
>        if (xen_domain())
>            return true;
>
> +    /*
> +     * KCSAN needs to track who can modify memory. DMA API gets
> +     * us that, so always use it.
> +     */
> +    if (IS_ENABLED(CONFIG_KCSAN))
> +        return true;
> +
>        return false;
>    }


Unfortunately this doesn't get us any further (I'd love though, it looks 
way cleaner!)

I still see the KCSAN messages even on boot.


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

* Re: [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  2026-01-28  9:13         ` Johannes Thumshirn
@ 2026-01-28 10:30           ` Alexander Graf
  2026-01-28 10:34             ` Michael S. Tsirkin
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Graf @ 2026-01-28 10:30 UTC (permalink / raw)
  To: Johannes Thumshirn, virtualization@lists.linux.dev
  Cc: Michael S . Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	linux-kernel@vger.kernel.org


On 28.01.26 10:13, Johannes Thumshirn wrote:
> On 1/28/26 10:03 AM, Alexander Graf wrote:
>> On 28.01.26 09:47, Johannes Thumshirn wrote:
>>> On 1/27/26 5:30 PM, Alexander Graf wrote:
>>>> This patches the split vring format, but does not touch the packed one.
>>>> What happens if you run the same test with the packed format? You can do
>>>> so by passing "packed=on" as argument to your -device parameter.
>>> This opened up a whole new can of worms... :(
>> That's what I expected :).
>>
>> How do other DMA based devices handle this? Is the real problem that
>> virtio by default does not use the DMA API and so it confuses generic
>> KCSAN logic that would otherwise track DMA regions as "can be modified
>> by DMA at any time"?
>>
>> If that is the case, maybe what we really want is to force enable use of
>> the DMA API when KCSAN is active. Does something like the (whitespace
>> broken) patch below work?
>>
>> Alex
>>
>> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
>> index ddab68959671..b1dd790ce622 100644
>> --- a/drivers/virtio/virtio_ring.c
>> +++ b/drivers/virtio/virtio_ring.c
>> @@ -284,6 +284,13 @@ static bool vring_use_map_api(const struct
>> virtio_device *vdev)
>>         if (xen_domain())
>>             return true;
>>
>> +    /*
>> +     * KCSAN needs to track who can modify memory. DMA API gets
>> +     * us that, so always use it.
>> +     */
>> +    if (IS_ENABLED(CONFIG_KCSAN))
>> +        return true;
>> +
>>         return false;
>>     }
>
> Unfortunately this doesn't get us any further (I'd love though, it looks
> way cleaner!)
>
> I still see the KCSAN messages even on boot.


Ah, looks like the important bit for KCSAN is not the mapping mechanism, 
it's the actual compiler annotation for the read. So these virtio ring 
reads should all be annotated as READ_ONCE() to make sure KCSAN knows 
the read itself is atomic.

Alex




Amazon Web Services Development Center Germany GmbH
Tamara-Danz-Str. 13
10243 Berlin
Geschaeftsfuehrung: Christof Hellmis, Andreas Stieger
Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B
Sitz: Berlin
Ust-ID: DE 365 538 597

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

* Re: [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  2026-01-28 10:30           ` Alexander Graf
@ 2026-01-28 10:34             ` Michael S. Tsirkin
  2026-01-28 10:38               ` Alexander Graf
  0 siblings, 1 reply; 14+ messages in thread
From: Michael S. Tsirkin @ 2026-01-28 10:34 UTC (permalink / raw)
  To: Alexander Graf
  Cc: Johannes Thumshirn, virtualization@lists.linux.dev, Jason Wang,
	Xuan Zhuo, Eugenio Pérez, linux-kernel@vger.kernel.org

On Wed, Jan 28, 2026 at 11:30:20AM +0100, Alexander Graf wrote:
> 
> On 28.01.26 10:13, Johannes Thumshirn wrote:
> > On 1/28/26 10:03 AM, Alexander Graf wrote:
> > > On 28.01.26 09:47, Johannes Thumshirn wrote:
> > > > On 1/27/26 5:30 PM, Alexander Graf wrote:
> > > > > This patches the split vring format, but does not touch the packed one.
> > > > > What happens if you run the same test with the packed format? You can do
> > > > > so by passing "packed=on" as argument to your -device parameter.
> > > > This opened up a whole new can of worms... :(
> > > That's what I expected :).
> > > 
> > > How do other DMA based devices handle this? Is the real problem that
> > > virtio by default does not use the DMA API and so it confuses generic
> > > KCSAN logic that would otherwise track DMA regions as "can be modified
> > > by DMA at any time"?
> > > 
> > > If that is the case, maybe what we really want is to force enable use of
> > > the DMA API when KCSAN is active. Does something like the (whitespace
> > > broken) patch below work?
> > > 
> > > Alex
> > > 
> > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> > > index ddab68959671..b1dd790ce622 100644
> > > --- a/drivers/virtio/virtio_ring.c
> > > +++ b/drivers/virtio/virtio_ring.c
> > > @@ -284,6 +284,13 @@ static bool vring_use_map_api(const struct
> > > virtio_device *vdev)
> > >         if (xen_domain())
> > >             return true;
> > > 
> > > +    /*
> > > +     * KCSAN needs to track who can modify memory. DMA API gets
> > > +     * us that, so always use it.
> > > +     */
> > > +    if (IS_ENABLED(CONFIG_KCSAN))
> > > +        return true;
> > > +
> > >         return false;
> > >     }
> > 
> > Unfortunately this doesn't get us any further (I'd love though, it looks
> > way cleaner!)
> > 
> > I still see the KCSAN messages even on boot.
> 
> 
> Ah, looks like the important bit for KCSAN is not the mapping mechanism,
> it's the actual compiler annotation for the read. So these virtio ring reads
> should all be annotated as READ_ONCE() to make sure KCSAN knows the read
> itself is atomic.
> 
> Alex
> 

so then:

       return vq->last_used_idx != virtio16_to_cpu(vq->vq.vdev,
                       READ_ONCE(vq->split.vring.used->idx));


?




> 
> 
> Amazon Web Services Development Center Germany GmbH
> Tamara-Danz-Str. 13
> 10243 Berlin
> Geschaeftsfuehrung: Christof Hellmis, Andreas Stieger
> Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B
> Sitz: Berlin
> Ust-ID: DE 365 538 597


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

* Re: [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  2026-01-28 10:34             ` Michael S. Tsirkin
@ 2026-01-28 10:38               ` Alexander Graf
  2026-01-28 10:48                 ` Michael S. Tsirkin
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Graf @ 2026-01-28 10:38 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Johannes Thumshirn, virtualization@lists.linux.dev, Jason Wang,
	Xuan Zhuo, Eugenio Pérez, linux-kernel@vger.kernel.org


On 28.01.26 11:34, Michael S. Tsirkin wrote:
> On Wed, Jan 28, 2026 at 11:30:20AM +0100, Alexander Graf wrote:
>> On 28.01.26 10:13, Johannes Thumshirn wrote:
>>> On 1/28/26 10:03 AM, Alexander Graf wrote:
>>>> On 28.01.26 09:47, Johannes Thumshirn wrote:
>>>>> On 1/27/26 5:30 PM, Alexander Graf wrote:
>>>>>> This patches the split vring format, but does not touch the packed one.
>>>>>> What happens if you run the same test with the packed format? You can do
>>>>>> so by passing "packed=on" as argument to your -device parameter.
>>>>> This opened up a whole new can of worms... :(
>>>> That's what I expected :).
>>>>
>>>> How do other DMA based devices handle this? Is the real problem that
>>>> virtio by default does not use the DMA API and so it confuses generic
>>>> KCSAN logic that would otherwise track DMA regions as "can be modified
>>>> by DMA at any time"?
>>>>
>>>> If that is the case, maybe what we really want is to force enable use of
>>>> the DMA API when KCSAN is active. Does something like the (whitespace
>>>> broken) patch below work?
>>>>
>>>> Alex
>>>>
>>>> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
>>>> index ddab68959671..b1dd790ce622 100644
>>>> --- a/drivers/virtio/virtio_ring.c
>>>> +++ b/drivers/virtio/virtio_ring.c
>>>> @@ -284,6 +284,13 @@ static bool vring_use_map_api(const struct
>>>> virtio_device *vdev)
>>>>          if (xen_domain())
>>>>              return true;
>>>>
>>>> +    /*
>>>> +     * KCSAN needs to track who can modify memory. DMA API gets
>>>> +     * us that, so always use it.
>>>> +     */
>>>> +    if (IS_ENABLED(CONFIG_KCSAN))
>>>> +        return true;
>>>> +
>>>>          return false;
>>>>      }
>>> Unfortunately this doesn't get us any further (I'd love though, it looks
>>> way cleaner!)
>>>
>>> I still see the KCSAN messages even on boot.
>>
>> Ah, looks like the important bit for KCSAN is not the mapping mechanism,
>> it's the actual compiler annotation for the read. So these virtio ring reads
>> should all be annotated as READ_ONCE() to make sure KCSAN knows the read
>> itself is atomic.
>>
>> Alex
>>
> so then:
>
>         return vq->last_used_idx != virtio16_to_cpu(vq->vq.vdev,
>                         READ_ONCE(vq->split.vring.used->idx));


Yes, which is on the verge of getting unreadable. I'll work with 
Johannes on v3. We'll play with ways to make it a bit more maintainable. 
Please discard the current patches for now.


Alex




Amazon Web Services Development Center Germany GmbH
Tamara-Danz-Str. 13
10243 Berlin
Geschaeftsfuehrung: Christof Hellmis, Andreas Stieger
Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B
Sitz: Berlin
Ust-ID: DE 365 538 597

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

* Re: [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
  2026-01-28 10:38               ` Alexander Graf
@ 2026-01-28 10:48                 ` Michael S. Tsirkin
  0 siblings, 0 replies; 14+ messages in thread
From: Michael S. Tsirkin @ 2026-01-28 10:48 UTC (permalink / raw)
  To: Alexander Graf
  Cc: Johannes Thumshirn, virtualization@lists.linux.dev, Jason Wang,
	Xuan Zhuo, Eugenio Pérez, linux-kernel@vger.kernel.org

On Wed, Jan 28, 2026 at 11:38:48AM +0100, Alexander Graf wrote:
> 
> On 28.01.26 11:34, Michael S. Tsirkin wrote:
> > On Wed, Jan 28, 2026 at 11:30:20AM +0100, Alexander Graf wrote:
> > > On 28.01.26 10:13, Johannes Thumshirn wrote:
> > > > On 1/28/26 10:03 AM, Alexander Graf wrote:
> > > > > On 28.01.26 09:47, Johannes Thumshirn wrote:
> > > > > > On 1/27/26 5:30 PM, Alexander Graf wrote:
> > > > > > > This patches the split vring format, but does not touch the packed one.
> > > > > > > What happens if you run the same test with the packed format? You can do
> > > > > > > so by passing "packed=on" as argument to your -device parameter.
> > > > > > This opened up a whole new can of worms... :(
> > > > > That's what I expected :).
> > > > > 
> > > > > How do other DMA based devices handle this? Is the real problem that
> > > > > virtio by default does not use the DMA API and so it confuses generic
> > > > > KCSAN logic that would otherwise track DMA regions as "can be modified
> > > > > by DMA at any time"?
> > > > > 
> > > > > If that is the case, maybe what we really want is to force enable use of
> > > > > the DMA API when KCSAN is active. Does something like the (whitespace
> > > > > broken) patch below work?
> > > > > 
> > > > > Alex
> > > > > 
> > > > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> > > > > index ddab68959671..b1dd790ce622 100644
> > > > > --- a/drivers/virtio/virtio_ring.c
> > > > > +++ b/drivers/virtio/virtio_ring.c
> > > > > @@ -284,6 +284,13 @@ static bool vring_use_map_api(const struct
> > > > > virtio_device *vdev)
> > > > >          if (xen_domain())
> > > > >              return true;
> > > > > 
> > > > > +    /*
> > > > > +     * KCSAN needs to track who can modify memory. DMA API gets
> > > > > +     * us that, so always use it.
> > > > > +     */
> > > > > +    if (IS_ENABLED(CONFIG_KCSAN))
> > > > > +        return true;
> > > > > +
> > > > >          return false;
> > > > >      }
> > > > Unfortunately this doesn't get us any further (I'd love though, it looks
> > > > way cleaner!)
> > > > 
> > > > I still see the KCSAN messages even on boot.
> > > 
> > > Ah, looks like the important bit for KCSAN is not the mapping mechanism,
> > > it's the actual compiler annotation for the read. So these virtio ring reads
> > > should all be annotated as READ_ONCE() to make sure KCSAN knows the read
> > > itself is atomic.
> > > 
> > > Alex
> > > 
> > so then:
> > 
> >         return vq->last_used_idx != virtio16_to_cpu(vq->vq.vdev,
> >                         READ_ONCE(vq->split.vring.used->idx));
> 
> 
> Yes, which is on the verge of getting unreadable.

Well we can wrap virtio16_to_cpu and READ_ONCE in a single macro
if you like.  VIRTIO16_READ ?


> I'll work with Johannes on
> v3. We'll play with ways to make it a bit more maintainable. Please discard
> the current patches for now.

Sure.

> 
> Alex
> 
> 
> 
> 
> Amazon Web Services Development Center Germany GmbH
> Tamara-Danz-Str. 13
> 10243 Berlin
> Geschaeftsfuehrung: Christof Hellmis, Andreas Stieger
> Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B
> Sitz: Berlin
> Ust-ID: DE 365 538 597


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

* Re: [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare
  2026-01-27 15:25 ` [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare Johannes Thumshirn
@ 2026-01-28 12:28   ` kernel test robot
  2026-01-28 22:23   ` kernel test robot
  1 sibling, 0 replies; 14+ messages in thread
From: kernel test robot @ 2026-01-28 12:28 UTC (permalink / raw)
  To: Johannes Thumshirn, virtualization
  Cc: oe-kbuild-all, Michael S . Tsirkin, Jason Wang, Xuan Zhuo,
	Eugenio Pérez, Alexander Graf, linux-kernel,
	Johannes Thumshirn

Hi Johannes,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.19-rc7]
[cannot apply to mst-vhost/linux-next next-20260127]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Johannes-Thumshirn/virtio-silence-KCSAN-warning-in-virtqueue_get_buf_ctx_split/20260127-235023
base:   linus/master
patch link:    https://lore.kernel.org/r/20260127152524.200465-3-johannes.thumshirn%40wdc.com
patch subject: [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare
config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20260128/202601282030.CWdibo9B-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260128/202601282030.CWdibo9B-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601282030.CWdibo9B-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/vhost/vringh.c: In function '__vringh_notify_enable':
>> drivers/vhost/vringh.c:559:33: error: lvalue required as unary '&' operand
     559 |                 if (putu16(vrh, &vring_avail_event(&vrh->vring),
         |                                 ^
   drivers/vhost/vringh.c:562:36: error: lvalue required as unary '&' operand
     562 |                                    &vring_avail_event(&vrh->vring));
         |                                    ^


vim +559 drivers/vhost/vringh.c

f87d0fbb579818f Rusty Russell      2013-03-20  542  
f87d0fbb579818f Rusty Russell      2013-03-20  543  static inline bool __vringh_notify_enable(struct vringh *vrh,
b9f7ac8c72894c1 Michael S. Tsirkin 2014-12-12  544  					  int (*getu16)(const struct vringh *vrh,
b9f7ac8c72894c1 Michael S. Tsirkin 2014-12-12  545  							u16 *val, const __virtio16 *p),
b9f7ac8c72894c1 Michael S. Tsirkin 2014-12-12  546  					  int (*putu16)(const struct vringh *vrh,
b9f7ac8c72894c1 Michael S. Tsirkin 2014-12-12  547  							__virtio16 *p, u16 val))
f87d0fbb579818f Rusty Russell      2013-03-20  548  {
f87d0fbb579818f Rusty Russell      2013-03-20  549  	u16 avail;
f87d0fbb579818f Rusty Russell      2013-03-20  550  
f87d0fbb579818f Rusty Russell      2013-03-20  551  	if (!vrh->event_indices) {
f87d0fbb579818f Rusty Russell      2013-03-20  552  		/* Old-school; update flags. */
b9f7ac8c72894c1 Michael S. Tsirkin 2014-12-12  553  		if (putu16(vrh, &vrh->vring.used->flags, 0) != 0) {
f87d0fbb579818f Rusty Russell      2013-03-20  554  			vringh_bad("Clearing used flags %p",
f87d0fbb579818f Rusty Russell      2013-03-20  555  				   &vrh->vring.used->flags);
f87d0fbb579818f Rusty Russell      2013-03-20  556  			return true;
f87d0fbb579818f Rusty Russell      2013-03-20  557  		}
f87d0fbb579818f Rusty Russell      2013-03-20  558  	} else {
b9f7ac8c72894c1 Michael S. Tsirkin 2014-12-12 @559  		if (putu16(vrh, &vring_avail_event(&vrh->vring),
f87d0fbb579818f Rusty Russell      2013-03-20  560  			   vrh->last_avail_idx) != 0) {
f87d0fbb579818f Rusty Russell      2013-03-20  561  			vringh_bad("Updating avail event index %p",
f87d0fbb579818f Rusty Russell      2013-03-20  562  				   &vring_avail_event(&vrh->vring));
f87d0fbb579818f Rusty Russell      2013-03-20  563  			return true;
f87d0fbb579818f Rusty Russell      2013-03-20  564  		}
f87d0fbb579818f Rusty Russell      2013-03-20  565  	}
f87d0fbb579818f Rusty Russell      2013-03-20  566  
f87d0fbb579818f Rusty Russell      2013-03-20  567  	/* They could have slipped one in as we were doing that: make
f87d0fbb579818f Rusty Russell      2013-03-20  568  	 * sure it's written, then check again. */
f87d0fbb579818f Rusty Russell      2013-03-20  569  	virtio_mb(vrh->weak_barriers);
f87d0fbb579818f Rusty Russell      2013-03-20  570  
b9f7ac8c72894c1 Michael S. Tsirkin 2014-12-12  571  	if (getu16(vrh, &avail, &vrh->vring.avail->idx) != 0) {
f87d0fbb579818f Rusty Russell      2013-03-20  572  		vringh_bad("Failed to check avail idx at %p",
f87d0fbb579818f Rusty Russell      2013-03-20  573  			   &vrh->vring.avail->idx);
f87d0fbb579818f Rusty Russell      2013-03-20  574  		return true;
f87d0fbb579818f Rusty Russell      2013-03-20  575  	}
f87d0fbb579818f Rusty Russell      2013-03-20  576  
f87d0fbb579818f Rusty Russell      2013-03-20  577  	/* This is unlikely, so we just leave notifications enabled
f87d0fbb579818f Rusty Russell      2013-03-20  578  	 * (if we're using event_indices, we'll only get one
f87d0fbb579818f Rusty Russell      2013-03-20  579  	 * notification anyway). */
f87d0fbb579818f Rusty Russell      2013-03-20  580  	return avail == vrh->last_avail_idx;
f87d0fbb579818f Rusty Russell      2013-03-20  581  }
f87d0fbb579818f Rusty Russell      2013-03-20  582  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* Re: [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare
  2026-01-27 15:25 ` [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare Johannes Thumshirn
  2026-01-28 12:28   ` kernel test robot
@ 2026-01-28 22:23   ` kernel test robot
  1 sibling, 0 replies; 14+ messages in thread
From: kernel test robot @ 2026-01-28 22:23 UTC (permalink / raw)
  To: Johannes Thumshirn, virtualization
  Cc: llvm, oe-kbuild-all, Michael S . Tsirkin, Jason Wang, Xuan Zhuo,
	Eugenio Pérez, Alexander Graf, linux-kernel,
	Johannes Thumshirn

Hi Johannes,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.19-rc7]
[cannot apply to mst-vhost/linux-next next-20260127]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Johannes-Thumshirn/virtio-silence-KCSAN-warning-in-virtqueue_get_buf_ctx_split/20260127-235023
base:   linus/master
patch link:    https://lore.kernel.org/r/20260127152524.200465-3-johannes.thumshirn%40wdc.com
patch subject: [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare
config: hexagon-allmodconfig (https://download.01.org/0day-ci/archive/20260129/202601290632.9LWUgtlM-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260129/202601290632.9LWUgtlM-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601290632.9LWUgtlM-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/vhost/vringh.c:559:19: error: cannot take the address of an rvalue of type '__virtio16' (aka 'unsigned short')
     559 |                 if (putu16(vrh, &vring_avail_event(&vrh->vring),
         |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/vhost/vringh.c:562:8: error: cannot take the address of an rvalue of type '__virtio16' (aka 'unsigned short')
     562 |                                    &vring_avail_event(&vrh->vring));
         |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   2 errors generated.


vim +559 drivers/vhost/vringh.c

f87d0fbb579818 Rusty Russell      2013-03-20  542  
f87d0fbb579818 Rusty Russell      2013-03-20  543  static inline bool __vringh_notify_enable(struct vringh *vrh,
b9f7ac8c72894c Michael S. Tsirkin 2014-12-12  544  					  int (*getu16)(const struct vringh *vrh,
b9f7ac8c72894c Michael S. Tsirkin 2014-12-12  545  							u16 *val, const __virtio16 *p),
b9f7ac8c72894c Michael S. Tsirkin 2014-12-12  546  					  int (*putu16)(const struct vringh *vrh,
b9f7ac8c72894c Michael S. Tsirkin 2014-12-12  547  							__virtio16 *p, u16 val))
f87d0fbb579818 Rusty Russell      2013-03-20  548  {
f87d0fbb579818 Rusty Russell      2013-03-20  549  	u16 avail;
f87d0fbb579818 Rusty Russell      2013-03-20  550  
f87d0fbb579818 Rusty Russell      2013-03-20  551  	if (!vrh->event_indices) {
f87d0fbb579818 Rusty Russell      2013-03-20  552  		/* Old-school; update flags. */
b9f7ac8c72894c Michael S. Tsirkin 2014-12-12  553  		if (putu16(vrh, &vrh->vring.used->flags, 0) != 0) {
f87d0fbb579818 Rusty Russell      2013-03-20  554  			vringh_bad("Clearing used flags %p",
f87d0fbb579818 Rusty Russell      2013-03-20  555  				   &vrh->vring.used->flags);
f87d0fbb579818 Rusty Russell      2013-03-20  556  			return true;
f87d0fbb579818 Rusty Russell      2013-03-20  557  		}
f87d0fbb579818 Rusty Russell      2013-03-20  558  	} else {
b9f7ac8c72894c Michael S. Tsirkin 2014-12-12 @559  		if (putu16(vrh, &vring_avail_event(&vrh->vring),
f87d0fbb579818 Rusty Russell      2013-03-20  560  			   vrh->last_avail_idx) != 0) {
f87d0fbb579818 Rusty Russell      2013-03-20  561  			vringh_bad("Updating avail event index %p",
f87d0fbb579818 Rusty Russell      2013-03-20  562  				   &vring_avail_event(&vrh->vring));
f87d0fbb579818 Rusty Russell      2013-03-20  563  			return true;
f87d0fbb579818 Rusty Russell      2013-03-20  564  		}
f87d0fbb579818 Rusty Russell      2013-03-20  565  	}
f87d0fbb579818 Rusty Russell      2013-03-20  566  
f87d0fbb579818 Rusty Russell      2013-03-20  567  	/* They could have slipped one in as we were doing that: make
f87d0fbb579818 Rusty Russell      2013-03-20  568  	 * sure it's written, then check again. */
f87d0fbb579818 Rusty Russell      2013-03-20  569  	virtio_mb(vrh->weak_barriers);
f87d0fbb579818 Rusty Russell      2013-03-20  570  
b9f7ac8c72894c Michael S. Tsirkin 2014-12-12  571  	if (getu16(vrh, &avail, &vrh->vring.avail->idx) != 0) {
f87d0fbb579818 Rusty Russell      2013-03-20  572  		vringh_bad("Failed to check avail idx at %p",
f87d0fbb579818 Rusty Russell      2013-03-20  573  			   &vrh->vring.avail->idx);
f87d0fbb579818 Rusty Russell      2013-03-20  574  		return true;
f87d0fbb579818 Rusty Russell      2013-03-20  575  	}
f87d0fbb579818 Rusty Russell      2013-03-20  576  
f87d0fbb579818 Rusty Russell      2013-03-20  577  	/* This is unlikely, so we just leave notifications enabled
f87d0fbb579818 Rusty Russell      2013-03-20  578  	 * (if we're using event_indices, we'll only get one
f87d0fbb579818 Rusty Russell      2013-03-20  579  	 * notification anyway). */
f87d0fbb579818 Rusty Russell      2013-03-20  580  	return avail == vrh->last_avail_idx;
f87d0fbb579818 Rusty Russell      2013-03-20  581  }
f87d0fbb579818 Rusty Russell      2013-03-20  582  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

end of thread, other threads:[~2026-01-28 22:23 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-27 15:25 [PATCH v2 0/2] virtio: silence KCSAN warnings Johannes Thumshirn
2026-01-27 15:25 ` [PATCH v2 1/2] virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split Johannes Thumshirn
2026-01-27 16:30   ` Alexander Graf
2026-01-28  8:47     ` Johannes Thumshirn
2026-01-28  9:03       ` Alexander Graf
2026-01-28  9:13         ` Johannes Thumshirn
2026-01-28 10:30           ` Alexander Graf
2026-01-28 10:34             ` Michael S. Tsirkin
2026-01-28 10:38               ` Alexander Graf
2026-01-28 10:48                 ` Michael S. Tsirkin
2026-01-27 15:25 ` [PATCH v2 2/2] virtio: silence KCSAN warning in virtqueue_kick_prepare Johannes Thumshirn
2026-01-28 12:28   ` kernel test robot
2026-01-28 22:23   ` kernel test robot
2026-01-27 15:44 ` [PATCH v2 0/2] virtio: silence KCSAN warnings 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