|
@@ -450,6 +450,29 @@ static int radeon_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_
|
|
|
return -EINVAL;
|
|
|
mem->bus.base = rdev->mc.aper_base;
|
|
|
mem->bus.is_iomem = true;
|
|
|
+#ifdef __alpha__
|
|
|
+ /*
|
|
|
+ * Alpha: use bus.addr to hold the ioremap() return,
|
|
|
+ * so we can modify bus.base below.
|
|
|
+ */
|
|
|
+ if (mem->placement & TTM_PL_FLAG_WC)
|
|
|
+ mem->bus.addr =
|
|
|
+ ioremap_wc(mem->bus.base + mem->bus.offset,
|
|
|
+ mem->bus.size);
|
|
|
+ else
|
|
|
+ mem->bus.addr =
|
|
|
+ ioremap_nocache(mem->bus.base + mem->bus.offset,
|
|
|
+ mem->bus.size);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Alpha: Use just the bus offset plus
|
|
|
+ * the hose/domain memory base for bus.base.
|
|
|
+ * It then can be used to build PTEs for VRAM
|
|
|
+ * access, as done in ttm_bo_vm_fault().
|
|
|
+ */
|
|
|
+ mem->bus.base = (mem->bus.base & 0x0ffffffffUL) +
|
|
|
+ rdev->ddev->hose->dense_mem_base;
|
|
|
+#endif
|
|
|
break;
|
|
|
default:
|
|
|
return -EINVAL;
|