Re: [slubllv5 07/25] x86: Add support for cmpxchg_double

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

 



On Tue, 31 May 2011, H. Peter Anvin wrote:

> On 05/31/2011 04:49 PM, Christoph Lameter wrote:
> >>>
> >>> +#
> >>> +# CMPXCHG_DOUBLE needs to be set to enable the kernel to use cmpxchg16/8b
> >>> +# for cmpxchg_double if it find processor flags that indicate that the
> >>> +# capabilities are available. CMPXCHG_DOUBLE only compiles in
> >>> +# detection support. It needs to be set if there is a chance that processor
> >>> +# supports these instructions.
> >>> +#
> >>> +config CMPXCHG_DOUBLE
> >>> +	def_bool GENERIC_CPU || X86_GENERIC || !M386
> >>> +
> >>>  config X86_L1_CACHE_SHIFT
> >>>  	int
> >>>  	default "7" if MPENTIUM4 || MPSC
> >>
> >> Per previous discussion:
> >>
> >> - Drop this Kconfig option (it is irrelevant.)  CONFIG_CMPXCHG_LOCAL is
> >> different: it indicates that CMPXCHG is *guaranteed* to exist.
> >
> > Right but this is for cmpxchg16b which means that we need to check a
> > bit in the processor flags. Isnt this what you suggested?
> >
>
> Per your own description:
>
> "CMPXCHG_DOUBLE only compiles in detection support. It needs to be set
> if there is a chance that processor supports these instructions."
>
> That condition is always TRUE, so no Kconfig is needed.

There are several early processors (especially from AMD it seems) that do
not support cmpxchg16b. If one builds a kernel specifically for the early
cpus then the support does not need to be enabled.

This is also an issue going beyond x86. Other platforms mostly do not
support double word cmpxchg so the code for this feature also does not
need to be included for those builds.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]