summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/ps3
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2011-06-23 04:06:33 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2011-06-23 04:06:33 +0000
commitb51f0413bb9eea9e7f306823369257ccace21801 (patch)
tree7f618825a0c516bec2a25c11c724eda3c2f1d5dc /sys/powerpc/ps3
parent92790aaa8760da434387dac80633830e0948f088 (diff)
downloadFreeBSD-src-b51f0413bb9eea9e7f306823369257ccace21801.zip
FreeBSD-src-b51f0413bb9eea9e7f306823369257ccace21801.tar.gz
Use 4 KB pages for storage bus devices, which seems to be what the HV uses
internally.
Diffstat (limited to 'sys/powerpc/ps3')
-rw-r--r--sys/powerpc/ps3/ps3bus.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/powerpc/ps3/ps3bus.c b/sys/powerpc/ps3/ps3bus.c
index 88b4be2..90f0e87 100644
--- a/sys/powerpc/ps3/ps3bus.c
+++ b/sys/powerpc/ps3/ps3bus.c
@@ -629,7 +629,7 @@ ps3bus_get_dma_tag(device_t dev, device_t child)
{
struct ps3bus_devinfo *dinfo = device_get_ivars(child);
struct ps3bus_softc *sc = device_get_softc(dev);
- int i, err, flags;
+ int i, err, flags, pagesize;
if (dinfo->bustype != PS3_BUSTYPE_SYSBUS &&
dinfo->bustype != PS3_BUSTYPE_STORAGE)
@@ -646,9 +646,13 @@ ps3bus_get_dma_tag(device_t dev, device_t child)
dinfo->devtype == PS3_DEVTYPE_USB)
flags = 2; /* 8-bit mode */
+ pagesize = 24; /* log_2(16 MB) */
+ if (dinfo->bustype == PS3_BUSTYPE_STORAGE)
+ pagesize = 12; /* 4 KB */
+
for (i = 0; i < sc->rcount; i++) {
err = lv1_allocate_device_dma_region(dinfo->bus, dinfo->dev,
- sc->regions[i].mr_size, 24 /* log_2(16 MB) */, flags,
+ sc->regions[i].mr_size, pagesize, flags,
&dinfo->dma_base[i]);
if (err != 0) {
device_printf(child,
OpenPOWER on IntegriCloud