From owner-cvs-src@FreeBSD.ORG Sun Aug 5 11:56:45 2007 Return-Path: Delivered-To: cvs-src@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 98FCE16A418; Sun, 5 Aug 2007 11:56:45 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9546D13C458; Sun, 5 Aug 2007 11:56:45 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l75BujRh083346; Sun, 5 Aug 2007 11:56:45 GMT (envelope-from marius@repoman.freebsd.org) Received: (from marius@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l75BujLn083345; Sun, 5 Aug 2007 11:56:45 GMT (envelope-from marius) Message-Id: <200708051156.l75BujLn083345@repoman.freebsd.org> From: Marius Strobl Date: Sun, 5 Aug 2007 11:56:44 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: 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 X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Aug 2007 11:56:45 -0000 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 Log: - 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