@@ -850,7 +850,7 @@ int iommu_set_da_range(struct iommu *obj, u32 start, u32 end)
if (end < start || !PAGE_ALIGN(start | end))
return -EINVAL;
- obj->da_start = start;
+ obj->da_start = max(start, (u32)PAGE_SIZE);
obj->da_end = end;
return 0;
@@ -950,7 +950,9 @@ static int __devinit omap_iommu_probe(struct platform_device *pdev)
obj->name = pdata->name;
obj->dev = &pdev->dev;
obj->ctx = (void *)obj + sizeof(*obj);
- obj->da_start = pdata->da_start;
+
+ /* reserve the first page for NULL */
+ obj->da_start = max(pdata->da_start, (u32)PAGE_SIZE);
obj->da_end = pdata->da_end;
mutex_init(&obj->iommu_lock);