Re: boot panic (NDIS, SCHED_ULE?)

From: John Baldwin <jhb_at_freebsd.org>
Date: Fri, 21 Oct 2005 17:37:00 -0400
On Friday 21 October 2005 05:00 pm, Bill Paul wrote:
> > Maxim Maximov wrote:
> > > Maxim Maximov wrote:
> > >> Hi.
> > >>
> > >>     Got boot time panic on fresh CURRENT.
> > >>     NDIS hardware:
> > >>
> > >> ndis0: <ASUS 802.11g Network Adapter> mem 0xfeaf8000-0xfeaf9fff irq 17
> > >> at device 2.0 on pci2
> > >> ndis0: NDIS API version: 5.0
> > >> ndis0: Ethernet address: 00:0e:a6:c2:00:e4
>
> Oh for crap's sake.
>
> Some days I really, _REALLY_ hate FreeBSD.
>
> I need to insure that DPC thread 0 runs on CPU 0, and DPC thread 1
> runs on CPU 1, and so on. There are supposed to be separate DPC
> threads for each CPU. Unfortunately, you can't specify a CPU
> affinity when you launch the thread, and obviously you can't
> do it during the device probe phase during bootstrap since only
> CPU 0 is running.
>
> I really don't  have the right solution for this right now. What
> you _SHOULD_ do is stop loading your NDIS driver during boot. Instead,
> take it out of /boot/loader.conf and load it with a boot script
> after the system has gone multiuser. If you do it then, both CPUs
> will be running.
>
> I'm not sure of the correct solution for this problem. I have to
> think about it. In the meantime, just wait to load ndis.ko, if_ndis.ko
> and your_driver.ko after bootstrap.

Perhaps have the kthreads for cpus other than 0 sleep in their main before 
calling sched_bind() and have a SI_SUB_SMP, SI_ORDER_MIDDLE SYSINIT in the 
module to wake them up so they can do their sched_bind()s.  Someday I'd like 
to have all the CPUs up and running for the device probe. :(

-- 
John Baldwin <jhb_at_FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
Received on Fri Oct 21 2005 - 19:35:42 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:46 UTC