Home | History | Annotate | Download | only in include
History log of /src/sys/arch/x86/include/sysarch.h
RevisionDateAuthorComments
 1.15  19-Jun-2020  maxv localify
 1.14  13-Jul-2018  maxv Remove the X86PMC code I had written, replaced by tprof. Many defines
become unused in specialreg.h, so remove them. We don't want to add
defines all the time, there are countless PMCs on many generations, and
it's better to just inline the event/unit values.
 1.13  12-Jul-2018  maxv Remove the kernel PMC code. Sent yesterday on tech-kern@.

This change:

* Removes "options PERFCTRS", the associated includes, and the associated
ifdefs. In doing so, it removes several XXXSMPs in the MI code, which is
good.

* Removes the PMC code of ARM XSCALE.

* Removes all the pmc.h files. They were all empty, except for ARM XSCALE.

* Reorders the x86 PMC code not to rely on the legacy pmc.h file. The
definitions are put in sysarch.h.

* Removes the kern/sys_pmc.c file, and along with it, the sys_pmc_control
and sys_pmc_get_info syscalls. They are marked as OBSOL in kern,
netbsd32 and rump.

* Removes the pmc_evid_t and pmc_ctr_t types.

* Removes all the associated man pages. The sets are marked as obsolete.
 1.12  12-Jul-2017  maxv branches: 1.12.4; 1.12.6;
Properly handle overflows, and take them into account in userland.
 1.11  10-Mar-2017  maxv branches: 1.11.6;
Switch to per-CPU PMC results, and completely rewrite the pmc(1) tool. Now
the PMCs are system-wide, fine-grained and more tunable by the user.

We don't do application tracking, since it would require to store the PMC
values in mdproc and starting/stopping the counters on each context switch.
While this doesn't seem to be particularly difficult to achieve, I don't
think it is really interesting; and if someone really wants to measure
the performance of an application, they can simply schedctl it to a cpu
and look at the PMC results for this cpu.

Note that several options are implemented but not yet used.
 1.10  08-Mar-2017  maxv Add a version argument, set to 1, and check it in usr.bin/pmc. Use uint32_t
instead uint8_t since we now need 12bit selectors (10h family). And while
here KNF.
 1.9  07-Jul-2010  chs branches: 1.9.18; 1.9.36; 1.9.40; 1.9.44;
add the guts of TLS support on amd64. based on joerg's patch,
reworked by me to support 32-bit processes as well.
we now keep %fs and %gs loaded with the user values
while in the kernel, which means we don't need to
reload them when returning to user mode.
 1.8  21-Mar-2009  ad branches: 1.8.2; 1.8.4;
PR port-i386/40143 Viewing an mpeg transport stream with mplayer causes crash

Fix numerous problems:

1. LDT updates are not atomic.

2. Number of processes running with private LDTs and/or I/O bitmaps
is not capped. System with high maxprocs can be paniced.

3. LDTR can be leaked over context switch.

4. GDT slot allocations can race, giving the same LDT slot to two procs.

5. Incomplete interrupt/trap frames can be stacked.

6. In some rare cases segment faults are not handled correctly.
 1.7  28-Apr-2008  martin branches: 1.7.8; 1.7.10; 1.7.14;
Remove clause 3 and 4 from TNF licenses
 1.6  10-Nov-2007  ad branches: 1.6.14; 1.6.16; 1.6.18;
- When computing the TSC frequency, call i8254_delay() and not DELAY().
- Use atomics to adjust the pmap reference count, instead of taking locks.
- Implement I386_{SET,GET}_{FS,GS}BASE, allowing %fs and %gs to be used
as per-thread registers. This is compatible with FreeBSD.
- Run patches after we have attached CPUs, since we then know if the
system is uniprocessor or not. Eliminates a lot of #ifdef MULTIPROCESSOR
and makes running MP kernels on UP systems cheaper.
- Patch out many of the 'lock' prefixes to nops if uniprocessor.
- Do a wbinvd after patching to ensure that the trace/instruction cache
is up to date.
 1.5  17-Oct-2007  garbled branches: 1.5.2;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.4  16-Sep-2007  ragge branches: 1.4.4;
i386 -> __i386__
 1.3  23-Jun-2007  dsl branches: 1.3.2; 1.3.10; 1.3.12; 1.3.14;
Split x86_set/get_ldt() so they are callable with kernel buffers.
For linux emulation code.
 1.2  16-Apr-2007  ad branches: 1.2.2; 1.2.4; 1.2.6;
