Re: [PATCH][2.5] replace flush_map() in arch/i386/mm/pageattr.c w ith flush_tlb_all()

From: Thomas Schlichter (schlicht@uni-mannheim.de)
Date: Fri Feb 21 2003 - 09:25:01 EST


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



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Feb 23 2003 - 22:00:33 EST