- To: mattst88@xxxxxxxxx
- Subject: Re: Problems with alpha/pci + radeon/ttm
- From: FUJITA Tomonori <fujita.tomonori@xxxxxxxxxxxxx>
- Date: Tue, 22 Jun 2010 14:59:50 +0900
- Cc: linux-kernel@xxxxxxxxxxxxxxx, linux-alpha@xxxxxxxxxxxxxxx, fujita.tomonori@xxxxxxxxxxxxx, rth@xxxxxxxxxxx, ink@xxxxxxxxxxxxxxxxxxxx, mcree@xxxxxxxxxxxx, jbarnes@xxxxxxxxxxxxxxxx, linux-pci@xxxxxxxxxxxxxxx, dri-devel@xxxxxxxxxxxxxxxxxxxxx, airlied@xxxxxxxxx, alexdeucher@xxxxxxxxx, jglisse@xxxxxxxxxx
- In-reply-to: <AANLkTinG-5iKW5cigIQHPHRZuAMtG_xY-74XLL6vE5kb@xxxxxxxxxxxxxx>
On Mon, 21 Jun 2010 17:19:43 -0400
Matt Turner <mattst88@xxxxxxxxx> wrote:
> Michael Cree and I have been debugging FDO bug 26403 [1]. I tried
> booting with `radeon.test=1` and found this, which I think is related:
>
> > [drm] Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0x202000
> > [drm] Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0x302000
> [snip]
> > [drm] Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0xfd02000
> > [drm] Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0xfe02000
> > pci_map_single failed: could not allocate dma page tables
> > [drm:radeon_ttm_backend_bind] *ERROR* failed to bind 128 pages at 0x0FF02000
> > [TTM] Couldn't bind backend.
> > radeon 0000:00:07.0: object_init failed for (1048576, 0x00000002)
> > [drm:radeon_test_moves] *ERROR* Failed to create GTT object 253
> > Error while testing BO move.
>
> From what I can see, the call chain is
> radeon_test_moves
> (radeon_ttm_backend_bind called through callback function)
> - radeon_ttm.c:radeon_ttm_backend_bind calls radeon_gart_bind
> - radeon_gart.c:radeon_gart_bind calls pci_map_page
> - pci_map_page is alpha_pci_map_page, which calls...
> - alpha_pci_map_page calls pci_iommu.c:pci_map_single_1
> - pci_map_single_1 calls iommu_arena_alloc
> - iommu_arena_alloc calls iommu_arena_find_pages
> - iommu_arena_find_pages returns non-0
> - iommu_arena_alloc returns non-0
> - pci_map_single_1 returns 0 after printing
> "could not allocate dma page tables" error
> - alpha_pci_map_page returns 0 from pci_map_single_1
> - radeon_gart_bind returns non-0, error path prints
> "*ERROR* failed to bind 128 pages at 0x0FF02000"
This happens in the latest git, right?
Is this a regression (what kernel version worked)?
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);
--
To unsubscribe from this list: send the line "unsubscribe linux-alpha" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Netdev]
[Linux Wireless]
[Kernel Newbies]
[Security]
[Linux for Hams]
[Netfilter]
[Bugtraq]
[Photo]
[Yosemite]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux RAID]
[Linux Admin]
[Samba]
[Video 4 Linux]
[Linux Resources]