From owner-freebsd-virtualization@FreeBSD.ORG Tue Mar 6 21:50:46 2012 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DD851065670 for ; Tue, 6 Mar 2012 21:50:46 +0000 (UTC) (envelope-from zec@fer.hr) Received: from munja.zvne.fer.hr (munja.zvne.fer.hr [161.53.66.248]) by mx1.freebsd.org (Postfix) with ESMTP id 073AC8FC22 for ; Tue, 6 Mar 2012 21:50:44 +0000 (UTC) Received: from sluga.fer.hr ([161.53.66.244]) by munja.zvne.fer.hr with Microsoft SMTPSVC(6.0.3790.4675); Tue, 6 Mar 2012 22:50:44 +0100 Received: from localhost ([161.53.19.8]) by sluga.fer.hr with Microsoft SMTPSVC(6.0.3790.4675); Tue, 6 Mar 2012 22:50:43 +0100 From: Marko Zec To: freebsd-virtualization@freebsd.org Date: Tue, 6 Mar 2012 22:50:21 +0100 User-Agent: KMail/1.9.10 References: <201203062245.41155.zec@fer.hr> In-Reply-To: <201203062245.41155.zec@fer.hr> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <201203062250.21702.zec@fer.hr> X-OriginalArrivalTime: 06 Mar 2012 21:50:43.0920 (UTC) FILETIME=[2E431D00:01CCFBE3] Cc: Adrian Chadd Subject: Re: VIMAGE + kldload wlan + kldload wtap panic X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Mar 2012 21:50:46 -0000 On Tuesday 06 March 2012 22:45:40 Marko Zec wrote: > On Tuesday 06 March 2012 22:30:26 Monthadar Al Jaberi wrote: > > On Tue, Mar 6, 2012 at 9:57 PM, Marko Zec wrote: > > > On Tuesday 06 March 2012 21:29:32 Monthadar Al Jaberi wrote: > > >> On Tue, Mar 6, 2012 at 9:22 PM, Marko Zec wrote: > > >> > On Tuesday 06 March 2012 21:13:00 Monthadar Al Jaberi wrote: > > >> >> I am confused so whats the difference between having wlan in kern= el > > >> >> config or not? Cuase that seems the reason why we panic... linker > > >> >> problems? > > >> > > > >> > Its not impossible. > > >> > > > >> > Have you tried to do CURVNET_SET(ss->ss_vap->iv_ifp->if_vnet) on > > >> > entry to > > > > > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ^^^^^^^^^^^^^^^^^^^^^= ^^^^^^^^^^^^^^^^^^^ > > > > > >> > scan_task() as I suggested earlier in this thread? > > >> > > >> this is the code I added: > > >> diff --git a/sys/net80211/ieee80211_scan.c > > >> b/sys/net80211/ieee80211_scan.c index 5c1e3d9..bd20653 100644 > > >> --- a/sys/net80211/ieee80211_scan.c > > >> +++ b/sys/net80211/ieee80211_scan.c > > >> @@ -850,6 +850,7 @@ scan_task(void *arg, int pending) > > >> =A0 =A0 =A0 =A0 int scandone =3D 0; > > >> > > >> =A0 =A0 =A0 =A0 IEEE80211_LOCK(ic); > > >> + =A0 =A0 =A0CURVNET_SET((struct ieee80211_scan_state *) > > >> ss->ss_vap->iv_ifp->if_curvnet); > > > > > > =A0^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > > > > > You couldn't have ever compiled this, so you must be booting an old > > > kernel. > > > > Whats wrong with this line, I am running new kernel remember I compile > > wlan afterward and kldload it > > struct ifnet doesn't have a field named if_curvnet, but it does contain a > field named if_vnet. > > > it seems to compile fine if I type wrong names inside CURVNET_SET hmm... > > No it does not compile. Ohh now I see it where the problem most probably is - you've compiled your= =20 kernel with options VIMAGE, but not your modules!!! Check your config / build environment to make sure BOTH kernel AND modules = are=20 configured and built the same way... Cheers, Marko > > > I cant copy/paste db output from VBox butI am attaching two pictures. > > > > > Pls. make sure you have actually rebuilt and rebooted a new kernel, an > > > let us know the outcome. > > > > > > Thanks > > > > > > Marko > > > > > >> =A0 =A0 =A0 =A0 if (vap =3D=3D NULL || (ic->ic_flags & IEEE80211_F_S= CAN) =3D=3D 0 || > > >> =A0 =A0 =A0 =A0 =A0 =A0 (SCAN_PRIVATE(ss)->ss_iflags & ISCAN_ABORT))= { > > >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* Cancelled before we started */ > > >> @@ -1004,6 +1005,7 @@ scan_task(void *arg, int pending) > > >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ss->ss_ops->scan_restart(ss, vap); = =A0 =A0 =A0/* XXX? */ > > >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ieee80211_runtask(ic, > > >> &SCAN_PRIVATE(ss)->ss_scan_task); IEEE80211_UNLOCK(ic); > > >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 CURVNET_RESTORE(); > > >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return; > > >> =A0 =A0 =A0 =A0 } > > >> > > >> @@ -1043,6 +1045,7 @@ done: > > >> =A0 =A0 =A0 =A0 SCAN_PRIVATE(ss)->ss_iflags &=3D ~(ISCAN_CANCEL|ISCA= N_ABORT); > > >> =A0 =A0 =A0 =A0 ss->ss_flags &=3D ~(IEEE80211_SCAN_ONCE | > > >> IEEE80211_SCAN_PICK1ST); IEEE80211_UNLOCK(ic); > > >> + =A0 =A0 =A0 CURVNET_RESTORE(); > > >> =A0#undef ISCAN_REP > > >> =A0} > > >> > > >> same panic... > > >> > > >> > Cheers, > > >> > > > >> > Marko > > >> > > > >> >> On Tue, Mar 6, 2012 at 9:06 PM, Adrian Chadd > > >> >> > > > > > > wrote: > > >> >> > Hi, > > >> >> > > > >> >> > The trouble here is that net80211 has quite a few other contexts > > >> >> > that things are called from: > > >> >> > > > >> >> > * driver taskqueue; > > >> >> > * net80211 taskqueue; > > >> >> > * driver callouts; > > >> >> > * net80211 callouts; > > >> >> > * ioctls via net80211. > > >> >> > > > >> >> > That's in parallel with frame tx/rx and device ioctls. > > >> >> > > > >> >> > I don't personally have the time to go through net80211 and > > >> >> > driver(s) at the moment to figure out what's going on. Since > > >> >> > ath(4) does a bunch of frame processing in taskqueue context (a= nd > > >> >> > I'm trying to eliminate frame processing in _callout_ context, > > >> >> > ew..) things can potentially get a bit hairy. > > >> >> > > > >> >> > > > >> >> > Adrian > > >> >> > > > >> >> > On 6 March 2012 11:59, Marko Zec wrote: > > >> >> >> On Tuesday 06 March 2012 20:49:38 Monthadar Al Jaberi wrote: > > >> >> >>> I added VNET_DEBUG and noticed this warning (original scan_ta= sk > > >> >> >>> 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 > > >> >> >> > > >> >> >> You can safely ignore those. =A0Recursing on curvnet is harmle= ss, > > >> >> >> but in certain cases can't be avoided. > > >> >> >> > > >> >> >> When injecting new CURVNET_SET() / CURVNET_RESTORE() points in > > >> >> >> the existing code, those warnings are here to help us becoming > > >> >> >> aware that we are setting curvnet in a function which was > > >> >> >> invoked with an already valid curvnet context. > > >> >> >> > > >> >> >> Marko