[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20090203201642.057a07b9.akpm@linux-foundation.org>
Date: Tue, 3 Feb 2009 20:16:42 -0800
From: Andrew Morton <akpm@...ux-foundation.org>
To: Rusty Russell <rusty@...tcorp.com.au>
Cc: Frédéric Weisbecker <fweisbec@...il.com>,
mingo@...e.hu, linux-kernel@...r.kernel.org, oleg@...hat.com,
travis@....com, a.p.zijlstra@...llo.nl, mm-commits@...r.kernel.org
Subject: Re: +
work_on_cpu-rewrite-it-to-create-a-kernel-thread-on-demand.patch added to
-mm tree
On Wed, 4 Feb 2009 14:28:11 +1030 Rusty Russell <rusty@...tcorp.com.au> wrote:
> On Wednesday 04 February 2009 05:55:29 Andrew Morton wrote:
> > On Tue, 3 Feb 2009 17:58:13 +0100
> > Fr__d__ric Weisbecker <fweisbec@...il.com> wrote:
> >
> > > 2009/2/3 Ingo Molnar <mingo@...e.hu>:
> > > >
> > > > * akpm@...ux-foundation.org <akpm@...ux-foundation.org> wrote:
> > > >
> > > >> ------------------------------------------------------
> > > >> Subject: work_on_cpu(): rewrite it to create a kernel thread on demand
> > > >> From: Andrew Morton <akpm@...ux-foundation.org>
> > > >>
> > > >> The various implemetnations and proposed implemetnations of work_on_cpu()
> > > >> are vulnerable to various deadlocks because they all used queues of some
> > > >> form.
> > > >>
> > > >> Unrelated pieces of kernel code thus gained dependencies wherein if one
> > > >> work_on_cpu() caller holds a lock which some other work_on_cpu() callback
> > > >> also takes, the kernel could rarely deadlock.
> > > >>
> > > >> Fix this by creating a short-lived kernel thread for each work_on_cpu()
> > > >> invokation.
> > > >>
> > > >> This is not terribly fast, but the only current caller of work_on_cpu() is
> > > >> pci_call_probe().
> > > >
> > > > hm, it's quite ugly as well
> >
> > No it isn't.
> >
> > It's no less ugly than the current code.
> >
> > It's less buggy than the current code.
>
> Whatever, I like your version.
Careful, or you'll own it ;)
> Tho making it a series of 5 and exposing rdmsr_on_cpu/wrmsr_on_cpu for other
> uses would be even better.
These:
int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
already exist. I don't think anything else needs to be done here?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists