[Bug 296185] rtw89(4) freezes the system with INVARIANTS kernel

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 19 Jul 2026 14:21:23 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=296185

--- Comment #11 from Artem Bunichev <temcbun@gmail.com> ---
I think I've found where it breaks.  I added the printf() debug logs into the
source code myself and made use of empty infinite loops to find out where it
stops working.

So, it happens in rtw89_ops_set_rts_threshold()
(sys/contrib/dev/rtw89/mac80211.c).  The first action there is
lockdep_assert_wiphy(hw->wiphy), and that function is where the bug happens: if
an infinite loop is placed before it - the code reaches it and just starts to
spin, but if we place a loop after lockdep_assert_wiphy(), the code just hangs
and stops responding.

I looked into lockdep_assert_wiphy(), and it is essentially a wrapper for
lockdep_assert_held(), which is defined in
sys/compat/linuxkpi/common/include/linux/lockdep.h inside #ifdef INVARIANTS. 
And that makes perfect sense, since this bug doesn't happen when the kernel is
compiled without INVARIANTS.

I'm not very experienced with the kernel code, so I guess I would need some
further help to figure out what's the root cause and how it can be fixed.

-- 
You are receiving this mail because:
You are the assignee for the bug.