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.

Reply via email to