Fix error in previous.
 1.1  16-Apr-2007  ad Share the sysarch stuff between the x86 ports. PR kern/36046.
 1.2.6.5  03-Dec-2007  ad Sync with HEAD.
 1.2.6.4  09-Oct-2007  ad Sync with head.
 1.2.6.3  15-Jul-2007  ad Sync with head.
 1.2.6.2  09-Jun-2007  ad Sync with head.
 1.2.6.1  16-Apr-2007  ad file sysarch.h was added on branch vmlocking on 2007-06-09 21:37:04 +0000
 1.2.4.2  07-May-2007  yamt sync with head.
 1.2.4.1  16-Apr-2007  yamt file sysarch.h was added on branch yamt-idlelwp on 2007-05-07 10:55:05 +0000
 1.2.2.2  03-Oct-2007  garbled Sync with HEAD
 1.2.2.1  26-Jun-2007  garbled Sync with HEAD.
 1.3.14.4  15-Nov-2007  yamt sync with head.
 1.3.14.3  27-Oct-2007  yamt sync with head.
 1.3.14.2  03-Sep-2007  yamt sync with head.
 1.3.14.1  23-Jun-2007  yamt file sysarch.h was added on branch yamt-lazymbuf on 2007-09-03 14:31:21 +0000
 1.3.12.2  09-Jan-2008  matt sync with HEAD
 1.3.12.1  06-Nov-2007  matt sync with HEAD
 1.3.10.2  11-Nov-2007  joerg Sync with HEAD.
 1.3.10.1  02-Oct-2007  joerg Sync with HEAD.
 1.3.2.2  11-Jul-2007  mjf Sync with head.
 1.3.2.1  23-Jun-2007  mjf file sysarch.h was added on branch mjf-ufs-trans on 2007-07-11 20:03:16 +0000
 1.4.4.1  13-Nov-2007  bouyer Sync with HEAD
 1.5.2.1  19-Nov-2007  mjf Sync with HEAD.
 1.6.18.3  11-Aug-2010  yamt sync with head.
 1.6.18.2  04-May-2009  yamt sync with head.
 1.6.18.1  16-May-2008  yamt sync with head.
 1.6.16.1  18-May-2008  yamt sync with head.
 1.6.14.1  02-Jun-2008  mjf Sync with HEAD.
 1.7.14.3  24-Oct-2010  jym Sync with HEAD
 1.7.14.2  01-Nov-2009  jym Sync with HEAD.
 1.7.14.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.7.10.1  04-Apr-2009  snj Pull up following revision(s) (requested by ad in ticket #656):
sys/arch/amd64/amd64/gdt.c: revision 1.21 via patch
sys/arch/amd64/amd64/machdep.c: revision 1.129 via patch
sys/arch/i386/i386/gdt.c: revision 1.47 via patch
sys/arch/i386/i386/kvm86.c: revision 1.17 via patch
sys/arch/i386/i386/locore.S: revision 1.85 via patch
sys/arch/i386/i386/machdep.c: revision 1.666 via patch
sys/arch/i386/i386/vector.S: revision 1.45 via patch
sys/arch/i386/include/pcb.h: revision 1.47 via patch
sys/arch/x86/include/pmap.h: revision 1.22 via patch
sys/arch/x86/include/sysarch.h: revision 1.8 via patch
sys/arch/x86/x86/pmap.c: revision 1.80 via patch
sys/arch/x86/x86/sys_machdep.c: revision 1.17 via patch
sys/compat/linux/arch/i386/linux_machdep.c: revision 1.143 via patch
sys/kern/init_main.c: revision 1.384 via patch
PR port-i386/40143 Viewing an mpeg transport stream with mplayer causes crash
Fix numerous problems:
1. LDT updates are not atomic.
2. Number of processes running with private LDTs and/or I/O bitmaps
is not capped. System with high maxprocs can be paniced.
3. LDTR can be leaked over context switch.
4. GDT slot allocations can race, giving the same LDT slot to two procs.
5. Incomplete interrupt/trap frames can be stacked.
6. In some rare cases segment faults are not handled correctly.
 1.7.8.1  28-Apr-2009  skrll Sync with HEAD.
 1.8.4.1  05-Mar-2011  rmind sync with head
 1.8.2.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.9.44.1  21-Apr-2017  bouyer Sync with HEAD
 1.9.40.1  20-Mar-2017  pgoyette Sync with HEAD
 1.9.36.1  28-Aug-2017  skrll Sync with HEAD
 1.9.18.1  03-Dec-2017  jdolecek update from HEAD
 1.11.6.1  01-Aug-2017  snj Pull up following revision(s) (requested by maxv in ticket #164):
distrib/sets/lists/base/md.amd64: revision 1.269
distrib/sets/lists/debug/md.amd64: revision 1.97
sys/arch/amd64/conf/GENERIC: revision 1.460
sys/arch/amd64/conf/files.amd64: revision 1.89
sys/arch/i386/conf/GENERIC: revision 1.1157
sys/arch/i386/conf/files.i386: revision 1.379
sys/arch/i386/i386/i386_trap.S: revision 1.7-1.8
sys/arch/i386/include/frameasm.h: revision 1.16
sys/arch/x86/include/sysarch.h: revision 1.12
sys/arch/x86/x86/pmc.c: revision 1.8-1.10
sys/arch/x86/x86/sys_machdep.c: revision 1.36
sys/arch/xen/conf/files.compat: revision 1.26
sys/secmodel/suser/secmodel_suser.c: revision 1.43
sys/sys/kauth.h: revision 1.74
usr.bin/pmc/Makefile: revision 1.5
usr.bin/pmc/pmc.1: revision 1.12-1.13
usr.bin/pmc/pmc.c: revision 1.24-1.25
style
--
style
--
Disable interrupts for T_NMI (inline calltrap). Note that there's still a
way to evade the NMI mode here, if a segment register faults in
INTRFASTEXIT; but we don't care. I didn't test this change, but it seems
fine enough.
--
Make the PMC syscalls privileged.
--
Check argc, and add a message.
--
include opt_pmc.h
--
Build the pmc tool on amd64.
--
Properly handle overflows, and take them into account in userland.
--
Update.
--
Enable PMCs by default.
--
Sort sections. Fix macro usage.
 1.12.6.1  10-Jun-2019  christos Sync with HEAD
 1.12.4.1  28-Jul-2018  pgoyette Sync with HEAD

RSS XML Feed