Date: Sun, 30 Dec 2012 06:00:55 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r244852 - projects/altix2/sys/ia64/sgisn Message-ID: <201212300600.qBU60tc3037638@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212300600.qBU60tc3037638>