Home | History | Annotate | Download | only in include
History log of /src/sys/arch/x86/include/i82489var.h
RevisionDateAuthorComments
 1.21  21-May-2020  ad - Recalibrate the APIC timer using the TSC, once the TSC has in turn been
recalibrated using the HPET. This gets the clock interrupt firing more
closely to HZ.

- Undo change with recent Xen merge and go back to starting the clocks in
initclocks() on the boot CPU, and in cpu_hatch() on secondary CPUs.

- On reflection don't use HPET delay any more, it works very well but means
going over the bus. It's enough to use HPET to calibrate the TSC and
APIC.

Tested on amd64 native, xen and xen PVH.
 1.20  01-Dec-2019  maxv localify
 1.19  23-May-2017  nonaka branches: 1.19.10;
x86: Add preliminary x2APIC support.

x2APIC is used only when x2APIC is enabled in BIOS/UEFI.
LAPIC ID is not supported above 256.
 1.18  22-Apr-2017  nonaka use CR8 instead of LAPIC Task Priority register on x86-64.
 1.17  19-Apr-2017  nonaka remove prototypes of nonexistent function.
 1.16  25-Nov-2016  maxv branches: 1.16.2;
Move the virtual address of the LAPIC page out of the data segment on amd64
and i386. The old design was error-prone, and it didn't allow us to map the
data segment with large pages.

Now, the VA is allocated dynamically in the pmap bootstrap code, and entered
manually later. We go from using &local_apic to using *local_apic_va, and we
therefore need one more level of indirection in the asm code.

Discussed on tech-kern.
 1.15  16-Oct-2016  maxv Remove lapic_tpr on amd64 and i386, unused. Now, we have only one pointer
to the LAPIC page, and each register access is done with relative offsets.
 1.14  12-Jun-2011  rmind branches: 1.14.12; 1.14.30; 1.14.34;
Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.13  18-May-2011  drochner branches: 1.13.2;
remove stale declarations / empty function
 1.12  28-Apr-2008  martin branches: 1.12.14; 1.12.22; 1.12.28;
Remove clause 3 and 4 from TNF licenses
 1.11  14-Apr-2008  cegger branches: 1.11.2; 1.11.4;
- u_int32_t -> uint32_t
- ansfiy
 1.10  09-Dec-2007  jmcneill branches: 1.10.10;
Merge jmcneill-pm branch.
 1.9  03-Dec-2007  joerg branches: 1.9.2;
Revert last commit which added externs that never get defined anywhere.
At least lapic_get_timecount conflicts with the newly added lapic TC.
 1.8  03-Dec-2007  ad branches: 1.8.2;
Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
 1.7  17-Oct-2007  garbled branches: 1.7.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.6  29-Aug-2007  ad Merge most x86 changes from the vmlocking branch, except the threaded soft
interrupt stuff. This is mostly comprised of changes to the pmap modules to
work on multiprocessor systems without kernel_lock, and changes to speed up
tlb shootdowns.
 1.5  16-Feb-2006  perry branches: 1.5.24; 1.5.32; 1.5.38; 1.5.42; 1.5.44;
Change "inline" back to "__inline" in .h files -- C99 is still too
new, and some apps compile things in C89 mode. C89 keywords stay.

As per core@.
 1.4  24-Dec-2005  perry branches: 1.4.2; 1.4.4; 1.4.6;
__asm__ -> __asm
__const__ -> const
__inline__ -> inline
__volatile__ -> volatile
 1.3  27-Oct-2003  junyoung branches: 1.3.16;
Nuke __P().
 1.2  19-Jul-2003  lukem change multiple include protection #define to match filename
 1.1  26-Feb-2003  fvdl branches: 1.1.2;
Move some files out of i386 into x86, so that they can be shared with
other ports.
 1.1.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.1.2.1  03-Aug-2004  skrll Sync with HEAD
 1.3.16.3  21-Jan-2008  yamt sync with head
 1.3.16.2  03-Sep-2007  yamt sync with head.
 1.3.16.1  21-Jun-2006  yamt sync with head.
 1.4.6.1  22-Apr-2006  simonb Sync with head.
 1.4.4.1  09-Sep-2006  rpaulo sync with head
 1.4.2.1  18-Feb-2006  yamt sync with head.
 1.5.44.2  09-Jan-2008  matt sync with HEAD
 1.5.44.1  06-Nov-2007  matt sync with HEAD
 1.5.42.3  09-Dec-2007  jmcneill Sync with HEAD.
 1.5.42.2  03-Sep-2007  jmcneill Sync with HEAD.
 1.5.42.1  03-Aug-2007  jmcneill Pull in power management changes from private branch.
 1.5.38.1  03-Sep-2007  skrll Sync with HEAD.
 1.5.32.1  03-Oct-2007  garbled Sync with HEAD
 1.5.24.2  03-Dec-2007  ad Sync with HEAD.
 1.5.24.1  29-Jul-2007  ad - When zeroing/copying pages, use SSE2 movtni to avoid polluting the cache.
- By default, align assembly routines on 32-byte starting boundaries.
- There are now 8 interrupt priority levels, half of which are softints.
Update intrdefs.h to match.
- Always clear/set spinlock words - removes lots of ifdefs.
- Remove the horrible ci_self150 hack that I introduced.
- Overhaul how TLB shootdown is performed. Inspired by a similar change in
OpenBSD but implemented quite differently. This should be a lot faster
but I have not benchmarked it yet.
 1.7.2.2  27-Dec-2007  mjf Sync with HEAD.
 1.7.2.1  08-Dec-2007  mjf Sync with HEAD.
 1.8.2.2  26-Dec-2007  ad Sync with head.
 1.8.2.1  08-Dec-2007  ad Sync with head.
 1.9.2.1  11-Dec-2007  yamt sync with head.
 1.10.10.1  02-Jun-2008  mjf Sync with HEAD.
 1.11.4.1  16-May-2008  yamt sync with head.
 1.11.2.1  18-May-2008  yamt sync with head.
 1.12.28.1  06-Jun-2011  jruoho Sync with HEAD.
 1.12.22.2  31-May-2011  rmind sync with head
 1.12.22.1  26-Apr-2010  rmind Apply renovated patch to significantly reduce TLB shootdowns in x86 pmap,
also provide TLBSTATS option to measure and track TLB shootdowns. Details:

http://mail-index.netbsd.org/port-i386/2009/01/11/msg001018.html

Patch from Andrew Doran, proposed on tech-x86 [sic], in January 2009.

XXX: amd64 and xen are not yet; work in progress.
 1.12.14.1  27-Aug-2011  jym Sync with HEAD. Most notably: uvm/pmap work done by rmind@, and MP Xen
work of cherry@.

No regression observed on suspend/restore.
 1.13.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.14.34.3  26-Apr-2017  pgoyette Sync with HEAD
 1.14.34.2  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.14.34.1  04-Nov-2016  pgoyette Sync with HEAD
 1.14.30.2  28-Aug-2017  skrll Sync with HEAD
 1.14.30.1  05-Dec-2016  skrll Sync with HEAD
 1.14.12.1  03-Dec-2017  jdolecek update from HEAD
 1.16.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.19.10.1  08-Apr-2020  martin Merge changes from current as of 20200406

RSS XML Feed