<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/x86/lib/Makefile, branch linux-2.6.37.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2010-07-28T23:53:49Z</updated>
<entry>
<title>x86, asm: Move cmpxchg emulation code to arch/x86/lib</title>
<updated>2010-07-28T23:53:49Z</updated>
<author>
<name>H. Peter Anvin</name>
</author>
<published>2010-07-28T23:53:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=90c8f92f5c807807ca74d5f2f313794925174e6b'/>
<id>urn:sha1:90c8f92f5c807807ca74d5f2f313794925174e6b</id>
<content type='text'>
Move cmpxchg emulation code from arch/x86/kernel/cpu (which is
otherwise CPU identification) to arch/x86/lib, where other emulation
code lives already.

Signed-off-by: H. Peter Anvin &lt;hpa@linux.intel.com&gt;
LKML-Reference: &lt;AANLkTikAmaDPji-TVDarmG1yD=fwbffcsmEU=YEuP+8r@mail.gmail.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'x86-atomic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip</title>
<updated>2010-05-18T15:40:05Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2010-05-18T15:40:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=93c9d7f60c0cb7715890b1f9e159da6f4d1f5a65'/>
<id>urn:sha1:93c9d7f60c0cb7715890b1f9e159da6f4d1f5a65</id>
<content type='text'>
* 'x86-atomic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86: Fix LOCK_PREFIX_HERE for uniprocessor build
  x86, atomic64: In selftest, distinguish x86-64 from 586+
  x86-32: Fix atomic64_inc_not_zero return value convention
  lib: Fix atomic64_inc_not_zero test
  lib: Fix atomic64_add_unless return value convention
  x86-32: Fix atomic64_add_unless return value convention
  lib: Fix atomic64_add_unless test
  x86: Implement atomic[64]_dec_if_positive()
  lib: Only test atomic64_dec_if_positive on archs having it
  x86-32: Rewrite 32-bit atomic64 functions in assembly
  lib: Add self-test for atomic64_t
  x86-32: Allow UP/SMP lock replacement in cmpxchg64
  x86: Add support for lock prefix in alternatives
</content>
</entry>
<entry>
<title>Merge branch 'x86/asm' into x86/atomic</title>
<updated>2010-04-29T23:53:17Z</updated>
<author>
<name>H. Peter Anvin</name>
</author>
<published>2010-04-29T23:53:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d9c5841e22231e4e49fd0a1004164e6fce59b7a6'/>
<id>urn:sha1:d9c5841e22231e4e49fd0a1004164e6fce59b7a6</id>
<content type='text'>
Merge reason:
	Conflict between LOCK_PREFIX_HERE and relative alternatives
	pointers

Resolved Conflicts:
	arch/x86/include/asm/alternative.h
	arch/x86/kernel/alternative.c

Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</content>
</entry>
<entry>
<title>perf, x86: Add INSTRUCTION_DECODER config flag</title>
<updated>2010-03-10T12:34:12Z</updated>
<author>
<name>Ingo Molnar</name>
</author>
<published>2009-06-06T11:58:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ba7e4d13fc7e25af1d167d40e6f028298dfc55ad'/>
<id>urn:sha1:ba7e4d13fc7e25af1d167d40e6f028298dfc55ad</id>
<content type='text'>
The PEBS+LBR decoding magic needs the insn_get_length() infrastructure
to be able to decode x86 instruction length.

So split it out of KPROBES dependency and make it enabled when either
KPROBES or PERF_EVENTS is enabled.

Cc: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Cc: Masami Hiramatsu &lt;mhiramat@redhat.com&gt;
Cc: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
LKML-Reference: &lt;new-submission&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>Merge branch 'x86-rwsem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip</title>
<updated>2010-02-28T18:41:35Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2010-02-28T18:41:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d6cd4715e21508bebbb1928c91d628bd65f5de5f'/>
<id>urn:sha1:d6cd4715e21508bebbb1928c91d628bd65f5de5f</id>
<content type='text'>
* 'x86-rwsem-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86-64, rwsem: Avoid store forwarding hazard in __downgrade_write
  x86-64, rwsem: 64-bit xadd rwsem implementation
  x86: Fix breakage of UML from the changes in the rwsem system
  x86-64: support native xadd rwsem implementation
  x86: clean up rwsem type system
</content>
</entry>
<entry>
<title>Merge branch 'x86-io-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip</title>
<updated>2010-02-28T18:37:40Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2010-02-28T18:37:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=85fe20bfd415af0a2e93bd1166533d4a6eb591ea'/>
<id>urn:sha1:85fe20bfd415af0a2e93bd1166533d4a6eb591ea</id>
<content type='text'>
* 'x86-io-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86: Merge io.h
  x86: Simplify flush_write_buffers()
  x86: Clean up mem*io functions.
  x86-64: Use BUILDIO in io_64.h
  x86-64: Reorganize io_64.h
  x86-32: Remove _local variants of in/out from io_32.h
  x86-32: Move XQUAD definitions to numaq.h
</content>
</entry>
<entry>
<title>x86-32: Rewrite 32-bit atomic64 functions in assembly</title>
<updated>2010-02-26T04:47:30Z</updated>
<author>
<name>Luca Barbieri</name>
</author>
<published>2010-02-24T09:54:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a7e926abc3adfbd2e5e20d2b46177adb4e313915'/>
<id>urn:sha1:a7e926abc3adfbd2e5e20d2b46177adb4e313915</id>
<content type='text'>
This patch replaces atomic64_32.c with two assembly implementations,
one for 386/486 machines using pushf/cli/popf and one for 586+ machines
using cmpxchg8b.

