]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC: r201052, r201200, r202003, r202010, r202023
authormarius <marius@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 15 Jan 2010 21:45:46 +0000 (21:45 +0000)
committermarius <marius@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Fri, 15 Jan 2010 21:45:46 +0000 (21:45 +0000)
commit7b6ef3fa540df0c24795c6d8fcfd950406833394
tree47473d5142ab2b30f67c4dc85d0a7182bf36e169
parentfc1d612e24168e77b1bdb6bc6621b4f50fe17ddd
MFC: r201052, r201200, r202003, r202010, r202023

Add a driver for the `Fire' JBus to PCIe bridges found in at least
the Sun Fire V215/V245 and Sun Ultra 25/45 machines. This driver also
already includes all the code to support the `Oberon' Uranus to PCIe
bridges found in the Fujitsu-Siemens based Mx000 machines but due to
lack of access to such a system for testing, probing of these bridges
is currently disabled.
Unfortunately, the event queue mechanism of these bridges for MSIs/
MSI-Xs matches our current MD and MI interrupt frameworks like square
pegs fit into round holes so for now we are generous and use one event
queue per MSI, which limits us to 35 MSIs/MSI-Xs per Host-PCIe-bridge
(we use one event queue for the PCIe error messages). This seems
tolerable as long as most devices just use one MSI/MSI-X anyway.
Adding knowledge about MSIs/MSI-Xs to the MD interrupt code should
allow us to decouple the 1:1 mapping at the cost of no longer being
able to bind MSIs/MSI-Xs to specific CPUs as we currently have no
reliable way to quiesce a device during the transition of its MSIs/
MSI-Xs to another event queue. This would still require the problem
of interrupt storms generated by devices which have no one-shot
behavior or can't/don't mask interrupts while the filter/handler is
executed (like the older PCIe NICs supported by bge(4)) to be solved
though.

git-svn-id: svn://svn.freebsd.org/base/stable/8@202419 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/conf/files.sparc64
sys/conf/options.sparc64
sys/sparc64/pci/fire.c [new file with mode: 0644]
sys/sparc64/pci/firereg.h [new file with mode: 0644]
sys/sparc64/pci/firevar.h [new file with mode: 0644]