Home | History | Annotate | only in /src/sys/rump/librump/rumpkern/arch/x86
History log of /src/sys/rump/librump/rumpkern/arch/x86
RevisionDateAuthorComments
 1.2 22-Apr-2015  pooka Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.12.1 06-Jun-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file Makefile.inc was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2 26-Jan-2016  pooka branches: 1.2.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 22-Apr-2015  pooka branches: 1.1.2;
Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.
 1.1.2.3 19-Mar-2016  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 22-Apr-2015  skrll file rump_x86_abi.c was added on branch nick-nhusb on 2015-06-06 14:40:29 +0000
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 26-Jan-2016  jdolecek file rump_x86_abi.c was added on branch tls-maxphys on 2017-12-03 11:39:16 +0000
 1.5 21-Aug-2022  riastradh rump/x86: Need x86/cpufunc.h for declaration of wbinvd.
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 22-Apr-2015  pooka Apparently not all ports define struct clockframe in cpu.h, so we cannot
provide our definition that way. Instead, generate the struct clockframe
passed to hardclock() in MD code.
 1.2 15-Mar-2014  pooka branches: 1.2.4; 1.2.6; 1.2.10; 1.2.12;
Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.1 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.2.12.2 19-Mar-2016  skrll Sync with HEAD
 1.2.12.1 06-Jun-2015  skrll Sync with HEAD
 1.2.10.3 03-Dec-2017  jdolecek update from HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 15-Mar-2014  tls file rump_x86_cpu.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 15-Mar-2014  yamt file rump_x86_cpu.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 15-Mar-2014  rmind file rump_x86_cpu.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2 15-Jun-2020  msaitoh Serialize rdtsc using with lfence, mfence or cpuid to read TSC more precisely.

x86/x86/tsc.c rev. 1.67 reduced cache problem and got big improvement, but it
still has room. I measured the effect of lfence, mfence, cpuid and rdtscp.
The impact to TSC skew and/or drift is:

AMD: mfence > rdtscp > cpuid > lfence-serialize > lfence = nomodify
Intel: lfence > rdtscp > cpuid > nomodify

So, mfence is the best on AMD and lfence is the best on Intel. If it has no
SSE2, we can use cpuid.

NOTE:
- An AMD's document says DE_CFG_LFENCE_SERIALIZE bit can be used for
serializing, but it's not so good.
- On Intel i386(not amd64), it seems the improvement is very little.
- rdtscp instruct can be used as serializing instruction + rdtsc, but
it's not good as [lm]fence. Both Intel and AMD's document say that
the latency of rdtscp is bigger than rdtsc, so I suspect the difference
of the result comes from it.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_x86_cpu_counter.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_x86_cpu_counter.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_x86_cpu_counter.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.5 21-Aug-2022  riastradh rump/x86: Add stubs for pmap_resident_count, pmap_wired_count.

These are no longer static inlines, now that struct pmap is private.
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 17-Apr-2015  pooka Give the kernel/local pmaps actual storage.

That way friendly neighborhood macros won't go scribbling
in the wrong places.
 1.2 03-Apr-2015  pooka Use RUMP_PMAP_KERNEL and RUMP_PMAP_LOCAL to denote
kernel and local client pmaps, respectively.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.12.3 19-Mar-2016  skrll Sync with HEAD
 1.1.12.2 06-Jun-2015  skrll Sync with HEAD
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_x86_pmap.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_x86_pmap.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_x86_pmap.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_x86_spinlock.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_x86_spinlock.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_x86_spinlock.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_x86_spl.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_x86_spl.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_x86_spl.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000

RSS XML Feed