VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / drivers / parisc / iommu-helpers.h
index a6757b3..38d9e1a 100644 (file)
@@ -49,7 +49,15 @@ iommu_fill_pdir(struct ioc *ioc, struct scatterlist *startsg, int nents,
                        sg_dma_len(startsg) = 0;
                        dma_offset = (unsigned long) pide & ~IOVP_MASK;
                        n_mappings++;
+#if defined(ZX1_SUPPORT)
+                       /* Pluto IOMMU IO Virt Address is not zero based */
+                       sg_dma_address(dma_sg) = pide | ioc->ibase;
+#else
+                       /* SBA, ccio, and dino are zero based.
+                        * Trying to save a few CPU cycles for most users.
+                        */
                        sg_dma_address(dma_sg) = pide;
+#endif
                        pdirp = &(ioc->pdir_base[pide >> IOVP_SHIFT]);
                        prefetchw(pdirp);
                }