On Thu, 24 Jun 2010 10:53:52 -0400 Matt Turner mattst88@gmail.com wrote:
Seems that the IOMMU can't find 128 pages. It's likely due to:
- out of the IOMMU space (possibly someone doesn't free the IOMMU
space).
or
- the mapping parameters (such as align) aren't appropriate so the
IOMMU can't find space.
Is this the cause of the bug we're seeing in the report [1]?
Anyone know what's going wrong here?
I've attached a patch to print the debug info about the mapping parameters.
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c index d1dbd9a..17cf0d8 100644 --- a/arch/alpha/kernel/pci_iommu.c +++ b/arch/alpha/kernel/pci_iommu.c @@ -187,6 +187,10 @@ iommu_arena_alloc(struct device *dev, struct pci_iommu_arena *arena, long n, /* Search for N empty ptes */ ptes = arena->ptes; mask = max(align, arena->align_entry) - 1;
- printk("%s: %p, %p, %d, %ld, %lx, %u\n", __func__, dev, arena, arena->size,
- n, mask, align);
p = iommu_arena_find_pages(dev, arena, n, mask); if (p < 0) { spin_unlock_irqrestore(&arena->lock, flags);
Using this patch, I log the attached output.
Your system has 1GB iommu address space. I guess that it's enough for KSM?
The parameters in the log looks good. But you got this log before you started X?