<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - [radeon][TTM] Contention when evicting large buffers between VRAM and GTT"
href="https://bugs.freedesktop.org/show_bug.cgi?id=92775">92775</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>[radeon][TTM] Contention when evicting large buffers between VRAM and GTT
</td>
</tr>
<tr>
<th>Product</th>
<td>DRI
</td>
</tr>
<tr>
<th>Version</th>
<td>XOrg git
</td>
</tr>
<tr>
<th>Hardware</th>
<td>Other
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Component</th>
<td>DRM/Radeon
</td>
</tr>
<tr>
<th>Assignee</th>
<td>dri-devel@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>shawn.starr@rogers.com
</td>
</tr></table>
<p>
<div>
<pre>In this example output, we fail to evict pages.
[ 284.937397] CPU: 2 PID: 2113 Comm: RenderThread 2 Tainted: G E
4.3.0-0.rc7.git2.2.fc23.x86_64+debug+ #1
[ 284.937916] Hardware name: Dell Inc. Precision M6800/05NG6V, BIOS A15
09/29/2015
[ 284.938277] 0000000000000000 00000000a3aa6e6e ffff88078b2af350
ffffffff813a496f
[ 284.938699] ffff880523ce68a0 ffff88078b2af370 ffffffffa01d6132
ffff88003f9c4738
[ 284.939093] 0000000000000002 ffff88078b2af3b0 ffffffffa013e5f4
0000000000000000
[ 284.939563] Call Trace:
[ 284.939740] [<ffffffff813a496f>] dump_stack+0x44/0x55
[ 284.939999] [<ffffffffa01d6132>] radeon_ttm_io_mem_reserve+0xd2/0x100
[radeon]
[ 284.940417] [<ffffffffa013e5f4>] ttm_mem_io_reserve+0x64/0x110 [ttm]
[ 284.940797] [<ffffffffa013eb53>] ttm_mem_reg_ioremap+0x53/0x140 [ttm]
[ 284.941111] [<ffffffffa013f0b0>] ttm_bo_move_memcpy+0xe0/0x680 [ttm]
[ 284.941481] [<ffffffffa01d69f0>] radeon_bo_move+0x190/0x200 [radeon]
[ 284.941893] [<ffffffffa013cd62>] ttm_bo_handle_move_mem+0x2c2/0x530 [ttm]
[ 284.942262] [<ffffffffa013d537>] ? ttm_bo_mem_space+0x137/0x3b0 [ttm]
[ 284.942617] [<ffffffffa013d121>] ttm_bo_evict+0x151/0x220 [ttm]
[ 284.942952] [<ffffffffa013d388>] ttm_mem_evict_first+0x198/0x210 [ttm]
[ 284.943308] [<ffffffffa013d6fa>] ttm_bo_mem_space+0x2fa/0x3b0 [ttm]
[ 284.943715] [<ffffffffa013dbd9>] ttm_bo_validate+0x199/0x210 [ttm]
[ 284.944016] [<ffffffffa0141998>] ? ttm_eu_reserve_buffers+0x168/0x300 [ttm]
[ 284.944428] [<ffffffffa01d88ec>] radeon_bo_list_validate+0xcc/0x210
[radeon]
[ 284.944809] [<ffffffffa01ee6c3>] radeon_cs_parser_relocs+0x393/0x460
[radeon]
[ 284.945181] [<ffffffffa01ef049>] radeon_cs_ioctl+0x269/0x780 [radeon]
[ 284.945532] [<ffffffffa00d3408>] drm_ioctl+0x138/0x500 [drm]
[ 284.945944] [<ffffffffa01eede0>] ? radeon_cs_parser_init+0x490/0x490
[radeon]
[ 284.946305] [<ffffffff811d7aae>] ? handle_mm_fault+0xb6e/0x1840
[ 284.946674] [<ffffffff8177e96e>] ? _raw_spin_unlock_irqrestore+0xe/0x10
[ 284.946999] [<ffffffffa01b904c>] radeon_drm_ioctl+0x4c/0x80 [radeon]
[ 284.947380] [<ffffffff81235435>] do_vfs_ioctl+0x295/0x470
[ 284.947741] [<ffffffff81065104>] ? __do_page_fault+0x1b4/0x400
[ 284.948024] [<ffffffff81235689>] SyS_ioctl+0x79/0x90
[ 284.948294] [<ffffffff8177eeee>] entry_SYSCALL_64_fastpath+0x12/0x71
[ 284.948635] radeon_ttm_io_mem_reserve: Check if it's bus.offset + bus.size
greater than BAR SIZE: is 6a977000 > 10000000?
[ 284.949261] [TTM] in ttm_bo_handle_move_mem(): Failing! - OTHER, from
ttm_bo_move_memcpy() return
[ 284.949796] [TTM] Buffer eviction failed
[ 284.950004] [TTM] No space for ffff880523ce6868 (1367 pages, 5468K, 5M)
[ 284.950422] [TTM] placement[0]=0x00060002 (1)
[ 284.950796] [TTM] has_type: 1
[ 284.950958] [TTM] use_type: 1
[ 284.951130] [TTM] flags: 0x0000000A
[ 284.951333] [TTM] gpu_offset: 0x80000000
[ 284.951709] [TTM] size: 2097152
[ 284.951892] [TTM] available_caching: 0x00070000
[ 284.952141] [TTM] default_caching: 0x00010000
[ 284.953945] [TTM] placement[1]=0x00060001 (0)
[ 284.954193] [TTM] has_type: 1
[ 284.954359] [TTM] use_type: 1
[ 284.954593] [TTM] flags: 0x00000002
[ 284.954780] [TTM] gpu_offset: 0x00000000
[ 284.954986] [TTM] size: 0
[ 284.955160] [TTM] available_caching: 0x00070000
[ 284.955421] [TTM] default_caching: 0x00010000
In discussions on IRC, a current workaround in radeonsi DRI is this:
--- r600_buffer_common.c 2015-11-02 01:56:10.796446185 -0500
+++ r600_buffer_common.c.workaround 2015-11-01 21:16:55.398517539 -0500
@@ -133,7 +133,7 @@ bool r600_init_resource(struct r600_comm
case PIPE_USAGE_IMMUTABLE:
default:
/* Not listing GTT here improves performance in some apps. */
- res->domains = RADEON_DOMAIN_VRAM;
+ res->domains = RADEON_DOMAIN_VRAM | RADEON_DOMAIN_GTT;
flags |= RADEON_FLAG_GTT_WC;
break;
}
@@ -158,7 +158,7 @@ bool r600_init_resource(struct r600_comm
/* Tiled textures are unmappable. Always put them in VRAM. */
if (res->b.b.target != PIPE_BUFFER &&
rtex->surface.level[0].mode >= RADEON_SURF_MODE_1D) {
- res->domains = RADEON_DOMAIN_VRAM;
+ res->domains = RADEON_DOMAIN_VRAM | RADEON_DOMAIN_GTT;
flags &= ~RADEON_FLAG_CPU_ACCESS;
flags |= RADEON_FLAG_NO_CPU_ACCESS;
}
One solution discussed is to split up the transfer into smaller chunks in
radeon_ttm.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>