lkml.org 
[lkml]   [2003]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH][2.5] replace flush_map() in arch/i386/mm/pageattr.c w ith flush_tlb_all()
Date
Yes, you are right. I was just looking for this preempt-problem where a 
flush_tlb* was done, but there are many other places where this problem
occours, too... Nearly everywhere where smp_call_function() is used!

I found a function in the file mm/slab.c called smp_call_function_all_cpus()
which tries to do the thing we want, but I think not even this function is
preempt-safe...!

But here I think I better get off my fingers, I just wanted to help a bit with
this issue, but I don't think I have the time and knowledge to solve it
completely in the mentioned good way...

Perhaps even the semantic of the function smp_call_function() could be changed
to call the function on every CPU? Just an idea...

Best regards
Thomas Schlichter


On Fri, 21 Feb 2003 15:20, Dave Jones wrote:
> On Fri, Feb 21, 2003 at 01:42:12PM +0100, Thomas Schlichter wrote:
> > > No. All that does is make sure that the cpu you start out on is
> > > flushed, once or twice, and the cpu you end up on may be missed.
> > > Use preempt_disable and preempt_enable.
> >
> > Oh, you are right! I think I am totally stupid this morning...!
> > Now finally I hope this is the correct patch...
>
> That would appear to do what you want, but its an ugly construct to
> be repeating everywhere that wants to call a function on all CPUs.
> It would probably clean things up a lot if we had a function to do..
>
> static inline void on_each_cpu(void *func)
> {
> #ifdef CONFIG_SMP
> preempt_disable();
> smp_call_function(func, NULL, 1, 1);
> func(NULL);
> preempt_enable();
> #else
> func(NULL);
> #endif
> }
>
> Bluesmoke and agpgart could both use this to cleanup some mess,
> and no doubt there are others
>
> Comments?
>
> Dave
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2005-03-22 13:33    [W:0.065 / U:0.496 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site