Home | History | Annotate | Download | only in include
History log of /src/sys/arch/i386/include/pcb.h
RevisionDateAuthorComments
 1.61  24-Apr-2025  kre offsetof() needs <stddef.h> (<sys/stddef.h>)

Include <sys/stddef.h> when offsetof() is to be used.

First step in fixing x86 builds.
 1.60  24-Apr-2025  riastradh amd64: Allocate FPU save state outside pcb if it's too large.

We have seen x86_fpu_save_size values (CPUID[EAX=0x0d, ECX=0].ECX) as
large as 11008 bytes, notably with Intel AMX TILEDATA's 8192-byte
state.

We only do this for user threads, and only on machines where it's
necessary, to avoid incurring much overhead. There is still a tiny
bit of overhead when saving and restoring the FPU state by using a
pointer indirection instead of arithmetic indirection for access to
struct pcb::pcb_savefpu, but this is probably a drop in the bucket
compared to the memory traffic incurred by the FPU state save/restore
anyway.

For now, these paths are mostly disabled on i386. We could enable
them but it will require either rewriting cpu_uarea_alloc/free for
i386, or adopting a guard page like amd64 does, which might be costly
and so should be undertaken only with some thought and care. And
since Intel AMX instructions only work in 64-bit mode, it's not
likely to be useful on i386.

PR port-amd64/57661: Crash when booting on Xeon Silver 4416+ in
KVM/Qemu

These changes, as a side effect, may fix:

PR kern/57258: kthread_fpu_enter/exit problem

by making sure to allocate an FPU save space that is large enough to
guarantee fpu_kern_enter/leave work safely, instead of just using a
union savefpu object on the stack (which, at 576 bytes, may be too
small on some machines, particularly with AVX512 requiring ~2.5K).
(But we'll have to do some extra work with kthread_fpu_enter/exit_md
-- if we try doing them again on x86 -- to actually allocate the
separate pcb on these machines!)
 1.59  12-Oct-2019  maxv branches: 1.59.32;
Rewrite the FPU code on x86. This greatly simplifies the logic and removes
the dependency on IPL_HIGH. NVMM is updated accordingly. Posted on
port-amd64 a week ago.

Bump the kernel version to 9.99.16.
 1.58  26-Jul-2018  maxv Rework dbregs, to switch the registers during context switches, and not on
each user->kernel transition via userret. Reloads of DR6/DR7 are expensive
on both native and xen.
 1.57  31-Oct-2017  maxv branches: 1.57.2; 1.57.4;
Don't embed our own values in the reserved fields of the XSAVE area, it
really is a bad idea. Move them into the PCB.
 1.56  12-Aug-2017  maxv Remove the vm86 fields from the pcb.
 1.55  23-Feb-2017  kamil Introduce PT_GETDBREGS and PT_SETDBREGS in ptrace(2) on i386 and amd64

This interface is modeled after FreeBSD API with the usage.

This replaced previous watchpoint API. The previous one was introduced
recently in NetBSD-current and remove its spurs without any
backward-compatibility.

Design choices for Debug Register accessors:
- exec() (TRAP_EXEC event) must remove debug registers from LWP
- debug registers are only per-LWP, not per-process globally
- debug registers must not be inherited after (v)forking a process
- debug registers must not be inherited after forking a thread
- a debugger is responsible to set global watchpoints/breakpoints with the
debug registers, to achieve this PTRACE_LWP_CREATE/PTRACE_LWP_EXIT event
monitoring function is designed to be used
- debug register traps must generate SIGTRAP with si_code TRAP_DBREG
- debugger is responsible to retrieve debug register state to distinguish
the exact debug register trap (DR6 is Status Register on x86)
- kernel must not remove debug register traps after triggering a trap event
a debugger is responsible to detach this trap with appropriate PT_SETDBREGS
call (DR7 is Control Register on x86)
- debug registers must not be exposed in mcontext
- userland must not be allowed to set a trap on the kernel

Implementation notes on i386 and amd64:
- the initial state of debug register is retrieved on boot and this value is
stored in a local copy (initdbregs), this value is used to initialize dbreg
context after PT_GETDBREGS
- struct dbregs is stored in pcb as a pointer and by default not initialized
- reserved registers (DR4-DR5, DR9-DR15) are ignored

Further ideas:
- restrict this interface with securelevel

Tested on real hardware i386 (Intel Pentium IV) and amd64 (Intel i7).

This commit enables 390 debug register ATF tests in kernel/arch/x86.
All tests are passing.

