Re: [RFC][PATCH] linux-2.5.34_vsyscall_A0

Andrea Arcangeli (andrea@suse.de)
Fri, 18 Oct 2002 20:51:32 +0200


On Fri, Oct 18, 2002 at 11:37:19AM -0700, Stephen Hemminger wrote:
>
> > agreed. Hear my idea:
> >
> > actually my idea on 64bit was to use the high 8 bit of each 64bit word to
> > give you the cpuid, to get out the coherent data, including the sequence
> > number that are read and written inversely with mb() like now (the
> > sequence number as well will become per-cpu), so it is definitely doable
> > without any single problem and in a very performant way, just not as
> > easy as without the per-cpu info. Even if segmentation per-cpu tricks
> > would be possible or available (remeber long mode is pure paging, no
> > segmentation) it would be not worthwhile IMHO, the cpuid encoded
> > atomically in each 64bit data provided by the vsyscall seems a much
> > simpler and possibly more performant solution. You set a different
> > per-cpu data-mapping with different pte settings in each cpu. The
> > vsyscall bytecode remains the same, aware about this cpuid encoded in
> > each 64bit word. Doing it in 32bit is ugly (or at least much slower)
> > since most data is natively at least 32bit, it would need some slow
> > demultiplexing.
>
> At least on IA32 you could still use XCHG64 to atomically access the
> values, but that always forces a write so it isn't cache friendly. Still

yep, it would hurt scalability if possible at all, and I doubt the
chpxchg64 could work on a readonly piece of memory, the pte is marked
writeprotect, so it should generate a sigsegv.

> it probably is better than encoding the data in 32bit. It all depends

yes.

> on how much data is needed.
>

Andrea
-
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/