From de86f0223d2d9ff5082871a07427bfb40056aab6 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Fri, 3 Apr 2026 15:02:13 -0700 Subject: [PATCH] venus: add vn_relax_warn to check if at warn order Part-of: --- src/virtio/vulkan/vn_common.c | 2 ++ src/virtio/vulkan/vn_common.h | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/src/virtio/vulkan/vn_common.c b/src/virtio/vulkan/vn_common.c index aa67cd34500..5ae40176830 100644 --- a/src/virtio/vulkan/vn_common.c +++ b/src/virtio/vulkan/vn_common.c @@ -259,8 +259,10 @@ vn_relax(struct vn_relax_state *state) return; } + state->warn = false; if (unlikely(*iter % (1 << warn_order) == 0)) { struct vn_instance *instance = state->instance; + state->warn = true; vn_log(instance, "stuck in %s wait with iter at %d", state->reason_str, *iter); diff --git a/src/virtio/vulkan/vn_common.h b/src/virtio/vulkan/vn_common.h index 25e54faed28..92117977ab5 100644 --- a/src/virtio/vulkan/vn_common.h +++ b/src/virtio/vulkan/vn_common.h @@ -273,6 +273,7 @@ struct vn_relax_state { uint32_t iter; const struct vn_relax_profile profile; const char *reason_str; + bool warn; }; /* TLS ring @@ -430,6 +431,12 @@ vn_relax(struct vn_relax_state *state); void vn_relax_fini(struct vn_relax_state *state); +static inline bool +vn_relax_warn(struct vn_relax_state *state) +{ + return state->warn; +} + static_assert(sizeof(vn_object_id) >= sizeof(uintptr_t), ""); static inline VkResult