Received: by oss.sgi.com id ; Sat, 24 Jun 2000 19:32:43 -0700 Received: from [203.126.247.144] ([203.126.247.144]:47505 "EHLO zsngs001") by oss.sgi.com with ESMTP id ; Sat, 24 Jun 2000 19:32:28 -0700 Received: from zsngd101.asiapac.nortel.com (actually znsgd101) by zsngs001; Sun, 25 Jun 2000 10:26:10 +0800 Received: from zctwb003.asiapac.nortel.com ([47.152.32.111]) by zsngd101.asiapac.nortel.com with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2650.21) id NQ12PT9L; Sun, 25 Jun 2000 10:26:14 +0800 Received: from pwold011.asiapac.nortel.com ([47.181.193.45]) by zctwb003.asiapac.nortel.com with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2650.21) id NCLF8NSD; Sun, 25 Jun 2000 12:26:16 +1000 Received: from uow.edu.au (IDENT:akpm@[47.181.194.200]) by pwold011.asiapac.nortel.com (8.9.3/8.9.3) with ESMTP id MAA10553; Sun, 25 Jun 2000 12:24:25 +1000 Message-ID: <39556E6E.DE0DAA90@uow.edu.au> Date: Sun, 25 Jun 2000 12:29:02 +1000 X-Sybari-Space: 00000000 00000000 00000000 From: Andrew Morton X-Mailer: Mozilla 4.7 [en] (X11; I; Linux 2.2.14-15mdk i586) X-Accept-Language: en MIME-Version: 1.0 To: Richard Gooch CC: Philipp Rumpf , Philipp Rumpf , Rusty Russell , Keith Owens , Alan Cox , "netdev@oss.sgi.com" Subject: Re: modular net drivers References: <20000624093548.A31621@puffin.external.hp.com>, <20000623164805.AA5BB8154@halfway> <3954262D.60BDEF41@uow.edu.au> <20000624080106.A25102@fruits.uzix.org> <3954D42A.938A724B@uow.edu.au> <20000624093548.A31621@puffin.external.hp.com> <200006241548.e5OFmiC09138@vindaloo.ras.ucalgary.ca> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Orig: Sender: owner-netdev@oss.sgi.com Precedence: bulk Return-Path: X-Orcpt: rfc822;netdev-outgoing Richard Gooch wrote: > > Or why not use smp_call_function()? Just move it from the i386 tree to > the generic tree. The comment above smp_call_function() says " The function to run. This must be fast and non-blocking." I think the cross-CPU function is basically an ISR; starting a kernel thread from there would be interesting. My patch was quite bogus, of course :( We can have as many threads as we like spinning and the scheduler will cheerfully timeslice between them. Right now, I'm not sure how to implement this puppy. I don't see how to ensure that the sub-thread is running on another CPU. I know that, in practice, the subthread _does_ run on another CPU because I relied on that in my del_timer_sync test suite. But this depends upon scheduler vagaries which may not remain true. Perhaps we just create (smp_num_cpus * 10) threads and any time we see a non-captured CPU we do a local_irq_disable() and spin. How delightful. Thinking caps, gentlemen.