Add Centaur cpuid and family 7 to check whether the TSC counter is invariant.
Recent Zhaoxin CPUs have an invariant TSC and advertise that through
CPUID 80000007, as Intel and AMD do.
Allows choosing the TSC timecounter as more reliable than HPET.
XXX pullup-11, and perhaps netbsd-10.
mips: create ci_shootdowncpus early so it's available for MP pmap_update
When using ENABLE_MIPS_4KB_PAGE on OCTEON with an MULTIPROCESSOR kernel
an early pmap_update is triggered which requires ci_shootdowncpus to be
vailable.
A bunch of fixes to wscons accumulated over last few months.
Glyph cache:
- Handle situation when it can not hold a single bucket -
fixes garbage after loading a font that does not fit in VRAM.
- Make sure that glpyhcache_wipe() clears the whole map -
fixes wrong glyphs after a font change when cache is small.
- Return GC_NOPE when cache has no buckets - fixes NULL deref
when someone tries to draw before initializing the cache.
- Don't allow glyphcache_try() to steal when only one bucket
exists - fixes corruption for second color on small caches.
vcons:
- When loading font only call show_screen_cb for visible
screen - fixes corrpution of visible screen when loading font
for another screen.
- Make underlined blanks go through putchar() instead of
erasecols() - fixes loss of underlined spaces on screen
redraw.
[12 lines not shown]
mips: remove the OCTEON workaround for PR/59236 as fixed by PR/60664
The rdhwr emulation bug observed in PR/59236 was fixed by the patch in
PR/60664 so the workaround applied for PR/59236 can be safely removed.
pool_cache(9): Allocate struct pool_cache with declared alignment.
The definition of struct pool_cache has __aligned(CACHE_LINE_SIZE) on
the pc_fullgroups member, so the compiler will assume struct
pool_cache pointers are aligned as such.
As a space optimization on uniprocessor systems, we define the
variable `coherency_unit' (as part of the module ABI) to be
COHERENCY_UNIT (often 64 or 128) in MULTIPROCESSOR builds, but
to ALIGNBYTES+1 (often 4, 8, or 16) for !MULTIPROCESSOR builds where
cache line sharing isn't as much of a problem.
But this isn't safe as an optimization for allocating objects that
have statically declared (as part of their ABI) CACHE_LINE_SIZE
alignment.
PR port-evbmips/60812: UBSan: Undefined Behavior in [sys-src] member
access within misaligned address [..] for type '[..]' which requires
128 byte alignment
proc(9): Allocate struct proc with declared alignment.
The definition of struct proc includes __aligned(COHERENCY_UNIT) on
the p_auxlock member, so the compiler will assume struct proc
pointers are aligned as such.
As a space optimization on uniprocessor systems, we define the
variable `coherency_unit' (as part of the module ABI) to be
COHERENCY_UNIT (often 64 or 128) in MULTIPROCESSOR builds, but
toALIGNBYTES+1 (often 4, 8, or 16) for !MULTIPROCESSOR builds where
cache line sharing isn't as much of a problem.
But this isn't safe as an optimization for allocating objects that
have statically declared (as part of their ABI) COHERENCY_UNIT
alignment.
PR port-evbmips/60812: UBSan: Undefined Behavior in [sys-src] member
access within misaligned address [..] for type '[..]' which requires
128 byte alignment
vnode(9): Allocate vnodes with declared alignment.
The definition of struct vnode_impl includes various
__aligned(COHERENCY_UNIT), so the compiler will assume struct vnode
pointers are aligned as such.
As a space optimization on uniprocessor systems, we define the
variable `coherency_unit' (as part of the module ABI) to be
COHERENCY_UNIT (often 64 or 128) in MULTIPROCESSOR builds, but
toALIGNBYTES+1 (often 4, 8, or 16) for !MULTIPROCESSOR builds where
cache line sharing isn't as much of a problem.
But this isn't safe as an optimization for allocating objects that
have statically declared (as part of their ABI) COHERENCY_UNIT
alignment.
PR port-evbmips/60812: UBSan: Undefined Behavior in [sys-src] member
access within misaligned address [..] for type '[..]' which requires
128 byte alignment
tools/compat: remove obsolete requirement about ncurses-devel on Linux
texinfo/info required it, but it has no longer been built during
tools build in src/tools/texinfo since texinfo 4.8a import, by
patching SUBDIRS lines in external/gpl2/texinfo/dist/Makefile.in.