The cmpxchg8b implementation provides the following advantages over the
current one:

1. Implements atomic64_add_unless, atomic64_dec_if_positive and
   atomic64_inc_not_zero

2. Uses the ZF flag changed by cmpxchg8b instead of doing a comparison

3. Uses custom register calling conventions that reduce or eliminate
   register moves to suit cmpxchg8b

4. Reads the initial value instead of using cmpxchg8b to do that.
   Currently we use lock xaddl and movl, which seems the fastest.

5. Does not use the lock prefix for atomic64_set
   64-bit writes are already atomic, so we don't need that.
   We still need it for atomic64_read to avoid restoring a value
   changed in the meantime.

6. Allocates registers as well or better than gcc

The 386 implementation provides support for 386 and 486 machines.
386/486 SMP is not supported (we dropped it), but such support can be
added easily if desired.

A pure assembly implementation is required due to the custom calling
conventions, and desire to use %ebp in atomic64_add_return (we need
7 registers...), as well as the ability to use pushf/popf in the 386
code without an intermediate pop/push.

The parameter names are changed to match the convention in atomic_64.h

Changes in v3 (due to rebasing to tip/x86/asm):
- Patches atomic64_32.h instead of atomic_32.h
- Uses the CALL alternative mechanism from commit
  1b1d9258181bae199dc940f4bd0298126b9a73d9

Changes in v2:
- Merged 386 and cx8 support in the same patch
- 386 support now done in assembly, C code no longer used at all
- cmpxchg64 is used for atomic64_cmpxchg
- stop using macros, use one-line inline functions instead
- miscellanous changes and improvements

Signed-off-by: Luca Barbieri &lt;luca@luca-barbieri.com&gt;
LKML-Reference: &lt;1267005265-27958-5-git-send-email-luca@luca-barbieri.com&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</content>
</entry>
<entry>
<title>x86: Clean up mem*io functions.</title>
<updated>2010-02-05T21:57:33Z</updated>
<author>
<name>Brian Gerst</name>
</author>
<published>2010-02-05T14:37:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6175ddf06b6172046a329e3abfd9c901a43efd2e'/>
<id>urn:sha1:6175ddf06b6172046a329e3abfd9c901a43efd2e</id>
<content type='text'>
Iomem has no special significance on x86.  Use the standard mem*
functions instead of trying to call other versions.  Some fixups
are needed to match the function prototypes.

Signed-off-by: Brian Gerst &lt;brgerst@gmail.com&gt;
LKML-Reference: &lt;1265380629-3212-6-git-send-email-brgerst@gmail.com&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</content>
</entry>
<entry>
<title>x86, lib: Add wbinvd smp helpers</title>
<updated>2010-01-23T00:05:42Z</updated>
<author>
<name>Borislav Petkov</name>
</author>
<published>2010-01-22T15:01:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a7b480e7f30b3813353ec009f10f2ac7a6669f3b'/>
<id>urn:sha1:a7b480e7f30b3813353ec009f10f2ac7a6669f3b</id>
<content type='text'>
Add wbinvd_on_cpu and wbinvd_on_all_cpus stubs for executing wbinvd on a
particular CPU.

[ hpa: renamed lib/smp.c to lib/cache-smp.c ]
[ hpa: wbinvd_on_all_cpus() returns int, but wbinvd() returns
  void.  Thus, the former cannot be a macro for the latter,
  replace with an inline function. ]

Signed-off-by: Borislav Petkov &lt;borislav.petkov@amd.com&gt;
LKML-Reference: &lt;1264172467-25155-2-git-send-email-bp@amd64.org&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</content>
</entry>
<entry>
<title>x86-64: support native xadd rwsem implementation</title>
<updated>2010-01-14T06:39:50Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2010-01-13T02:16:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bafaecd11df15ad5b1e598adc7736afcd38ee13d'/>
<id>urn:sha1:bafaecd11df15ad5b1e598adc7736afcd38ee13d</id>
<content type='text'>
This one is much faster than the spinlock based fallback rwsem code,
with certain artifical benchmarks having shown 300%+ improvement on
threaded page faults etc.

Again, note the 32767-thread limit here. So this really does need that
whole "make rwsem_count_t be 64-bit and fix the BIAS values to match"
extension on top of it, but that is conceptually a totally independent
issue.

NOT TESTED! The original patch that this all was based on were tested by
KAMEZAWA Hiroyuki, but maybe I screwed up something when I created the
cleaned-up series, so caveat emptor..

Also note that it _may_ be a good idea to mark some more registers
clobbered on x86-64 in the inline asms instead of saving/restoring them.
They are inline functions, but they are only used in places where there
are not a lot of live registers _anyway_, so doing for example the
clobbers of %r8-%r11 in the asm wouldn't make the fast-path code any
worse, and would make the slow-path code smaller.

(Not that the slow-path really matters to that degree. Saving a few
unnecessary registers is the _least_ of our problems when we hit the slow
path. The instruction/cycle counting really only matters in the fast
path).

Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
LKML-Reference: &lt;alpine.LFD.2.00.1001121810410.17145@localhost.localdomain&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</content>
</entry>
</feed>
