Age | Commit message (Collapse) | Author |
|
Some architectures have ability to detect hardware sanity and notify system
(NMI, firmware callback, etc.). Handle these hardware severe errors, same
as software errors, with panic(9).
According to miod@, SGI IP27 NMI is triggered by pushing some "hidden" button,
which "usual" users/admins don't know. Pushing such a button is "RB_USERREQ"
(human-triggered) in that the button is pushed by a human, but not "RB_USERREQ"
in that no user intervention in system (== no command input) is done. miod@
agreed that changing these from RB_USERREQ to !RB_USERREQ (== panic(9)) is
not a big problem.
OK miod@ kettenis@
|
|
after discussions with beck deraadt kettenis.
|
|
I have found that some ports call boot(9) from machine-dependent code to
reboot system. These should be changed to either:
- Sending signal to init(8) to trigger it to shutdown system cleanly, like
acpi(4) does, in cases where found problems don't prevent system from working
immediately, or
- Just doing panic(9) if the situation is severely broken.
For now, just rewrite boot() to reboot(). Actual fixes follow.
Discussed with & OK from kettenis@
|
|
|
|
in master aborts. Return 0xffffffff to emulate what happens on non-perfect
architectures in that case.
ok deraadt@
|
|
|
|
given pcitag_t configuration address space. Currently, all pci controllers
will return the usual 0x100 bytes of PCI configuration space, but this will
eventually change on PCIe-capable controlers.
ok kettenis@
|
|
ok deraadt@, miod@
|
|
between instances, saving space in the kernel. feedback from many (some
incorporated, some left for future work).
ok deraadt, kettenis, "why not" miod.
|
|
|
|
|
|
|
|
|
|
|
|
does that for us.
|
|
streaming cache, so don't try to initialize it.
|
|
|
|
|
|
pci_conf_write() and give pyro(4) an implementation suitable for PCIe. For
psycho(4) and schizo(4), go back to the origional implementation. This gets
rid of the 'tagshift' member of pci_chipset_tag_t, and clears the way for
sun4v.
|
|
size(*p) usage. This should be the last of the simple malloc()
changes.
|
|
input from kettenis@
|
|
a bus_space_handle_t back to a bus_addr_t. Needed for rbus.
Only implemented for mainbus(4) and psycho(4) for now; schizo(4) and pyro(4)
will follow soon.
ok deraadt@
|
|
|
|
Fix default DVMA range for Schizo's with no "virtual-dma" property;
Add TSB size indicator to Schizo & Psycho debugging messages.
ok jason@
|
|
seen previously; discussed with kettenis
|
|
domain number such that we can distinguish between busses with the same bus
number that are behind different host bridges. Domains can be accessed by
using different device nodes.
ok deraadt@
|
|
|
|
instead the interrupt for PCI slot 0.
ok dlg@
|
|
|
|
pci cards that have a pci-pci bridge and lack fcode.
tested by many, ok jason@, dlg@
|
|
make the "generic" PCI bus enumeration code the standard case which
gets used if nothing else is defined in MD headers,
introduce a "PCI_MACHDEP_ENUMERATE_BUS" CPP definition which can
be used by MD headers (just 1 port atm) to plug in special code
rev 1.62
* Implement a machine-dependent pci_enumerate_bus() for sparc64 which
uses OFW device nodes to enumerate the bus. When a PCI bus that is
behind a bridge is attached, pci_attach_hook() allocates a new PCI
chipset tag for the new bus and sets it's "curnode" to the OFW node
of the bridge. This is used as a starting point when enumerating
that bus. Root busses get the OFW node of the host bridge (psycho).
rev 1.59
Split the code that enumerates the PCI bus and that actually probes
for a device into two functions:
* pci_probe_device() actually probes/attaches the device specified
by the provide pcitag_t.
* pci_enumerate_bus() enumerates the bus, and calls pci_probe_device()
for each device on the bus. A pci_enumerate_bus_generic() is provided
which implements the old method of doing this: If something found at
dev0/func0, determine number of functions and probe each one.
From NetBSD
ok kettenis@
Tested on a good number of amd64/i386/macppc/sparc64 systems
|
|
NULL for root PCI busses. For busses behind a bridge, it points to
a persistent copy of the bridge's pcitag_t. This can be very useful
for machine-dependent PCI bus enumeration code.
From NetBSD
ok grange@ kettenis@
|
|
-formatting nits
|
|
|
|
From NetBSD
ok miod@
|
|
|
|
associate a name with each interrupt handler. This is not visible
outside the kernel (yet).
ok jason@
|
|
call the real implementation functions directly instead of duplicating
lots of code that only calls the real stuff anyway.
tested by miod@ henning@
ok jason@
|
|
could lead to nasty races between PIO and DMA.
tested by krw@
ok jason@
|
|
registers and mapping strange INRs is not a good idea.
ok jason@
|
|
happy for all psycho based boxes.
tested by beck@
ok jason@
|
|
|
|
trying to use the interrupt pin (or is it that the PCI
function?) as the interrupt vector, this computes the vector
from the PCI bus, slot, and pin. This will only change mappings
on psycho-based machines (*not* sabre, i.e., IIi/e) and only for
those vectors reported as nonsense INRs (INO 0-3).
This should fix the mapping of non-bridge expansion cards on U60
and E450, and other psycho boxen. U30 seems to do its own
thing.
|
|
ok deraadt
|
|
on faster systems under heavy network load. This replaces some of the
unreadable iommu functions with something a little less dense and a lot
less crash prone.
The bus_dma function pointer/cookie handling was broken. Change them
to work like the stacked bus_space drivers (where "work" is the key
word).
Tested my many (thanks).
ok jason@ deraadt@
|
|
PCI configuration space is actually one "0" larger. Noticed on an
E450 with all 10 PCI slots populated.
ok jason@
|
|
Reduce the size of a GENERIC kernel by ~190k
Remove the nasty pointer/bus_space_handle_t casts
Adds debug bus_space code including the ability to trace
bus operations (it actually works now).
The following rules are now followed (and verfified by the debug
code):
1. A "bus_space_handle_t" may only be used with the
"bus_space_tag_t" that created it.
2. Only "bus_space_map()" may create "bus_space_handle_t"s.
3. A "bus_space_handle_t" may not be modified after it has
been created (other than being destroyed by "bus_space_unmap()").
Thanks to help from mcbride, marc, jason, drahn, to anyone that might
have slipped my mind at the moment.
ok jason@, deraadt@
|
|
|
|
store function pointers in the pci_chipset_tag_t (ie. fix an ugly hack
I did during the hackathon last year).
|
|
interrupt map matches; from FreeBSD.
|