svn commit: r244852 - projects/altix2/sys/ia64/sgisn

Marcel Moolenaar marcel at FreeBSD.org
Sun Dec 30 06:00:56 UTC 2012


Author: marcel
Date: Sun Dec 30 06:00:55 2012
New Revision: 244852
URL: http://svnweb.freebsd.org/changeset/base/244852

Log:
  Use 64-bit direct mapped DMA for devices that support it (e.g. isp(4)).

Modified:
  projects/altix2/sys/ia64/sgisn/sgisn_pcib.c

Modified: projects/altix2/sys/ia64/sgisn/sgisn_pcib.c
==============================================================================
--- projects/altix2/sys/ia64/sgisn/sgisn_pcib.c	Sun Dec 30 05:59:10 2012	(r244851)
+++ projects/altix2/sys/ia64/sgisn/sgisn_pcib.c	Sun Dec 30 06:00:55 2012	(r244852)
@@ -506,12 +506,22 @@ sgisn_pcib_iommu_xlate(device_t dev, bus
 static int
 sgisn_pcib_iommu_map(device_t dev, busdma_md_t md, u_int idx, bus_addr_t *ba_p)
 {
-	bus_addr_t bndry = 0x80000000UL;
+	struct sgisn_pcib_softc *sc = device_get_softc(dev);
+	busdma_tag_t tag;
+	bus_addr_t maxaddr = 0x80000000UL;
 	bus_addr_t ba;
 
 	ba = *ba_p;
-	if (ba < bndry) {
-		ba |= bndry;
+	if (ba < maxaddr) {
+		ba |= maxaddr;
+		*ba_p = ba;
+		return (0);
+	}
+
+	tag = busdma_md_get_tag(md);
+	maxaddr = busdma_tag_get_maxaddr(tag);
+	if (maxaddr == ~0UL) {
+		ba |= ((u_long)sc->sc_fwbus->fw_hub_xid << 60) | (1UL << 59);
 		*ba_p = ba;
 		return (0);
 	}


More information about the svn-src-projects mailing list