cvs commit: src/sys/sparc64/include iommureg.h iommuvar.h src/sys/sparc64/pci psycho.c psychoreg.h src/sys/sparc64/sbus sbus.c sbusreg.h src/sys/sparc64/sparc64 iommu.c

Marius Strobl marius at
Sun Aug 5 04:56:45 PDT 2007

marius      2007-08-05 11:56:44 UTC

  FreeBSD src repository

  Modified files:
    sys/sparc64/include  iommureg.h iommuvar.h 
    sys/sparc64/pci      psycho.c psychoreg.h 
    sys/sparc64/sbus     sbus.c sbusreg.h 
    sys/sparc64/sparc64  iommu.c 
  - 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)
  Revision  Changes    Path
  1.8       +2 -3      src/sys/sparc64/include/iommureg.h
  1.16      +19 -10    src/sys/sparc64/include/iommuvar.h
  1.68      +12 -7     src/sys/sparc64/pci/psycho.c
  1.13      +4 -0      src/sys/sparc64/pci/psychoreg.h
  1.45      +8 -8      src/sys/sparc64/sbus/sbus.c
  1.3       +3 -1      src/sys/sparc64/sbus/sbusreg.h
  1.45      +47 -114   src/sys/sparc64/sparc64/iommu.c

More information about the cvs-src mailing list