Rev 5346 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5346 | Rev 6104 | ||
---|---|---|---|
Line 170... | Line 170... | ||
170 | rbo->placements[i].lpfn = |
170 | rbo->placements[i].lpfn = |
171 | rbo->rdev->mc.visible_vram_size >> PAGE_SHIFT; |
171 | rbo->rdev->mc.visible_vram_size >> PAGE_SHIFT; |
172 | else |
172 | else |
173 | rbo->placements[i].lpfn = 0; |
173 | rbo->placements[i].lpfn = 0; |
174 | } |
174 | } |
175 | - | ||
176 | /* |
- | |
177 | * Use two-ended allocation depending on the buffer size to |
- | |
178 | * improve fragmentation quality. |
- | |
179 | * 512kb was measured as the most optimal number. |
- | |
180 | */ |
- | |
181 | if (rbo->tbo.mem.size > 512 * 1024) { |
- | |
182 | for (i = 0; i < c; i++) { |
- | |
183 | rbo->placements[i].flags |= TTM_PL_FLAG_TOPDOWN; |
- | |
184 | } |
- | |
185 | } |
- | |
186 | } |
175 | } |
Line 187... | Line 176... | ||
187 | 176 | ||
188 | int radeon_bo_create(struct radeon_device *rdev, |
177 | int radeon_bo_create(struct radeon_device *rdev, |
189 | unsigned long size, int byte_align, bool kernel, |
178 | unsigned long size, int byte_align, bool kernel, |
Line 230... | Line 219... | ||
230 | bo->flags = flags; |
219 | bo->flags = flags; |
231 | /* PCI GART is always snooped */ |
220 | /* PCI GART is always snooped */ |
232 | if (!(rdev->flags & RADEON_IS_PCIE)) |
221 | if (!(rdev->flags & RADEON_IS_PCIE)) |
233 | bo->flags &= ~(RADEON_GEM_GTT_WC | RADEON_GEM_GTT_UC); |
222 | bo->flags &= ~(RADEON_GEM_GTT_WC | RADEON_GEM_GTT_UC); |
Line -... | Line 223... | ||
- | 223 | ||
- | 224 | /* Write-combined CPU mappings of GTT cause GPU hangs with RV6xx |
|
- | 225 | * See https://bugs.freedesktop.org/show_bug.cgi?id=91268 |
|
- | 226 | */ |
|
- | 227 | if (rdev->family >= CHIP_RV610 && rdev->family <= CHIP_RV635) |
|
- | 228 | bo->flags &= ~(RADEON_GEM_GTT_WC | RADEON_GEM_GTT_UC); |
|
234 | 229 | ||
235 | #ifdef CONFIG_X86_32 |
230 | #ifdef CONFIG_X86_32 |
236 | /* XXX: Write-combined CPU mappings of GTT seem broken on 32-bit |
231 | /* XXX: Write-combined CPU mappings of GTT seem broken on 32-bit |
237 | * See https://bugs.freedesktop.org/show_bug.cgi?id=84627 |
232 | * See https://bugs.freedesktop.org/show_bug.cgi?id=84627 |
- | 233 | */ |
|
- | 234 | bo->flags &= ~(RADEON_GEM_GTT_WC | RADEON_GEM_GTT_UC); |
|
- | 235 | #elif defined(CONFIG_X86) && !defined(CONFIG_X86_PAT) |
|
- | 236 | /* Don't try to enable write-combining when it can't work, or things |
|
- | 237 | * may be slow |
|
- | 238 | * See https://bugs.freedesktop.org/show_bug.cgi?id=88758 |
|
- | 239 | */ |
|
- | 240 | ||
- | 241 | #warning Please enable CONFIG_MTRR and CONFIG_X86_PAT for better performance \ |
|
- | 242 | thanks to write-combining |
|
238 | */ |
243 | |
- | 244 | if (bo->flags & RADEON_GEM_GTT_WC) |
|
- | 245 | DRM_INFO_ONCE("Please enable CONFIG_MTRR and CONFIG_X86_PAT for " |
|
- | 246 | "better performance thanks to write-combining\n"); |
|
239 | bo->flags &= ~RADEON_GEM_GTT_WC; |
247 | bo->flags &= ~(RADEON_GEM_GTT_WC | RADEON_GEM_GTT_UC); |
Line 240... | Line 248... | ||
240 | #endif |
248 | #endif |
241 | 249 | ||
242 | radeon_ttm_placement_from_domain(bo, domain); |
250 | radeon_ttm_placement_from_domain(bo, domain); |