Re: + ignore-stolen-time-in-the-softlockup-watchdog-fix.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 24 Apr 2007 21:37:47 -0700 Jeremy Fitzhardinge <jeremy@xxxxxxxx> wrote:

> Andrew Morton wrote:
> > Any which enable CONFIG_DEBUG_PREEMPT...
> >   
> 
> Hm.  Normally smp_processor_id() CSEs nicely, so it isn't generally
> necessary to do it manually.

For all architectures?

>  Not sure what CONFIG_DEBUG_PREEMPT will do
> to it.

#ifdef CONFIG_DEBUG_PREEMPT
  extern unsigned int debug_smp_processor_id(void);
# define smp_processor_id() debug_smp_processor_id()
#else
# define smp_processor_id() raw_smp_processor_id()
#endif

We could perhaps mark debug_smp_processor_id() as pure or const or whatever
the trick is to say it doesn't need to be reevaluated.  That would usually
be OK, because as long as preempt is disabled that _is_ how it works,
however code might do:

	preempt_disable();
	smp_processor_id();
	preempt_enable();

	<preempt or schedule()>

	preempt_disable();
	smp_processor_id();
	preempt_enable();

and caching the value would be wrong.

hm.  If "smp_processor_id() CSEs nicely", what prevents the compiler from
making the same mistake?  IOW, what are the barriers for CSE?  Function
calls?

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux