diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-02 19:40:34 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-02 19:40:34 -0700 | 
| commit | 20a2078ce7705a6e0722ef5184336eb8657a58d8 (patch) | |
| tree | 5b927c96516380aa0ecd68d8a609f7cd72120ad5 /drivers/gpu/drm/radeon/radeon_object.c | |
| parent | 0279b3c0ada1d78882f24acf94ac4595bd657a89 (diff) | |
| parent | 307b9c022720f9de90d58e51743e01e9a42aec59 (diff) | |
| download | olio-linux-3.10-20a2078ce7705a6e0722ef5184336eb8657a58d8.tar.xz olio-linux-3.10-20a2078ce7705a6e0722ef5184336eb8657a58d8.zip  | |
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull drm updates from Dave Airlie:
 "This is the main drm pull request for 3.10.
  Wierd bits:
   - OMAP drm changes required OMAP dss changes, in drivers/video, so I
     took them in here.
   - one more fbcon fix for font handover
   - VT switch avoidance in pm code
   - scatterlist helpers for gpu drivers - have acks from akpm
  Highlights:
   - qxl kms driver - driver for the spice qxl virtual GPU
  Nouveau:
   - fermi/kepler VRAM compression
   - GK110/nvf0 modesetting support.
  Tegra:
   - host1x core merged with 2D engine support
  i915:
   - vt switchless resume
   - more valleyview support
   - vblank fixes
   - modesetting pipe config rework
  radeon:
   - UVD engine support
   - SI chip tiling support
   - GPU registers initialisation from golden values.
  exynos:
   - device tree changes
   - fimc block support
  Otherwise:
   - bunches of fixes all over the place."
* 'drm-next' of git://people.freedesktop.org/~airlied/linux: (513 commits)
  qxl: update to new idr interfaces.
  drm/nouveau: fix build with nv50->nvc0
  drm/radeon: fix handling of v6 power tables
  drm/radeon: clarify family checks in pm table parsing
  drm/radeon: consolidate UVD clock programming
  drm/radeon: fix UPLL_REF_DIV_MASK definition
  radeon: add bo tracking debugfs
  drm/radeon: add new richland pci ids
  drm/radeon: add some new SI PCI ids
  drm/radeon: fix scratch reg handling for UVD fence
  drm/radeon: allocate SA bo in the requested domain
  drm/radeon: fix possible segfault when parsing pm tables
  drm/radeon: fix endian bugs in atom_allocate_fb_scratch()
  OMAPDSS: TFP410: return EPROBE_DEFER if the i2c adapter not found
  OMAPDSS: VENC: Add error handling for venc_probe_pdata
  OMAPDSS: HDMI: Add error handling for hdmi_probe_pdata
  OMAPDSS: RFBI: Add error handling for rfbi_probe_pdata
  OMAPDSS: DSI: Add error handling for dsi_probe_pdata
  OMAPDSS: SDI: Add error handling for sdi_probe_pdata
  OMAPDSS: DPI: Add error handling for dpi_probe_pdata
  ...
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_object.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_object.c | 16 | 
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c index d3aface2d12..1424ccde237 100644 --- a/drivers/gpu/drm/radeon/radeon_object.c +++ b/drivers/gpu/drm/radeon/radeon_object.c @@ -321,8 +321,10 @@ void radeon_bo_force_delete(struct radeon_device *rdev)  int radeon_bo_init(struct radeon_device *rdev)  {  	/* Add an MTRR for the VRAM */ -	rdev->mc.vram_mtrr = mtrr_add(rdev->mc.aper_base, rdev->mc.aper_size, +	if (!rdev->fastfb_working) { +		rdev->mc.vram_mtrr = mtrr_add(rdev->mc.aper_base, rdev->mc.aper_size,  			MTRR_TYPE_WRCOMB, 1); +	}  	DRM_INFO("Detected VRAM RAM=%lluM, BAR=%lluM\n",  		rdev->mc.mc_vram_size >> 20,  		(unsigned long long)rdev->mc.aper_size >> 20); @@ -339,14 +341,14 @@ void radeon_bo_fini(struct radeon_device *rdev)  void radeon_bo_list_add_object(struct radeon_bo_list *lobj,  				struct list_head *head)  { -	if (lobj->wdomain) { +	if (lobj->written) {  		list_add(&lobj->tv.head, head);  	} else {  		list_add_tail(&lobj->tv.head, head);  	}  } -int radeon_bo_list_validate(struct list_head *head) +int radeon_bo_list_validate(struct list_head *head, int ring)  {  	struct radeon_bo_list *lobj;  	struct radeon_bo *bo; @@ -360,15 +362,17 @@ int radeon_bo_list_validate(struct list_head *head)  	list_for_each_entry(lobj, head, tv.head) {  		bo = lobj->bo;  		if (!bo->pin_count) { -			domain = lobj->wdomain ? lobj->wdomain : lobj->rdomain; +			domain = lobj->domain;  		retry:  			radeon_ttm_placement_from_domain(bo, domain); +			if (ring == R600_RING_TYPE_UVD_INDEX) +				radeon_uvd_force_into_uvd_segment(bo);  			r = ttm_bo_validate(&bo->tbo, &bo->placement,  						true, false);  			if (unlikely(r)) { -				if (r != -ERESTARTSYS && domain == RADEON_GEM_DOMAIN_VRAM) { -					domain |= RADEON_GEM_DOMAIN_GTT; +				if (r != -ERESTARTSYS && domain != lobj->alt_domain) { +					domain = lobj->alt_domain;  					goto retry;  				}  				return r;  |