diff options
author | tmm <tmm@FreeBSD.org> | 2003-05-02 01:21:37 +0000 |
---|---|---|
committer | tmm <tmm@FreeBSD.org> | 2003-05-02 01:21:37 +0000 |
commit | ac4c68517583eb3c920aaf8482288eb3daf4332b (patch) | |
tree | 71bd0da5ea0d24c0d3dd9956fd249da9ed828f36 /sys/sparc64 | |
parent | 675505de1613a0a42e18e3a9da712e027531c4b5 (diff) | |
download | FreeBSD-src-ac4c68517583eb3c920aaf8482288eb3daf4332b.zip FreeBSD-src-ac4c68517583eb3c920aaf8482288eb3daf4332b.tar.gz |
- Reduce the DVMA preallocation limit from 128kB to 32kB. 128kB were
quite excessive, and caused the available space to be used up too
easily. The new limit should be a better estimation of how much the
caller will need at most.
- Double the IOTSB size 64kB, for a DVMA area size of 64MB.
This should fix DMA problems on e450s and other large machines due
to DVMA space exhaustion, which were introduced in my last IOMMU
code revision in January.
Reported and tested by: fenner
Diffstat (limited to 'sys/sparc64')
-rw-r--r-- | sys/sparc64/pci/psycho.c | 2 | ||||
-rw-r--r-- | sys/sparc64/sbus/sbus.c | 2 | ||||
-rw-r--r-- | sys/sparc64/sparc64/iommu.c | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/sys/sparc64/pci/psycho.c b/sys/sparc64/pci/psycho.c index 77deb68..25234d7 100644 --- a/sys/sparc64/pci/psycho.c +++ b/sys/sparc64/pci/psycho.c @@ -571,7 +571,7 @@ psycho_attach(device_t dev) sc->sc_is->is_sb[1] = 0; if (OF_getproplen(sc->sc_node, "no-streaming-cache") < 0) sc->sc_is->is_sb[0] = sc->sc_pcictl + PCR_STRBUF; - psycho_iommu_init(sc, 2); + psycho_iommu_init(sc, 3); } else { /* Just copy IOMMU state, config tag and address */ sc->sc_is = osc->sc_is; diff --git a/sys/sparc64/sbus/sbus.c b/sys/sparc64/sbus/sbus.c index f55206c..f695d5a 100644 --- a/sys/sparc64/sbus/sbus.c +++ b/sys/sparc64/sbus/sbus.c @@ -430,7 +430,7 @@ sbus_probe(device_t dev) * DMA pointer will be translated by the first page of the IOTSB. * To detect bugs we'll allocate and ignore the first entry. */ - iommu_init(name, &sc->sc_is, 2, -1, 1); + iommu_init(name, &sc->sc_is, 3, -1, 1); /* Enable the over-temperature and power-fail intrrupts. */ rid = 0; diff --git a/sys/sparc64/sparc64/iommu.c b/sys/sparc64/sparc64/iommu.c index 015b19d..ccfe1af 100644 --- a/sys/sparc64/sparc64/iommu.c +++ b/sys/sparc64/sparc64/iommu.c @@ -143,7 +143,7 @@ /* * Tuning constants. */ -#define IOMMU_MAX_PRE (128 * 1024) +#define IOMMU_MAX_PRE (32 * 1024) #define IOMMU_MAX_PRE_SEG 3 MALLOC_DEFINE(M_IOMMU, "dvmamem", "IOMMU DVMA Buffers"); |