This commit does not cover netbsd32 compat code. Currently other interface
PT_GET_SIGINFO/PT_SET_SIGINFO is required in netbsd32 compat code in order to
validate reliably PT_GETDBREGS/PT_SETDBREGS.

This implementation does not cover FreeBSD specific defines in their
<x86/reg.h>: DBREG_DR7_LOCAL_ENABLE, DBREG_DR7_GLOBAL_ENABLE, DBREG_DR7_LEN_1
etc. These values tend to be reinvented by each tracer on its own. GNU
Debugger (GDB) works with NetBSD debug registers after adding this patch:

--- gdb/amd64bsd-nat.c.orig 2016-02-10 03:19:39.000000000 +0000
+++ gdb/amd64bsd-nat.c
@@ -167,6 +167,10 @@ amd64bsd_target (void)

#ifdef HAVE_PT_GETDBREGS

+#ifndef DBREG_DRX
+#define DBREG_DRX(d,x) ((d)->dr[(x)])
+#endif
+
static unsigned long
amd64bsd_dr_get (ptid_t ptid, int regnum)
{


Another reason to stop introducing unpopular defines covering machine
specific register macros is that these value varies across generations of
the same CPU family.

GDB demo:
(gdb) c
Continuing.

Watchpoint 2: traceme

Old value = 0
New value = 16
main (argc=1, argv=0x7f7fff79fe30) at test.c:8
8 printf("traceme=%d\n", traceme);

(Currently the GDB interface is not reliable due to NetBSD support bugs)

Sponsored by <The NetBSD Foundation>
 1.54  21-Apr-2014  christos branches: 1.54.4; 1.54.8; 1.54.12;
disable assert for lint.
 1.53  20-Feb-2014  dsl branches: 1.53.2;
Move the amd64 and i386 pcb to the bottom of the uarea, and move the
kernel stack to the top.
Change the pcb layouts so that fpu save area is at the end and is
64byte aligned ready for xsave (saving the ymm registers).
Welcome to 6.99.32
 1.52  12-Feb-2014  dsl Change i386 to use x86/fpu.c instead of i386/isa/npx.c
This changes the trap10 and trap13 code to call directly into fpu.c,
removing all the code for T_ARITHTRAP, T_XMM and T_FPUNDA from i386/trap.c
Not all of the code thate appeared to handle fpu traps was ever called!
Most of the changes just replace the include of machine/npx.h with x86/fpu.h
(or remove it entirely).
 1.51  19-Jan-2014  dsl Remove the unused 'struct md_coredump'.
 1.50  01-Dec-2013  christos revert fpu/pcu changes until we figure out what's wrong; they cause random
freezes
 1.49  23-Oct-2013  drochner Use the MI "pcu" framework for bookkeeping of npx/fpu states on x86.
This reduces the amount of MD code enormously, and makes it easier
to implement support for newer CPU features which require more fpu
state, or for fpu usage by the kernel.
For access to FPU state across CPUs, an xcall kthread is used now
rather than a dedicated IPI.
No user visible changes intended.
 1.48  23-Apr-2010  joerg branches: 1.48.8; 1.48.18; 1.48.22;
Use struct segment_descriptor for pcb_fsd and pcb_gsd instead of int[2].
 1.47  21-Mar-2009  ad branches: 1.47.2; 1.47.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.46  26-Oct-2008  mrg branches: 1.46.2; 1.46.4; 1.46.8;
- use _I386_FOO_H for multi-include protection
- use <i386/foo.h> in a couple of places
 1.45  28-Apr-2008  martin branches: 1.45.6;
Remove clause 3 and 4 from TNF licenses
 1.44  05-Jan-2008  yamt branches: 1.44.6; 1.44.8; 1.44.10;
remove a stale comment.
 1.43  04-Jan-2008  yamt fix a bug in the previous. (per-cpu tss change)
keep iopl in pcb so that it won't lost.
 1.42  04-Jan-2008  yamt i386:
- make tss per-cpu. this considerably speeds up context switch for,
at least, pentium4, where ltr instruction seems very slow.
i386, xen:
- kill cpu_maxproc.
kvm86:
- adapt to per-cpu tss.
- cleanup and simplify.
- move kvm86_mp_lock to more meaningful place.
- disable preemption during a call.
 1.41  10-Nov-2007  ad branches: 1.41.6;
fsbase/gsbase:

- Fix a few bugs with it, in particular fork/exec handling.
- Store the descriptors in the PCB, not in the LWP.
 1.40  04-Mar-2007  christos branches: 1.40.2; 1.40.18; 1.40.20; 1.40.24; 1.40.26;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.39  02-Mar-2007  ad Define pcb_esp0.
 1.38  02-May-2006  drochner branches: 1.38.14;
-explicitely align "struct savexmm" so that we don't get surprised
if we play with the PCB
-remove historical "struct emcsts"; there is no support in context
switching code for ages (if there has ever been)
 1.37  20-Feb-2004  yamt branches: 1.37.16; 1.37.30; 1.37.32; 1.37.34; 1.37.36; 1.37.38;
defer pmap switching until it's really needed
to avoid frequent loading of cr3 register, which involves tlb flush.

with some fixes/improvements from Stephan Uphoff and Bang Jun-Young.
 1.36  09-Nov-2003  tsutsui Use #if defined(_KERNEL_OPT) to protect #include "opt_xxx.h"
from building LKM etc. Suggested by mrg.
 1.35  24-Aug-2003  chs add support for non-executable mappings (where the hardware allows this)
and make the stack and heap non-executable by default. the changes
fall into two basic catagories:

- pmap and trap-handler changes. these are all MD:
= alpha: we already track per-page execute permission with the (software)
PG_EXEC bit, so just have the trap handler pay attention to it.
= i386: use a new GDT segment for %cs for processes that have no
executable mappings above a certain threshold (currently the
bottom of the stack). track per-page execute permission with
the last unused PTE bit.
= powerpc/ibm4xx: just use the hardware exec bit.
= powerpc/oea: we already track per-page exec bits, but the hardware only
implements non-exec mappings at the segment level. so track the
number of executable mappings in each segment and turn on the no-exec
segment bit iff the count is 0. adjust the trap handler to deal.
= sparc (sun4m): fix our use of the hardware protection bits.
fix the trap handler to recognize text faults.
= sparc64: split the existing unified TSB into data and instruction TSBs,
and only load TTEs into the appropriate TSB(s) for the permissions.
fix the trap handler to check for execute permission.
= not yet implemented: amd64, hppa, sh5

- changes in all the emulations that put a signal trampoline on the stack.
instead, we now put the trampoline into a uvm_aobj and map that into
the process separately.

originally from openbsd, adapted for netbsd by me.
 1.34  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.33  08-Oct-2002  fvdl branches: 1.33.6;
Delete pcb_flags.
 1.32  01-Oct-2002  fvdl Merge Bill Sommerfeld's i386 MP branch. This code has some known
caveats, but works quite well in a lot of MP cases, and all
UP cases that I have tested. Parts of this will hopefully be
reworked in the not-too-distant future.
 1.31  12-May-2002  matt Eliminate commons.
 1.30  16-Feb-2002  christos save cr2 for the benefit of linux emulation, and normalize use of pcb
in trap(), i.e. always initialize *pcb and use it instead of doing it
sometimes.
 1.29  02-Aug-2001  thorpej Add support for saving/restoring SSE/SSE2 state using FXSAVE/FXRSTOR.

Reviewed by Frank.
 1.28  17-Jun-2001  sommerfeld branches: 1.28.2;
Add %fs/%gs to trap frame and save/restore them on
trap/interrupt/syscall entry from userspace.

Remove special-case "by hand" validation of fs/gs register values as
well as special handling of them in various signal handling paths.

Now, like %ds and %es, they are validated by the hardware on return to
userland.

This paves the way for the use of %fs for per-cpu data on
multiprocessor systems, and fixes an otherwise difficult-to-fix
interaction between threads/clone(2) and USER_LDT.

Discussed in advance with Frank van der Linden.
 1.27  16-Aug-2000  thorpej branches: 1.27.2;
Move the TSS selector out of the PCB and put it into mdproc. We
need to access this when we have the proclist locked for reading,
and thus cannot store it in the PCB (which may be swapped out).

As part of this, call pmap_activate() from cpu_switch() to switch
to the new address space, and refresh the PCB's copy of the LDT
selector from the pmap structure (see above paragraph). We need
to do this for MP support anyhow.

Fixes a "panic: spinlock_switchcheck: CPU 0 has 1 spin locks" via
gdt_compact() reported by Nathan Williams.
 1.26  12-Sep-1999  chs branches: 1.26.2; 1.26.10; 1.26.14;
eliminate the PMAP_NEW option by making it required for all ports.
ports which previously had no support for PMAP_NEW now implement
the pmap_k* interfaces as wrappers around the non-k versions.
 1.25  12-May-1999  thorpej Move the user-set LDT out of the PCB and into the pmap. Applications
which set the LDT and share VM space (e.g. new versions of WINE) expect
the LDT to be logically coupled to the address space. Use the new pmap_fork()
interface to copy non-shared user-set LDTs when the address space is forked.
 1.24  15-Aug-1998  mycroft branches: 1.24.8;
Assign my copyrights to TNF.
 1.23  10-Feb-1998  mrg - add defopt's for UVM, UVMHIST and PMAP_NEW.
- remove unnecessary UVMHIST_DECL's.
 1.22  06-Feb-1998  mrg add the i386 MD portions for UVM.
 1.21  08-Jan-1996  mycroft VM86 support, by John Kohl, touched up a bit by me.
 1.20  11-Oct-1995  mycroft Various changes from John Kohl and me:
Map kernel stacks only at unique addresses.
Use one TSS per process.
Add sysarch calls for modifying IOPL and the I/O permission bitmap.
Add a compacting GDT entry allocator, for TSS and LDT selectors.
Enable modifying %fs and %gs with PT_SETREGS.
Sanitize various bits of code.
 1.19  06-Aug-1995  mycroft Move the `used fpu' flag into mdproc, so it can be referenced when a process
is swapped out. Implement process_{read,write}_fpregs.
 1.18  03-May-1995  mycroft Add PCB_USEDFPU.
 1.17  01-May-1995  mycroft Remove historical garbage.
 1.16  01-May-1995  mycroft Add pcb_cr0.
 1.15  28-Mar-1995  jtc KERNEL -> _KERNEL
 1.14  08-Nov-1994  mycroft pcb.h requires segments.h now.
 1.13  05-Nov-1994  mycroft Only use ssdtosd() when creating, expanding, or copying the LDT. Keep a copy
of the result in the PCB so it can be loaded quickly on context switches.
 1.12  27-Oct-1994  cgd new RCS ID format.
 1.11  21-May-1994  cgd struct md_coredump
 1.10  21-Dec-1993  mycroft branches: 1.10.2;
Remove two unused fields.
 1.9  14-Dec-1993  mycroft Fold in most of the magnum vm changes.
 1.8  19-Sep-1993  brezak Add per-process LDT slot.
 1.7  16-Sep-1993  brezak Changes to use a trap frame for syscalls.
 1.6  27-Jun-1993  andrew branches: 1.6.4;
Re-entrancy protection.
 1.5  02-Jun-1993  cgd get rid of last bit of signal-trampoline-in-pcb hackery
 1.4  02-Jun-1993  cgd set things up so that the signal trampoline code is on the stack,
like it normally is in BSD systems. still has a bit of hair...
 1.3  22-May-1993  cgd add rcsids to everything and clean up headers
 1.2  09-May-1993  deraadt npx patches from Bruce Evans. patchkit 10002
 1.1  21-Mar-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.1  21-Mar-1993  cgd initial import of 386bsd-0.1 sources
 1.6.4.3  11-Nov-1993  mycroft pcb_cmap2 could not justify its existance.
 1.6.4.2  09-Oct-1993  mycroft Make pcb_iml an int.
 1.6.4.1  24-Sep-1993  mycroft Changes from trunk.
cpu.h: Add dummy (for now) CLKF_INTR(). #include psl.h.
endian.h: Add multiple-inclusion protection. #define _QUAD_{LOW,HIGH}WORD.
#include sys/cdefs for __P(). Don't define byte order stuff if _POSIX_SOURCE.
Remove big endian shit.
limits.h: Add {,U}QUAD_{MIN,MAX}.
psl.h: Get PSL_MB[ZO] right. Make cpl volatile just in case. Add alias for
spl0(). splnone() and splx() return int for now.
 1.10.2.2  21-Dec-1993  mycroft Remove two unused fields.
 1.10.2.1  21-Dec-1993  mycroft file pcb.h was added on branch magnum on 1993-12-21 09:47:46 +0000
 1.24.8.1  21-Jun-1999  thorpej Sync w/ -current.
 1.26.14.2  17-Jun-2001  he Pull up revision 1.28 (requested by sommerfeld):
Add %fs/%gs to trap frame and save/restore them on trap/interupt/
syscall entry from userspace.

Remove special-case ``by hand'' validation of %fs/%gs register
values s well as special handling of them in various signal
handling paths. Now, like %ds and %es, they are validated by
the hardware on return to userland.

This paves the way for the use of %fs for per-cpu data on multi-
processor systems, and fixes an otherwise difficult-to-fix
interaction between threads/clone(2) and USER_LDT.
 1.26.14.1  16-Aug-2000  thorpej Update from trunk:
Move the TSS selector out of the PCB and put it into mdproc. We
need to access this when we have the proclist locked for reading,
and thus cannot store it in the PCB (which may be swapped out).

As part of this, call pmap_activate() from cpu_switch() to switch
to the new address space, and refresh the PCB's copy of the LDT
selector from the pmap structure (see above paragraph). We need
to do this for MP support anyhow.

Fixes a "panic: spinlock_switchcheck: CPU 0 has 1 spin locks" via
gdt_compact() reported by Nathan Williams.
 1.26.10.7  24-Feb-2002  sommerfeld Resynch with mainline.
 1.26.10.6  29-Dec-2001  sommerfeld Set up per-cpu GDT.
Use %fs for per-cpu data access.
 1.26.10.5  03-Sep-2001  sommerfeld Merge with -current once more.
 1.26.10.4  18-Jun-2001  sommerfeld checkpoint merge-in-progress from mainline.
 1.26.10.3  07-Jan-2001  sommerfeld Snapshot of merge-in-progress with -current.

[Not expected to build]. Catch up with the last N months worth of
changes to -current.
 1.26.10.2  26-Jun-2000  sommerfeld Start making npx.c MP-safe; Interface to npx now specifies the process
and/or cpu to act on. Implement an IPI for MP lazy FP save.
Tested and working when only one CPU is running; untested in the MP
case since we can't run user processes on multiple CPU's yet.

Along for the ride:
- Change i386_send_ipi to take a "struct cpu_info *" rather than a cpu number.
- Turn off the "give me the brain" test IPI's.
 1.26.10.1  20-Feb-2000  sommerfeld On MULTIPROCESSOR kernels, delete the "curpcb" global variable since
it's per-CPU (it lives in struct cpu_info, defined in cpu.h)
 1.26.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.27.2.5  18-Oct-2002  nathanw Catch up to -current.
 1.27.2.4  20-Jun-2002  nathanw Catch up to -current.
 1.27.2.3  28-Feb-2002  nathanw Catch up to -current.
 1.27.2.2  24-Aug-2001  nathanw Catch up with -current.
 1.27.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.28.2.4  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.28.2.3  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.28.2.2  16-Mar-2002  jdolecek Catch up with -current.
 1.28.2.1  03-Aug-2001  lukem update to -current
 1.33.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.33.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.33.6.1  03-Aug-2004  skrll Sync with HEAD
 1.37.38.1  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.37.36.1  11-May-2006  elad sync with head
 1.37.34.1  24-May-2006  yamt sync with head.
 1.37.32.1  01-Jun-2006  kardel Sync with head.
 1.37.30.1  09-Sep-2006  rpaulo sync with head
 1.37.16.4  21-Jan-2008  yamt sync with head
 1.37.16.3  15-Nov-2007  yamt sync with head.
 1.37.16.2  03-Sep-2007  yamt sync with head.
 1.37.16.1  21-Jun-2006  yamt sync with head.
 1.38.14.1  12-Mar-2007  rmind Sync with HEAD.
 1.40.26.2  18-Feb-2008  mjf Sync with HEAD.
 1.40.26.1  19-Nov-2007  mjf Sync with HEAD.
 1.40.24.1  13-Nov-2007  bouyer Sync with HEAD
 1.40.20.1  09-Jan-2008  matt sync with HEAD
 1.40.18.1  11-Nov-2007  joerg Sync with HEAD.
 1.40.2.1  03-Dec-2007  ad Sync with HEAD.
 1.41.6.1  08-Jan-2008  bouyer Sync with HEAD
 1.44.10.3  11-Aug-2010  yamt sync with head.
 1.44.10.2  04-May-2009  yamt sync with head.
 1.44.10.1  16-May-2008  yamt sync with head.
 1.44.8.1  18-May-2008  yamt sync with head.
 1.44.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.44.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.45.6.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.46.8.3  28-Mar-2011  jym Cure sync hiccups. Code with compile errors is not really useful, heh.
 1.46.8.2  01-Nov-2009  jym Sync with HEAD.
 1.46.8.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.46.4.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.46.2.1  28-Apr-2009  skrll Sync with HEAD.
 1.47.4.1  30-May-2010  rmind sync with head
 1.47.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.48.22.1  18-May-2014  rmind sync with head
 1.48.18.2  03-Dec-2017  jdolecek update from HEAD
 1.48.18.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.48.8.1  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.53.2.1  10-Aug-2014  tls Rebase.
 1.54.12.1  21-Apr-2017  bouyer Sync with HEAD
 1.54.8.1  20-Mar-2017  pgoyette Sync with HEAD
 1.54.4.1  28-Aug-2017  skrll Sync with HEAD
 1.57.4.2  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.57.4.1  10-Jun-2019  christos Sync with HEAD
 1.57.2.1  28-Jul-2018  pgoyette Sync with HEAD
 1.59.32.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed