freebsd-skq/sys/sparc64
Marius Strobl 6bbb5a106c - Divorce the IOTSBs, which so far where handled via a global list
instead of per IOMMU, so we no longer need to program all of them
  identically in systems having multiple IOMMUs. This continues the
  rototilling of the nexus(4) done about 5 months ago, which amongst
  others changed nexus(4) and the drivers for host-to-foo bridges
  to provide bus_get_dma_tag methods, allowing to handle DMA tags in
  a hierarchical way and to link them with devices.
  This still doesn't move the silicon bug workarounds for Sabre (and
  in the uncommitted schizo(4) for Tomatillo) bridges into special
  bus_dma_tag_create() and bus_dmamap_sync() methods though, as w/o
  fully newbus'ified bus_dma_tag_create() and bus_dma_tag_destroy()
  this still requires too much hackery, i.e. per-child parent DMA
  tags in the parent driver.
- Let the host-to-foo drivers supply the maximum physical address
  of the IOMMU accompanying the bridges. Previously iommu(4) hard-
  coded an upper limit of 16GB, which actually only applies to the
  IOMMUs of the Hummingbird and Sabre bridges. The Psycho variants
  as well as the U2S in fact can can translate to up to 2TB, i.e.
  translate to 41-bit physical addresses. According to the recently
  available Tomatillo documentation these bridges even translate to
  43-bit physical addresses and hints at the Schizo bridges doing
  43 bits as well.
  This fixes the issue the FreeBSD 6.0 todo list item "Max RAM on
  sparc64" was refering to and pretty much obsoletes the lack of
  support for bounce buffers on sparc64.

Thanks to Nathan Whitehorn for pointing me at the Tomatillo manual.

Approved by:	re (kensmith)
2007-08-05 11:56:44 +00:00
..
central Rototill the sparc64 nexus(4) (actually this brings in the code the 2007-03-07 21:13:51 +00:00
compile
conf Enable SCTP by default for GENERIC kernels in order to give it 2007-06-14 17:14:27 +00:00
ebus Set the rid for any resource obtained from rman_reserve_resource. 2006-04-20 04:20:41 +00:00
fhc Teach the bridge wrapper how to handle the filter+ithread case. 2007-06-06 22:19:23 +00:00
include - Divorce the IOTSBs, which so far where handled via a global list 2007-08-05 11:56:44 +00:00
isa o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
pci - Divorce the IOTSBs, which so far where handled via a global list 2007-08-05 11:56:44 +00:00
sbus - Divorce the IOTSBs, which so far where handled via a global list 2007-08-05 11:56:44 +00:00
sparc64 - Divorce the IOTSBs, which so far where handled via a global list 2007-08-05 11:56:44 +00:00