Commit 00d6a9b6be5885ad38234cd171f6fb18a87faa7c
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
Merge branch 'drm-fixes-3.18' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
A few more small fixes for 3.18. * 'drm-fixes-3.18' of git://people.freedesktop.org/~agd5f/linux: drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with 3.18.0-rc6 drm/radeon: Ignore RADEON_GEM_GTT_WC on 32-bit x86 drm/radeon: sync all BOs involved in a CS v2
Showing 3 changed files Side-by-side Diff
drivers/gpu/drm/radeon/radeon_cs.c
... | ... | @@ -251,22 +251,19 @@ |
251 | 251 | |
252 | 252 | static int radeon_cs_sync_rings(struct radeon_cs_parser *p) |
253 | 253 | { |
254 | - int i, r = 0; | |
254 | + struct radeon_cs_reloc *reloc; | |
255 | + int r; | |
255 | 256 | |
256 | - for (i = 0; i < p->nrelocs; i++) { | |
257 | + list_for_each_entry(reloc, &p->validated, tv.head) { | |
257 | 258 | struct reservation_object *resv; |
258 | 259 | |
259 | - if (!p->relocs[i].robj) | |
260 | - continue; | |
261 | - | |
262 | - resv = p->relocs[i].robj->tbo.resv; | |
260 | + resv = reloc->robj->tbo.resv; | |
263 | 261 | r = radeon_semaphore_sync_resv(p->rdev, p->ib.semaphore, resv, |
264 | - p->relocs[i].tv.shared); | |
265 | - | |
262 | + reloc->tv.shared); | |
266 | 263 | if (r) |
267 | - break; | |
264 | + return r; | |
268 | 265 | } |
269 | - return r; | |
266 | + return 0; | |
270 | 267 | } |
271 | 268 | |
272 | 269 | /* XXX: note that this is called from the legacy UMS CS ioctl as well */ |
drivers/gpu/drm/radeon/radeon_kms.c
... | ... | @@ -795,6 +795,8 @@ |
795 | 795 | |
796 | 796 | /* Get associated drm_crtc: */ |
797 | 797 | drmcrtc = &rdev->mode_info.crtcs[crtc]->base; |
798 | + if (!drmcrtc) | |
799 | + return -EINVAL; | |
798 | 800 | |
799 | 801 | /* Helper routine in DRM core does all the work: */ |
800 | 802 | return drm_calc_vbltimestamp_from_scanoutpos(dev, crtc, max_error, |
drivers/gpu/drm/radeon/radeon_object.c
... | ... | @@ -213,6 +213,13 @@ |
213 | 213 | if (!(rdev->flags & RADEON_IS_PCIE)) |
214 | 214 | bo->flags &= ~(RADEON_GEM_GTT_WC | RADEON_GEM_GTT_UC); |
215 | 215 | |
216 | +#ifdef CONFIG_X86_32 | |
217 | + /* XXX: Write-combined CPU mappings of GTT seem broken on 32-bit | |
218 | + * See https://bugs.freedesktop.org/show_bug.cgi?id=84627 | |
219 | + */ | |
220 | + bo->flags &= ~RADEON_GEM_GTT_WC; | |
221 | +#endif | |
222 | + | |
216 | 223 | radeon_ttm_placement_from_domain(bo, domain); |
217 | 224 | /* Kernel allocation are uninterruptible */ |
218 | 225 | down_read(&rdev->pm.mclk_lock); |