Age | Commit message (Collapse) | Author |
|
even comment the lines.
|
|
is currently being covered by the wired TLB entries, flush them, so that,
if the process' pc is still running in a vulnerable page, the WAR will
reapply immediately and fault the next page.
|
|
the usual 1.1 coprocessor mask, instead of using zero and having every
userland process dying with signal 4.
The circumstances under which this call fails are unclear and could be
tied to specific PROM version (I have tried overzealous stack alignment and
other tricks, to no avail). Interestingly enough, the 715/75 system which
hits this problem, only triggers it when booting from disk, and never when
booting from network.
This diff is an ugly bandaid until the problem is better understood. Or maybe
it is not worth investigating, seeing that Linux hardcodes the coprocessor
mask and never issues PDC_COPROC calls; I wonder what HP/UX does.
In my tree for over 18 months; "Looks like a nice hack" deraadt@
715/75 system provided by Sebastiaan Indesteege, thanks!
|
|
interrupt is routed through the ISA PIC, the interrupt is edge-triggered
(despite PCI interrupts being level-triggered).
Attempt to recognize this and correctly setup the PIC ELCR register to `edge'.
This allows ES40 systems (and maybe others, but apparently all the other alpha
systems with on-board M5237 correctly route its interrupt as a PCI interrupt)
to reliably boot multiuser without suffering from USB interrupt storms (this is
especially noticeable when using glass console which, unlike serial console,
does not trigger other interrupts to give other devices a chance to run).
However, this is not enough yet to allow for proper USB device usage; your
mileage may vary.
Tested by bluhm@ and me. Putting it early in the release cycle so that
regressions on other systems, if any, can hopefully get noticed soon enough.
|
|
scsibus. this lets path drivers get matched instead of just sd(4).
ask mpath to maybe swap a path with a disk via mpath.
ok deraadt@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
instead a single function ppc_mem_regions() required by the ppc pmap.
ok kettenis@
|
|
instead a single function ppc_mem_regions() required by the ppc pmap.
ok kettenis@
|
|
ok kettenis@, deraadt@
|
|
This should make bus_dmamap_load(9) and bus_dmamap_unload(9) "mpsafe".
As a bonus this gets rid of a potential memory allocation in the IO path.
ok miod@
|
|
processors, every time a new text page is mapped in a pmap, the L1 I$ is
flushed for the va spanned by this page.
Since we map pages of our binaries upon demand, as they get faulted in, but
uvm_fault() tries to map the few neighbour pages, this can end up in a
bunch of pmap_enter() calls in a row, for executable mappings. If the L1
I$ is small enough, this can cause the whole L1 I$ cache to be flushed
several times.
Change pmap_enter() to postpone these flushes by only registering the
pending flushes, and have pmap_update() perform them. The cpu-specific
cache code can then optimize this to avoid unnecessary operations.
Tested on R4000SC, R4600SC, R5000SC, RM7000, R10000 with 4KB and 16KB
page sizes (coherent and non-coherent designs), and Loongson 2F by mikeb@ and
me. Should not affect anything on Octeon since there is no way to flush a
subset of I$ anyway.
|
|
|
|
call bufq_quiesce() after executing the DVACT_QUIESCE handlers.
This should be safe since no disk nor controller drivers have such
handler but it will allow us to detach sd(4) devices attached to a
USB bus.
Another benefit pointed out by kettenis@ is that drivers that need
to read a firmware from the disk should be able to do it at resume
time in a DVACT_WAKEUP handler.
ok kettenis@, deraadt@
|
|
Be a bit cynical about firmware fitting, of course..
ok jmatthew
|
|
struct ucred; struct process then directly links to the ucred
Based on a discussion at c2k10 or so before noting that FreeBSD and
NetBSD did this too.
ok matthew@
|
|
afterwards, for some prom misbehave if the network interface is opened twice;
repairs boot.net operation on at least SS5 PROM v2.21; found the hard way by
sebastia@. Crank boot version; verified not to hurt disk boot.
|
|
ok deraadt@
|
|
supposedly provided by newer PMON firmware (on Loongson 2Gq and Loongson 3A
systems).
|
|
ok dlg@ mpi@ deraadt@
|
|
board revisions < 4 (found on Indigo) and >= 4 (found on Indy and Indigo2).
Paint the cursor as an inverted glyph, instead of exchanging bg and fg colours
(matching the current practice on other frame buffers).
Speed-up overlapping copy operations by attempting to perform them in
larger chunks whenever possible; this speeds up console jump scrolling.
|
|
ok mpi@
|
|
the effects will be.
sgi will follow after i fix some known fallout first.
|
|
as the northbridge, have the per-platform early setup code register functions
providing access to the PCI configuration space, for the wscons code to walk the
PCI space in search of a graphics board.
No functional change yet.
|
|
|
|
(such as 2E and 3A systems).
|
|
|
|
ok mpi@
|
|
Add a simple screen burner accessop.
|
|
ok kettenis@
|
|
Using this much memory may have negative side effects, but at least now
you have the option. Here's some rope; have fun.
maybe ok a few people.
|
|
lowest bowels of the exception handling code, rather than in trap(). They
won't get recorded in the trap history, but there is a measurable speedup.
No change for non-CPU_R4000 kernels.
|
|
so remove the former and include the latter instead of pulling it
in <dev/pci/agpvar.h>. This header already requires various other
types anyway. While here remove unneeded headers.
|
|
Tweak the handling of ktrace EMUL when changing ktracing: only
generate one per process (not one per thread) and pass the correct
proc pointer down to the VFS layer. Permit generating of NAMI and
CSW records inside ktrace(2) itself.
ok deraadt@ millert@
|
|
extra restrictions on ordering.
|
|
the extra restrictions that __volatile provides on the __asm statements.
|
|
|
|
(egads!). While there, remove leftover instructions from an early flavour of
tlb_update_indexed(), which crept in by accident.
|
|
|
|
has these enabled and this leads to memory corruption that (surprisingly)
only shows up when running PIE.
|
|
revision.
|
|
testing help mpi@
|
|
affecting R4000 processors revision 2.x and below (found on most R4000 Indigo
and a few R4000 Indy).
Since this errata gets triggered by TLB misses when the code flow crosses a
page boundary, this code attempts to identify code pages prone to trigger the
errata, and force the next page to be mapped for at least as long as the
current pc lies in the troublesome page, by creating wiring extra TLB entries.
These entries get recycled in a lazy-but-aggressive-enough way, either because
of context switches, or because of further tlb exceptions reaching trap().
The errata workaround code is only compiled on R4000-capable kernels (i.e.
sgi GENERIC-IP22 and nothing else), and only enabled on affected processors
(i.e. not on R4000 revision 3, or on R4400).
There is still room for improvemnt in unlucky cases, but in this simple enough
incarnation, this allows my R4000 2.2 Indigo to finally reliably boot multiuser,
even though both /sbin/init and /bin/sh contain code pages which can trigger
the errata.
|
|
and which bits end up in the actual tlb registers.
On non-R8000 kernels, shrink the actual physical address bits to add a new
software bit, PG_SP (for `special'), which will be used shortly. This halves
the physical memory addressable by non-MIPS_PTE64 kernels, which should not
be a problem anyway.
|
|
outside of ddb. It will be used by regular kernel code shortly.
|