Commit 00d6a9b6be5885ad38234cd171f6fb18a87faa7c

Authored by Dave Airlie

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);