Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Mar 2012 20:49:38 +0100
From:      Monthadar Al Jaberi <monthadar@gmail.com>
To:        Adrian Chadd <adrian.chadd@gmail.com>
Cc:        Marko Zec <zec@fer.hr>, freebsd-virtualization@freebsd.org
Subject:   Re: VIMAGE + kldload wlan + kldload wtap panic
Message-ID:  <CA%2BsBSoJUmzmOJmN8PvjfPTUDnez7MCHU9GvYpLNqER94haxk=g@mail.gmail.com>
In-Reply-To: <CAJ-VmomY7ipsvok1pACjPU-Y933uTTiZ5-6EZG0B=Ofw226owg@mail.gmail.com>
References:  <CA%2BsBSo%2Bt=p0HLbyOH87DOJWWYn%2Be%2Bok7cwRiL1c1=gCw5=KTqg@mail.gmail.com> <201203060052.28603.zec@fer.hr> <CA%2BsBSoJJbsrCCp-GzZOJU-gMjDYsM4UX0fj5no-5%2BazThq0_Kg@mail.gmail.com> <201203061633.03446.zec@fer.hr> <CAJ-VmomY7ipsvok1pACjPU-Y933uTTiZ5-6EZG0B=Ofw226owg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I added VNET_DEBUG and noticed this warning (original scan_task code):

CURVNET_SET() recursion in sosend() line 1350, prev in kern_kldload()
    0xfffffe0002202c40 -> 0xfffffe0002202c40
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
kdb_backtrace() at kdb_backtrace+0x37
sosend() at sosend+0xbd
clnt_vc_call() at clnt_vc_call+0x3e6
clnt_reconnect_call() at clnt_reconnect_call+0xf5
newnfs_request() at newnfs_request+0x9fb
nfscl_request() at nfscl_request+0x72
nfsrpc_lookup() at nfsrpc_lookup+0x1be
nfs_lookup() at nfs_lookup+0x297
VOP_LOOKUP_APV() at VOP_LOOKUP_APV+0x95
lookup() at lookup+0x3b8
namei() at namei+0x484
vn_open_cred() at vn_open_cred+0x1e2
link_elf_load_file() at link_elf_load_file+0xb3
linker_load_module() at linker_load_module+0x794
kern_kldload() at kern_kldload+0x145
sys_kldload() at sys_kldload+0x84
amd64_syscall() at amd64_syscall+0x39e
Xfast_syscall() at Xfast_syscall+0xf7


On Tue, Mar 6, 2012 at 7:01 PM, Adrian Chadd <adrian.chadd@gmail.com> wrote:
> Hi,
>
> What do we need to do to get VNET working in net80211 and the network drivers?
>
>
> Adrian
>
> On 6 March 2012 07:33, Marko Zec <zec@fer.hr> wrote:
>> On Tuesday 06 March 2012 10:53:18 Monthadar Al Jaberi wrote:
>>> On Tue, Mar 6, 2012 at 12:52 AM, Marko Zec <zec@fer.hr> wrote:
>>> > On Monday 05 March 2012 22:14:45 Monthadar Al Jaberi wrote:
>>> >> Hi,
>>> >>
>>> >> I am a very happy VIMAGE user. But lately I have been having problems
>>> >> using it, and its too complicated for me to dig in so I hope you can
>>> >> help me (and help Adrian too).
>>> >>
>>> >> I am using FreeBSD Current with a kernel config without wlan module
>>> >> and wireless devices  attach kernel config.
>>> >>
>>> >> uname -a shows:
>>> >> FreeBSD acke 10.0-CURRENT FreeBSD 10.0-CURRENT #2: Mon Mar  5 20:02:38
>>> >> CET 2012     root@acke:/usr/obj/usr/src/sys/VNET_without_wlan  amd64
>>> >>
>>> >> I run the following commands:
>>> >> cd /usr/sys/module/wlan
>>> >> make load
>>> >> cd /usr/sys/modules/wtap
>>> >> make load
>>> >>
>>> >> then:
>>> >> /usr/src/ools/tools/wtap/wtap/wtap c 0
>>> >> ifconfig wlan create wlandev wtap0 wlanmode mesh
>>> >> wlandebug -i wlan0 hwmp+mesh+output+input+inact
>>> >> ifconfig wlan0 meshid mymesh
>>> >> ifconfig wlan0 inet 192.168.2.1
>>> >>
>>> >> and freebsd panics with:
>>> >> Mon Mar  5 21:17:46 CET 2012
>>> >> Mar  5 21:59:23 acke login: ROOT LOGIN (root) ON ttyv0
>>> >> Using visibility wtap plugin...
>>> >> Loaded wtap wireless simulator
>>> >> wtap0: ieee80211_radiotap_attach: no tx channel, radiotap 0x0wtap0:
>>> >> ieee80211_radiotap_attach: no rx channel, radiotap 0x0wlan0: Ethernet
>>> >> address: 00:98:9a:98:96:97
>>> >> wlan0: ieee80211_start: ignore queue, in SCAN state
>>> >> wlan0: [00:98:9a:98:96:97] ieee80211_alloc_node: inact_reload 2
>>> >> Kernel page fault with the following non-sleepable locks held:
>>> >> exclusive sleep mutex wtap0_com_lock (wtap0_com_lock) r = 0
>>> >> (0xffffff8002395018) locked @
>>> >> /usr/src/sys/modules/wlan/../../net80211/ieee80211_proto.c:1937
>>> >> KDB: stack backtrace:
>>> >> db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
>>> >> kdb_backtrace() at kdb_backtrace+0x37
>>> >> _witness_debugger() at _witness_debugger+0x2c
>>> >> witness_warn() at witness_warn+0x2c4
>>> >> trap() at trap+0x2fe
>>> >> calltrap() at calltrap+0x8
>>> >> --- trap 0xc, rip = 0xffffffff80885d0c, rsp = 0xffffff80003e9a00, rbp
>>> >> = 0xffffff80003e9a20 ---
>>> >> rt_dispatch() at rt_dispatch+0x2c
>>> >> rt_ieee80211msg() at rt_ieee80211msg+0x7f
>>> >> scan_task() at scan_task+0x4cd
>>> >> taskqueue_run_locked() at taskqueue_run_locked+0x93
>>> >> taskqueue_thread_loop() at taskqueue_thread_loop+0x3e
>>> >
>>> > It may be that scan_task() calls further down into the network stack
>>> > without setting curvnet first.
>>>
>>> I added CURVNET_SET(TD_TO_VNET(curthread))/CURVNET_RESTORE() in
>>> scan_task but it didnt help
>>
>> scan_task() is called from a taskqueue trampoline which doesn't have a valid
>> TD_TO_VNET(curthread) context, so what you attempted to do can't work.  You
>> need to set curvnet context to the one to which the network interface (or a
>> packet) you're working with belongs to.  Perhaps you could use
>>
>> (struct ieee80211_scan_state *) ss->ss_vap->iv_ifp->if_curvnet
>>
>> in scan_task() to set curvnet, but having no clue on how the 80211 code works,
>> I might be wrong...
>>
>> And maybe you could consider rebuilding your kernel with options VNET_DEBUG
>> turned on - that should more verbosely point to the problem at hand, while
>> not introducing too big a performance penalty at runtime.
>>
>> Good luck,
>>
>> Marko



-- 
Monthadar Al Jaberi



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BsBSoJUmzmOJmN8PvjfPTUDnez7MCHU9GvYpLNqER94haxk=g>