Age | Commit message (Collapse) | Author |
|
|
|
ok deraadt@
|
|
honour this setting and consider them level-triggered instead of `polarity
decided by the first driver to use it'.
Add explicit code to turn registration of edge-triggered interrupts 3 and 4
into level-triggered, if they were set up a level-triggered by the SRM.
Based upon a NetBSD diff which eventually got reverted in NetBSD. However,
it turns out this is necessary for the kernel to correctly run with serial
console on my Multia.
|
|
stack, for {e,}isa drivers might have a need for them way after autoconf - at
least pcic@isa does.
|
|
|
|
isa_chipset_tag_t, not an isa_chipset_tag_t *, as isa_chipset_tag_t is already
a pointer.
|
|
|
|
make its start routine point to cpu_halt, just in case.
|
|
behind a bridge, if the SRM didn't pick an interrupt line for them.
|
|
stash the address of the user structure to avoid having to always
follow two pointers to get to the address of the onfault handler.
this lets the code shrink and avoids some register use.
while here, move the range checking of the arguments before saving
the callers args onto the stack so we can ret faster on error.
ok miod@
|
|
machines work again with the unlocked reaper.
ok mpi@, deraadt@
no objection from miod@
|
|
interrupt storm at the end of autoconf.
|
|
space read, for errors may not cause a machine check.
This makes phantom PCI devices disappear on alphabook.
|
|
|
|
kernels and we no longer have any.
|
|
|
|
|
|
"shared reference pointers".
srp allows concurrent access to a data structure by multiple cpus
while avoiding interlocking cpu opcodes. it manages its own reference
counts and the garbage collection of those data structure to avoid
use after frees.
internally srp is a twisted version of hazard pointers, which are
a relative of RCU.
jmatthew wrote the bulk of a hazard pointer implementation and
changed bpf to use it to allow mpsafe access to bpfilters. however,
at s2k15 we were trying to apply it to other data structures but
the memory overhead of every hazard pointer would have blown out
significantly in several uses cases. a bulk of our time at s2k15
was spent reworking hazard pointers into srp.
this diff adds the srp api and adds the necessary metadata to struct
cpuinfo on our MP architectures. srp on uniprocessor platforms has
alternate code that is optimised because it knows there'll be no
concurrent access to data by multiple cpus.
srp is made available to the system via param.h, so it should be
available everywhere in the kernel.
the docs likely need improvement cos im too close to the implementation.
ok mpi@
|
|
too.
|
|
MULTIPROCESSOR, and quote the alpha ARM to explain why; while there, make the
failure messages a bit more detailed.
|
|
call, instead of &curproc. The copy routine may sleep and we may resume on
a different processor. This has been plaguing the alpha MULTIPROCESSOR kernels
since the very beginning; it's amazing this did not cause more havoc.
Joint debugging and hair pulling with dlg@ and deraadt@; ok dlg@
|
|
|
|
ensure the register containing the proc pointer is initialized.
ok miod
|
|
what register dance copyerr should do.....
|
|
in copyerr itself, like other architectures of this type do.
as a result of chatter between miod and kettenis
|
|
permit the active copyout/copyin to continue work on subsequent faulting
pages and not misinterpret & fault them as kernel bcopy against userland
addresses. Old bug -- fall of 1996. This should fix getentropy issues
on MP systems which have become more apparent recently, probably due to
some combo of increased ASLR with unlocked getentropy happening very soon
after vfork/fork...
ok miod
|
|
Discussed with kettenis
|
|
means read-only, which our ld.so already enforced, but a smaller plt section).
|
|
|
|
sure clock interrupts do not attempt to acquire it.
This will also eventually allow for IPL_MPSAFE interrupts on alpha.
Tested by dlg@ and I.
|
|
delete coredump_trad(), uvm_coredump(), cpu_coredump(), struct md_coredump,
and various #includes that are superfluous.
This leaves compat_linux processes without a coredump callback. If that
ability is desired, someone should update it to use coredump_elf32() and
verify the results...
ok kettenis@
|
|
|
|
had a proper stdint.h. No ports fallout. OK guenther@ miod@
|
|
MUTEX_ASSERT_UNLOCKED, but it turns out alpha mutexes arent very
friendly to diagnostics on smp systems.
alpha mutexes contained an mtx_lock member. when 0 the mutex was
unlocked, and when 1 it was locked. the MUTEX_ASSERT_UNLOCKED checked
if mtx_lock was 1 to see if the current cpu owned the mutex, but
in an mp system another cpu may have set mtx_lock to 1, which causes
the assert to fire.
this changes alpha mutexes so they record which cpu owns the lock
rather than just if the lock is held or not. the diagnostics compare
the owner to the current cpus curcpu() address so they can actually
tell if the current cpu holds the lock instead of whether any cpu
holds the lock.
instead of using custom asm to implement a cas this uses atomic_cas_ptr,
which on alpha uses gcc cas code. miod says he has far more confidence
in the gcc cas than the code that was there before.
while im here i also shuffled the code. on MULTIPROCESSOR systems
instead of duplicating code between mtx_enter and mtx_enter_try,
mtx_enter simply loops on mtx_enter_try until it succeeds.
this also provides an alternative implementation of mutexes on
!MULTIPROCESSOR systems that avoids interlocking opcodes. mutexes
wont contend on UP boxes, theyre basically wrappers around spls.
we can just do the splraise, stash the owner as a guard value for
DIAGNOSTIC and return. similarly, mtx_enter_try on UP will never
fail, so we can just call mtx_enter and return 1.
ok miod@
|
|
unification...
|
|
they do "interesting" things with APIs i want to change, and i can't
find any evidence anyone uses them anymore. instead of burning time
on changes i cant test, ill take a chance that noone will miss them.
no objections from anyone
ok mpi@ deraadt@ henning@ sthen@
|
|
Use this on vax to correctly pick the end of the stack area now that the
stackgap adjustment code will no longer guarantee it is a fixed location.
|
|
machine/lock.h only provides SPINLOCK_SPIN_HOOK which is included
directly by the three files that use it.
|
|
|
|
|
|
|
|
|
|
each arch used to have to provide an rw_cas operation, but now we
have the rwlock code build its own version. on smp machines it uses
atomic_cas_ulong. on uniproc machines it avoids interlocked
instructions by using straight loads and stores. this is safe because
rwlocks are only used from process context and processes are currently
not preemptible in our kernel. so alpha/ppc/etc might get a benefit.
ok miod@ kettenis@ deraadt@
|
|
ok guenther@
|
|
- rename uiomove() to uiomovei() and update all its users.
- introduce uiomove(), which is similar to uiomovei() but with a size_t.
- rewrite uiomovei() as an uiomove() wrapper.
ok kettenis@
|
|
|
|
automagically if copyout() of the signal frame faults.
|
|
the stack region handling in uvm.
|
|
ok kettenis
|
|
with many, ok kettenis@.
|