rpms/kernel/F-11 drm-modesetting-radeon.patch, 1.81, 1.82 drm-next.patch, 1.16, 1.17 drm-nouveau.patch, 1.47, 1.48 kernel.spec, 1.1590, 1.1591 linux-2.6-drm-r128-ioremap.patch, 1.1, NONE

Dave Airlie airlied at fedoraproject.org
Wed May 6 03:12:07 UTC 2009


Author: airlied

Update of /cvs/pkgs/rpms/kernel/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv20106

Modified Files:
	drm-modesetting-radeon.patch drm-next.patch drm-nouveau.patch 
	kernel.spec 
Removed Files:
	linux-2.6-drm-r128-ioremap.patch 
Log Message:
* Wed May 06 2009 Dave Airlie <airlied at redhat.com> 2.6.29.2-129
- drm-next: update with latest patch queue for upstream + intel fixes
- drm-modesetting-radeon.patch: rebase onto drm-next
- drm-nouveau.patch: rebase onto drm-next


drm-modesetting-radeon.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -p -N -r 1.81 -r 1.82 drm-modesetting-radeon.patch
Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-modesetting-radeon.patch,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -p -r1.81 -r1.82
--- drm-modesetting-radeon.patch	5 May 2009 10:28:10 -0000	1.81
+++ drm-modesetting-radeon.patch	6 May 2009 03:12:01 -0000	1.82
@@ -1,2152 +1,3 @@
-commit cedd30c80687e2dee226ae3f38cb3411361e7572
-Merge: ef416ea 2b12cba
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Tue May 5 19:10:23 2009 +1000
-
-    Merge remote branch 'origin/drm-rawhide' into drm-f11
-
-commit 2b12cba747575005e75fe6154a552935484e9a4d
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Tue May 5 18:17:44 2009 +1000
-
-    radeon: don't convert colors for 16-bit modes
-
-commit ed70a54c74f78f426497654676dda7ac53055d13
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri May 1 11:58:10 2009 +1000
-
-    radeon: init usec timeout earlier
-    
-    we can call idle function before we set this up
-
-commit b1d531a7b26449e17031c22a1b12d6c5994f1b9a
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 24 15:18:09 2009 +1000
-
-    drm: revert change and remove unneeded setmode code
-
-commit 3d533587bcd2753b47887ed6a927b05f5821f1b7
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 24 14:32:36 2009 +1000
-
-    Revert "radeon: set i2c timeout to 2 jiffies"
-    
-    This reverts commit ab1e9cd474798a5c7d15d21c6422c3c9f90e90e0.
-    
-    fixed in i2c core
-
-commit 592b92d0a532c7367164546b513d345b1aae1d46
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri May 1 02:14:07 2009 +1000
-
-    r300: add other clip regs
-
-commit 37136c81b28e45f30c8d45d212315c0b4ce6c6b0
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Thu Apr 30 23:09:58 2009 +1000
-
-    drm: make ttm populate on cache changes
-    
-    this is backported from upstream
-
-commit e2b4a0ba030cf96be943a2d277accc43e0560672
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Thu Apr 30 23:09:39 2009 +1000
-
-    radeon: removed unused legacy cs codepath
-
-commit abe22355e73be13968fead1a42b9af43790f38e9
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Wed Apr 22 17:24:46 2009 +1000
-
-    radeon: duplicate desired modes so this stuff works properly
-
-commit ab1e9cd474798a5c7d15d21c6422c3c9f90e90e0
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Wed Apr 22 16:58:58 2009 +1000
-
-    radeon: set i2c timeout to 2 jiffies
-
-commit c4afb1b5b1cf342f9ab6bd561522c58dbe5733ad
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Wed Apr 22 16:57:38 2009 +1000
-
-    radeon: hook up the sub pixel order
-
-commit ef416eafca3c5ed83b089e90fb50c15062accecd
-Merge: fa4687f f891418
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Tue Apr 21 15:13:21 2009 +1000
-
-    Merge remote branch 'origin/drm-rawhide' into drm-f11
-
-commit f891418afa0e216bfaba22865ef06a72a6c74474
-Author: Dave Airlie <airlied at dhcp-1-203.bne.redhat.com>
-Date:   Tue Apr 21 14:29:32 2009 +1000
-
-    radeon: legacy fix more desktop layout scenarios
-
-commit 4b59aa2f4e377fd35bb00462030549eafde0a39c
-Author: Dave Airlie <airlied at dhcp-1-203.bne.redhat.com>
-Date:   Tue Apr 21 13:34:38 2009 +1000
-
-    radeon: legacy crtc, set buffer pitch at set base time.
-    
-    this deals with the case where the fb resizes but we don't switch modes
-
-commit cd12e87b4f13f717caf4bd81b46b25072f6d9ed0
-Author: Dave Airlie <airlied at dhcp-1-203.bne.redhat.com>
-Date:   Tue Apr 21 11:55:16 2009 +1000
-
-    radeon: fixup bandwidth calcs for second legacy head
-
-commit b462b817a8dee1e8b69f8118862e77674a56faa4
-Author: Dave Airlie <airlied at dhcp-1-203.bne.redhat.com>
-Date:   Tue Apr 21 11:15:52 2009 +1000
-
-    radeon: fix bios parsing bug for LCD DDC, also make LCD code use core ddc
-
-commit 5d9a97d1d81e5d0c0115e01d7a1cf7b3f72b3c0d
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 17 20:49:35 2009 +1000
-
-    drm: add missing helper commit
-
-commit fa4687fdb659e807b8e3b05bf971f79e7aebde62
-Merge: 9283b7e 389363f
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 17 16:05:30 2009 +1000
-
-    Merge remote branch 'origin/drm-rawhide' into drm-f11
-
-commit 389363fe962f28bfa41eb8d18c6171d9f5e388b3
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 17 16:02:47 2009 +1000
-
-    drm: set full mode when we have a connector change.
-    
-    for some reason we have two levels of set base detection, this seems redundant
-    and most likely is. If we get a userspace mode set and the encoder list
-    is different we have to set the full mode.
-    
-    Add a flag to make sure a full set is done, however I think we can probably
-    just cleanup inside mode_set properly.
-
-commit 9283b7e0503c439ccde80b808044e5581a4b3117
-Merge: 4fb1fe8 69c4926
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 17 14:08:45 2009 +1000
-
-    Merge remote branch 'origin/drm-rawhide' into drm-f11
-
-commit 69c492681103cd6d5db3434a1646dc71d354bdee
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 17 14:04:45 2009 +1000
-
-    radeon: fix agp test hook
-
-commit 33769d2b889e01e0026ce8980ce4f5803ce14d15
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 17 14:04:02 2009 +1000
-
-    radeon: fixup palette setting and add support for 30-bit.
-    
-    The radeon palette can handle 30-bit on all cards. Also
-    fix oops when setting palette on disconnected crtc
-
-commit 4fb1fe8e8696cd2fd7485ebf3fa01c0ac491a6ae
-Merge: 18efcb5 37267b0
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 17 11:05:43 2009 +1000
-
-    Merge remote branch 'origin/drm-rawhide' into drm-f11
-
-commit 37267b0eab798dbdb336470ba3fbe05269665acc
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 17 10:50:48 2009 +1000
-
-    radeon: add yet another test hook for agp
-
-commit 80a878ea6be30bcd9a48d9b825f0bc5f42a6f31f
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Fri Apr 17 10:45:51 2009 +1000
-
-    radeon: r3xx/r4xx hw i2c engine ties up lines when in reset
-    
-    When the hw offload engine is in reset, it ties up the DDC
-    lines on certain chips
-
-commit 19f4dc490ab0417a28c100012bdd8d3633fd42a7
-Author: Adam Jackson <ajax at redhat.com>
-Date:   Fri Apr 17 08:41:09 2009 +1000
-
-    radeon: fix panel mode name
-
-commit 18efcb54320d301dc356647a8fc2a2d308d8ef46
-Merge: e9777f8 1d8fea4
-Author: Dave Airlie <airlied at redhat.com>
-Date:   Wed Apr 15 16:05:37 2009 +1000
-
-    Merge remote branch 'origin/drm-rawhide' into drm-f11
-
[...2613 lines suppressed...]
  
  extern int radeon_no_wb;
@@ -24022,7 +21536,7 @@ index ed4d27e..009bbcd 100644
  
  extern u32 radeon_get_ring_head(drm_radeon_private_t *dev_priv);
  extern void radeon_set_ring_head(drm_radeon_private_t *dev_priv, u32 val);
-@@ -397,7 +531,7 @@ extern int radeon_engine_reset(struct drm_device *dev, void *data, struct drm_fi
+@@ -398,7 +532,7 @@ extern int radeon_engine_reset(struct drm_device *dev, void *data, struct drm_fi
  extern int radeon_fullscreen(struct drm_device *dev, void *data, struct drm_file *file_priv);
  extern int radeon_cp_buffers(struct drm_device *dev, void *data, struct drm_file *file_priv);
  extern u32 radeon_read_fb_location(drm_radeon_private_t *dev_priv);
@@ -24031,7 +21545,7 @@ index ed4d27e..009bbcd 100644
  extern void radeon_write_agp_base(drm_radeon_private_t *dev_priv, u64 agp_base);
  extern u32 RADEON_READ_MM(drm_radeon_private_t *dev_priv, int addr);
  
-@@ -406,12 +540,9 @@ extern struct drm_buf *radeon_freelist_get(struct drm_device * dev);
+@@ -407,12 +541,9 @@ extern struct drm_buf *radeon_freelist_get(struct drm_device * dev);
  
  extern int radeon_wait_ring(drm_radeon_private_t * dev_priv, int n);
  
@@ -24045,7 +21559,7 @@ index ed4d27e..009bbcd 100644
  extern int radeon_mem_alloc(struct drm_device *dev, void *data, struct drm_file *file_priv);
  extern int radeon_mem_free(struct drm_device *dev, void *data, struct drm_file *file_priv);
  extern int radeon_mem_init_heap(struct drm_device *dev, void *data, struct drm_file *file_priv);
-@@ -427,6 +558,7 @@ extern void radeon_write_ring_rptr(drm_radeon_private_t *dev_priv, u32 off, u32
+@@ -428,6 +559,7 @@ extern void radeon_write_ring_rptr(drm_radeon_private_t *dev_priv, u32 off, u32
  extern void radeon_irq_set_state(struct drm_device *dev, u32 mask, int state);
  extern int radeon_irq_emit(struct drm_device *dev, void *data, struct drm_file *file_priv);
  extern int radeon_irq_wait(struct drm_device *dev, void *data, struct drm_file *file_priv);
@@ -24053,7 +21567,7 @@ index ed4d27e..009bbcd 100644
  
  extern void radeon_do_release(struct drm_device * dev);
  extern u32 radeon_get_vblank_counter(struct drm_device *dev, int crtc);
-@@ -443,13 +575,13 @@ extern int radeon_vblank_crtc_set(struct drm_device *dev, int64_t value);
+@@ -444,13 +576,13 @@ extern int radeon_vblank_crtc_set(struct drm_device *dev, int64_t value);
  extern int radeon_driver_load(struct drm_device *dev, unsigned long flags);
  extern int radeon_driver_unload(struct drm_device *dev);
  extern int radeon_driver_firstopen(struct drm_device *dev);
@@ -24071,7 +21585,7 @@ index ed4d27e..009bbcd 100644
  extern long radeon_compat_ioctl(struct file *filp, unsigned int cmd,
  				unsigned long arg);
  
-@@ -478,6 +610,12 @@ extern int r600_cp_dispatch_indirect(struct drm_device *dev,
+@@ -479,6 +611,12 @@ extern int r600_cp_dispatch_indirect(struct drm_device *dev,
  extern int r600_page_table_init(struct drm_device *dev);
  extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info *gart_info);
  
@@ -24084,7 +21598,7 @@ index ed4d27e..009bbcd 100644
  /* Flags for stats.boxes
   */
  #define RADEON_BOX_DMA_IDLE      0x1
-@@ -486,12 +624,17 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
+@@ -487,12 +625,17 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
  #define RADEON_BOX_WAIT_IDLE     0x8
  #define RADEON_BOX_TEXTURE_LOAD  0x10
  
@@ -24102,7 +21616,7 @@ index ed4d27e..009bbcd 100644
  #define RADEON_AGP_COMMAND		0x0f60
  #define RADEON_AGP_COMMAND_PCI_CONFIG   0x0060	/* offset in PCI config */
  #	define RADEON_AGP_ENABLE	(1<<8)
-@@ -667,16 +810,6 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
+@@ -668,16 +811,6 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
  #define R520_MC_IND_WR_EN (1 << 24)
  #define R520_MC_IND_DATA  0x74
  
@@ -24119,7 +21633,7 @@ index ed4d27e..009bbcd 100644
  #define RADEON_MPP_TB_CONFIG		0x01c0
  #define RADEON_MEM_CNTL			0x0140
  #define RADEON_MEM_SDRAM_MODE_REG	0x0158
-@@ -740,6 +873,7 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
+@@ -741,6 +874,7 @@ extern void r600_page_table_cleanup(struct drm_device *dev, struct drm_ati_pciga
  #define RADEON_SCRATCH_REG3		0x15ec
  #define RADEON_SCRATCH_REG4		0x15f0
  #define RADEON_SCRATCH_REG5		0x15f4
@@ -24127,7 +21641,7 @@ index ed4d27e..009bbcd 100644
  #define RADEON_SCRATCH_UMSK		0x0770
  #define RADEON_SCRATCH_ADDR		0x0774
  
-@@ -762,6 +896,12 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -763,6 +897,12 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  
  #define R600_SCRATCHOFF(x)		(R600_SCRATCH_REG_OFFSET + 4*(x))
  
@@ -24140,7 +21654,7 @@ index ed4d27e..009bbcd 100644
  #define RADEON_GEN_INT_CNTL		0x0040
  #	define RADEON_CRTC_VBLANK_MASK		(1 << 0)
  #	define RADEON_CRTC2_VBLANK_MASK		(1 << 9)
-@@ -779,10 +919,13 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -780,10 +920,13 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  #	define RADEON_SW_INT_FIRE		(1 << 26)
  #       define R500_DISPLAY_INT_STATUS          (1 << 0)
  
@@ -24158,7 +21672,7 @@ index ed4d27e..009bbcd 100644
  
  #define RADEON_ISYNC_CNTL		0x1724
  #	define RADEON_ISYNC_ANY2D_IDLE3D	(1 << 0)
-@@ -821,12 +964,17 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -822,12 +965,17 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  #define RADEON_PP_TXFILTER_1		0x1c6c
  #define RADEON_PP_TXFILTER_2		0x1c84
  
@@ -24182,7 +21696,7 @@ index ed4d27e..009bbcd 100644
  #define RADEON_RB3D_CNTL		0x1c3c
  #	define RADEON_ALPHA_BLEND_ENABLE	(1 << 0)
  #	define RADEON_PLANE_MASK_ENABLE		(1 << 1)
-@@ -853,11 +1001,6 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -854,11 +1002,6 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  #	define R300_ZC_FLUSH		        (1 << 0)
  #	define R300_ZC_FREE		        (1 << 1)
  #	define R300_ZC_BUSY		        (1 << 31)
@@ -24194,7 +21708,7 @@ index ed4d27e..009bbcd 100644
  #define R300_RB3D_DSTCACHE_CTLSTAT              0x4e4c
  #	define R300_RB3D_DC_FLUSH		(2 << 0)
  #	define R300_RB3D_DC_FREE		(2 << 2)
-@@ -865,15 +1008,15 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -866,15 +1009,15 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  #define RADEON_RB3D_ZSTENCILCNTL	0x1c2c
  #	define RADEON_Z_TEST_MASK		(7 << 4)
  #	define RADEON_Z_TEST_ALWAYS		(7 << 4)
@@ -24214,7 +21728,7 @@ index ed4d27e..009bbcd 100644
  #define RADEON_RBBM_SOFT_RESET		0x00f0
  #	define RADEON_SOFT_RESET_CP		(1 <<  0)
  #	define RADEON_SOFT_RESET_HI		(1 <<  1)
-@@ -1051,6 +1194,7 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1052,6 +1195,7 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  #	define RADEON_PRE_WRITE_LIMIT_SHIFT	23
  
  #define RADEON_CP_IB_BASE		0x0738
@@ -24222,7 +21736,7 @@ index ed4d27e..009bbcd 100644
  
  #define RADEON_CP_CSQ_CNTL		0x0740
  #	define RADEON_CSQ_CNT_PRIMARY_MASK	(0xff << 0)
-@@ -1061,6 +1205,8 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1062,6 +1206,8 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  #	define RADEON_CSQ_PRIBM_INDBM		(4 << 28)
  #	define RADEON_CSQ_PRIPIO_INDPIO		(15 << 28)
  
@@ -24231,7 +21745,7 @@ index ed4d27e..009bbcd 100644
  #define RADEON_AIC_CNTL			0x01d0
  #	define RADEON_PCIGART_TRANSLATE_EN	(1 << 0)
  #	define RS400_MSI_REARM	                (1 << 3)
-@@ -1143,27 +1289,6 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1144,27 +1290,6 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  #define RADEON_NUM_VERTICES_SHIFT		16
  
  #define RADEON_COLOR_FORMAT_CI8		2
@@ -24259,7 +21773,7 @@ index ed4d27e..009bbcd 100644
  
  #define R200_PP_TXCBLEND_0                0x2f00
  #define R200_PP_TXCBLEND_1                0x2f10
-@@ -1274,16 +1399,44 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1275,16 +1400,44 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  
  #define R200_SE_TCL_POINT_SPRITE_CNTL     0x22c4
  
@@ -24306,7 +21820,7 @@ index ed4d27e..009bbcd 100644
  #define R500_D1CRTC_STATUS 0x609c
  #define R500_D2CRTC_STATUS 0x689c
  #define R500_CRTC_V_BLANK (1<<0)
-@@ -1745,6 +1898,8 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
+@@ -1746,6 +1899,8 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index);
  #define RADEON_RING_HIGH_MARK		128
  
  #define RADEON_PCIGART_TABLE_SIZE      (32*1024)
@@ -24315,7 +21829,7 @@ index ed4d27e..009bbcd 100644
  
  #define RADEON_READ(reg)	DRM_READ32(  dev_priv->mmio, (reg) )
  #define RADEON_WRITE(reg, val)                                          \
-@@ -1759,11 +1914,24 @@ do {									\
+@@ -1760,11 +1915,24 @@ do {									\
  #define RADEON_READ8(reg)	DRM_READ8(  dev_priv->mmio, (reg) )
  #define RADEON_WRITE8(reg,val)	DRM_WRITE8( dev_priv->mmio, (reg), (val) )
  
@@ -24345,7 +21859,7 @@ index ed4d27e..009bbcd 100644
  } while (0)
  
  #define RADEON_WRITE_PCIE(addr, val)					\
-@@ -1801,15 +1969,18 @@ do {							        \
+@@ -1802,15 +1970,18 @@ do {							        \
  	RADEON_WRITE(RS600_MC_DATA, val);                       \
  } while (0)
  
@@ -24367,7 +21881,7 @@ index ed4d27e..009bbcd 100644
  } while (0)
  
  #define CP_PACKET0( reg, n )						\
-@@ -1830,7 +2001,7 @@ do {									\
+@@ -1831,7 +2002,7 @@ do {									\
  #define RADEON_WAIT_UNTIL_2D_IDLE() do {				\
  	OUT_RING( CP_PACKET0( RADEON_WAIT_UNTIL, 0 ) );			\
  	OUT_RING( (RADEON_WAIT_2D_IDLECLEAN |				\
@@ -24376,7 +21890,7 @@ index ed4d27e..009bbcd 100644
  } while (0)
  
  #define RADEON_WAIT_UNTIL_3D_IDLE() do {				\
-@@ -2035,4 +2206,159 @@ extern void radeon_commit_ring(drm_radeon_private_t *dev_priv);
+@@ -2036,4 +2207,159 @@ extern void radeon_commit_ring(drm_radeon_private_t *dev_priv);
  	write &= mask;						\
  } while (0)
  

drm-next.patch:

Index: drm-next.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-next.patch,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -p -r1.16 -r1.17
--- drm-next.patch	5 May 2009 10:28:11 -0000	1.16
+++ drm-next.patch	6 May 2009 03:12:02 -0000	1.17
@@ -389,7 +389,7 @@ index 809ec0f..7d1e53c 100644
  
  	mutex_lock(&dev->struct_mutex);
 diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
-index 1c3a8c5..a04639d 100644
+index 1c3a8c5..4589044 100644
 --- a/drivers/gpu/drm/drm_crtc_helper.c
 +++ b/drivers/gpu/drm/drm_crtc_helper.c
 @@ -42,6 +42,26 @@ static struct drm_display_mode std_modes[] = {
@@ -441,7 +441,47 @@ index 1c3a8c5..a04639d 100644
  	list_for_each_entry_safe(mode, t, &connector->modes, head) {
  		if (mode->status == MODE_OK)
  			mode->status = connector_funcs->mode_valid(connector,
-@@ -885,7 +913,6 @@ bool drm_helper_plugged_event(struct drm_device *dev)
+@@ -533,7 +561,6 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
+ 	int saved_x, saved_y;
+ 	struct drm_encoder *encoder;
+ 	bool ret = true;
+-	bool depth_changed, bpp_changed;
+ 
+ 	adjusted_mode = drm_mode_duplicate(dev, mode);
+ 
+@@ -542,15 +569,6 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
+ 	if (!crtc->enabled)
+ 		return true;
+ 
+-	if (old_fb && crtc->fb) {
+-		depth_changed = (old_fb->depth != crtc->fb->depth);
+-		bpp_changed = (old_fb->bits_per_pixel !=
+-			       crtc->fb->bits_per_pixel);
+-	} else {
+-		depth_changed = true;
+-		bpp_changed = true;
+-	}
+-
+ 	saved_mode = crtc->mode;
+ 	saved_x = crtc->x;
+ 	saved_y = crtc->y;
+@@ -562,15 +580,6 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
+ 	crtc->x = x;
+ 	crtc->y = y;
+ 
+-	if (drm_mode_equal(&saved_mode, &crtc->mode)) {
+-		if (saved_x != crtc->x || saved_y != crtc->y ||
+-		    depth_changed || bpp_changed) {
+-			ret = !crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y,
+-							 old_fb);
+-			goto done;
+-		}
+-	}
+-
+ 	/* Pass our mode to the connectors and the CRTC to give them a chance to
+ 	 * adjust it according to limitations or connector properties, and also
+ 	 * a chance to reject the mode entirely.
+@@ -885,7 +894,6 @@ bool drm_helper_plugged_event(struct drm_device *dev)
  /**
   * drm_initial_config - setup a sane initial connector configuration
   * @dev: DRM device
@@ -449,7 +489,7 @@ index 1c3a8c5..a04639d 100644
   *
   * LOCKING:
   * Called at init time, must take mode config lock.
-@@ -897,7 +924,7 @@ bool drm_helper_plugged_event(struct drm_device *dev)
+@@ -897,7 +905,7 @@ bool drm_helper_plugged_event(struct drm_device *dev)
   * RETURNS:
   * Zero if everything went ok, nonzero otherwise.
   */
@@ -700,7 +740,7 @@ index 0000000..c77c6c6
 +#endif /* CONFIG_DEBUG_FS */
 +
 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
-index 14c7a23..c4ada8b 100644
+index 14c7a23..f01def1 100644
 --- a/drivers/gpu/drm/drm_drv.c
 +++ b/drivers/gpu/drm/drm_drv.c
 @@ -46,9 +46,11 @@
@@ -851,7 +891,13 @@ index 14c7a23..c4ada8b 100644
  	char *kdata = NULL;
  
  	atomic_inc(&dev->ioctl_count);
-@@ -496,10 +460,14 @@ int drm_ioctl(struct inode *inode, struct file *filp,
+@@ -492,14 +456,19 @@ int drm_ioctl(struct inode *inode, struct file *filp,
+ 		retcode = -EINVAL;
+ 	} else if (((ioctl->flags & DRM_ROOT_ONLY) && !capable(CAP_SYS_ADMIN)) ||
+ 		   ((ioctl->flags & DRM_AUTH) && !file_priv->authenticated) ||
+-		   ((ioctl->flags & DRM_MASTER) && !file_priv->is_master)) {
++		   ((ioctl->flags & DRM_MASTER) && !file_priv->is_master) ||
++		   (!(ioctl->flags & DRM_CONTROL_ALLOW) && (file_priv->minor->type == DRM_MINOR_CONTROL))) {
  		retcode = -EACCES;
  	} else {
  		if (cmd & (IOC_IN | IOC_OUT)) {
@@ -870,7 +916,7 @@ index 14c7a23..c4ada8b 100644
  			}
  		}
  
-@@ -520,7 +488,7 @@ int drm_ioctl(struct inode *inode, struct file *filp,
+@@ -520,7 +489,7 @@ int drm_ioctl(struct inode *inode, struct file *filp,
  	}
  
        err_i1:
@@ -879,7 +925,7 @@ index 14c7a23..c4ada8b 100644
  		kfree(kdata);
  	atomic_dec(&dev->ioctl_count);
  	if (retcode)
-@@ -530,7 +498,7 @@ int drm_ioctl(struct inode *inode, struct file *filp,
+@@ -530,7 +499,7 @@ int drm_ioctl(struct inode *inode, struct file *filp,
  
  EXPORT_SYMBOL(drm_ioctl);
  
@@ -2415,7 +2461,7 @@ index 8df849f..bae5391 100644
 -}
 -#endif
 diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
-index 7c8b15b..d009661 100644
+index 7c8b15b..b9631e3 100644
 --- a/drivers/gpu/drm/drm_stub.c
 +++ b/drivers/gpu/drm/drm_stub.c
 @@ -50,6 +50,7 @@ struct idr drm_minors_idr;
@@ -2426,7 +2472,42 @@ index 7c8b15b..d009661 100644
  
  static int drm_minor_get_id(struct drm_device *dev, int type)
  {
-@@ -313,7 +314,15 @@ static int drm_get_minor(struct drm_device *dev, struct drm_minor **minor, int t
+@@ -158,6 +159,9 @@ void drm_master_put(struct drm_master **master)
+ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
+ 			struct drm_file *file_priv)
+ {
++	if (file_priv->is_master)
++		return 0;
++
+ 	if (file_priv->minor->master && file_priv->minor->master != file_priv->master)
+ 		return -EINVAL;
+ 
+@@ -168,6 +172,7 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
+ 	    file_priv->minor->master != file_priv->master) {
+ 		mutex_lock(&dev->struct_mutex);
+ 		file_priv->minor->master = drm_master_get(file_priv->master);
++		file_priv->is_master = 1;
+ 		mutex_unlock(&dev->struct_mutex);
+ 	}
+ 
+@@ -177,10 +182,15 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
+ int drm_dropmaster_ioctl(struct drm_device *dev, void *data,
+ 			 struct drm_file *file_priv)
+ {
+-	if (!file_priv->master)
++	if (!file_priv->is_master)
++		return -EINVAL;
++
++	if (!file_priv->minor->master)
+ 		return -EINVAL;
++
+ 	mutex_lock(&dev->struct_mutex);
+ 	drm_master_put(&file_priv->minor->master);
++	file_priv->is_master = 0;
+ 	mutex_unlock(&dev->struct_mutex);
+ 	return 0;
+ }
+@@ -313,7 +323,15 @@ static int drm_get_minor(struct drm_device *dev, struct drm_minor **minor, int t
  			goto err_mem;
  		}
  	} else
@@ -2443,7 +2524,7 @@ index 7c8b15b..d009661 100644
  
  	ret = drm_sysfs_device_add(new_minor);
  	if (ret) {
-@@ -372,6 +381,7 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
+@@ -372,6 +390,7 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
  	}
  
  	if (drm_core_check_feature(dev, DRIVER_MODESET)) {
@@ -2451,7 +2532,21 @@ index 7c8b15b..d009661 100644
  		ret = drm_get_minor(dev, &dev->control, DRM_MINOR_CONTROL);
  		if (ret)
  			goto err_g2;
-@@ -395,9 +405,9 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
+@@ -383,55 +402,36 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
+ 	if (dev->driver->load) {
+ 		ret = dev->driver->load(dev, ent->driver_data);
+ 		if (ret)
+-			goto err_g3;
++			goto err_g4;
+ 	}
+ 
+         /* setup the grouping for the legacy output */
+ 	if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+ 		ret = drm_mode_group_init_legacy_group(dev, &dev->primary->mode_group);
+ 		if (ret)
+-			goto err_g3;
++			goto err_g4;
+ 	}
  
  	list_add_tail(&dev->driver_item, &driver->device_list);
  
@@ -2463,7 +2558,15 @@ index 7c8b15b..d009661 100644
  
  	return 0;
  
-@@ -409,29 +419,7 @@ err_g1:
+-err_g3:
++err_g4:
+ 	drm_put_minor(&dev->primary);
++err_g3:
++	if (drm_core_check_feature(dev, DRIVER_MODESET))
++		drm_put_minor(&dev->control);
+ err_g2:
+ 	pci_disable_device(pdev);
+ err_g1:
  	drm_free(dev, sizeof(*dev), DRM_MEM_STUB);
  	return ret;
  }
@@ -2494,7 +2597,7 @@ index 7c8b15b..d009661 100644
  
  /**
   * Put a secondary minor number.
-@@ -451,6 +439,10 @@ int drm_put_minor(struct drm_minor **minor_p)
+@@ -451,6 +451,10 @@ int drm_put_minor(struct drm_minor **minor_p)
  
  	if (minor->type == DRM_MINOR_LEGACY)
  		drm_proc_cleanup(minor, drm_proc_root);
@@ -2505,7 +2608,7 @@ index 7c8b15b..d009661 100644
  	drm_sysfs_device_remove(minor);
  
  	idr_remove(&drm_minors_idr, minor->index);
-@@ -459,3 +451,67 @@ int drm_put_minor(struct drm_minor **minor_p)
+@@ -459,3 +463,67 @@ int drm_put_minor(struct drm_minor **minor_p)
  	*minor_p = NULL;
  	return 0;
  }
@@ -2551,11 +2654,11 @@ index 7c8b15b..d009661 100644
 +		dev->agp = NULL;
 +	}
 +
-+	drm_ht_remove(&dev->map_hash);
-+	drm_ctxbitmap_cleanup(dev);
-+
 +	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
 +		drm_rmmap(dev, r_list->map);
++	drm_ht_remove(&dev->map_hash);
++
++	drm_ctxbitmap_cleanup(dev);
 +
 +	if (drm_core_check_feature(dev, DRIVER_MODESET))
 +		drm_put_minor(&dev->control);
@@ -2574,7 +2677,7 @@ index 7c8b15b..d009661 100644
 +}
 +EXPORT_SYMBOL(drm_put_dev);
 diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
-index 5aa6780..bc0c684 100644
+index 5aa6780..8f93729 100644
 --- a/drivers/gpu/drm/drm_sysfs.c
 +++ b/drivers/gpu/drm/drm_sysfs.c
 @@ -35,7 +35,9 @@ static int drm_sysfs_suspend(struct device *dev, pm_message_t state)
@@ -2620,7 +2723,15 @@ index 5aa6780..bc0c684 100644
  /**
   * drm_sysfs_device_release - do nothing
   * @dev: Linux device
-@@ -359,8 +349,8 @@ int drm_sysfs_connector_add(struct drm_connector *connector)
+@@ -142,6 +132,7 @@ static struct device_attribute device_attrs[] = {
+  */
+ static void drm_sysfs_device_release(struct device *dev)
+ {
++	memset(dev, 0, sizeof(struct device));
+ 	return;
+ }
+ 
+@@ -359,8 +350,8 @@ int drm_sysfs_connector_add(struct drm_connector *connector)
  	DRM_DEBUG("adding \"%s\" to sysfs\n",
  		  drm_get_connector_name(connector));
  
@@ -2631,7 +2742,7 @@ index 5aa6780..bc0c684 100644
  	ret = device_register(&connector->kdev);
  
  	if (ret) {
-@@ -461,6 +451,7 @@ void drm_sysfs_hotplug_event(struct drm_device *dev)
+@@ -461,6 +452,7 @@ void drm_sysfs_hotplug_event(struct drm_device *dev)
  
  	kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, envp);
  }
@@ -2639,7 +2750,7 @@ index 5aa6780..bc0c684 100644
  
  /**
   * drm_sysfs_device_add - adds a class device to sysfs for a character driver
-@@ -474,7 +465,6 @@ void drm_sysfs_hotplug_event(struct drm_device *dev)
+@@ -474,7 +466,6 @@ void drm_sysfs_hotplug_event(struct drm_device *dev)
  int drm_sysfs_device_add(struct drm_minor *minor)
  {
  	int err;
@@ -2647,7 +2758,7 @@ index 5aa6780..bc0c684 100644
  	char *minor_str;
  
  	minor->kdev.parent = &minor->dev->pdev->dev;
-@@ -496,18 +486,8 @@ int drm_sysfs_device_add(struct drm_minor *minor)
+@@ -496,21 +487,9 @@ int drm_sysfs_device_add(struct drm_minor *minor)
  		goto err_out;
  	}
  
@@ -2663,10 +2774,13 @@ index 5aa6780..bc0c684 100644
 -	if (i > 0)
 -		for (j = 0; j < i; j++)
 -			device_remove_file(&minor->kdev, &device_attrs[j]);
- 	device_unregister(&minor->kdev);
+-	device_unregister(&minor->kdev);
  err_out:
+-
+ 	return err;
+ }
  
-@@ -523,9 +503,5 @@ err_out:
+@@ -523,9 +502,5 @@ err_out:
   */
  void drm_sysfs_device_remove(struct drm_minor *minor)
  {
@@ -6685,7 +6799,7 @@ index 1117b9c..193938b 100644
  
  /* I2C registers for SDVO */
 diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
-index b05cb67..0ab2d3a 100644
+index b05cb67..d2c3298 100644
 --- a/drivers/gpu/drm/i915/intel_tv.c
 +++ b/drivers/gpu/drm/i915/intel_tv.c
 @@ -217,8 +217,8 @@ static const u32 filter_table[] = {
@@ -7197,9 +7311,22 @@ index 88257c2..3d264f2 100644
  	if ( !test_bit( 0, &dev_priv->prim.wrapped ) ) {		\
  		if ( dev_priv->prim.space <				\
 diff --git a/drivers/gpu/drm/r128/r128_cce.c b/drivers/gpu/drm/r128/r128_cce.c
-index c31afbd..32de4ce 100644
+index c31afbd..077c045 100644
 --- a/drivers/gpu/drm/r128/r128_cce.c
 +++ b/drivers/gpu/drm/r128/r128_cce.c
+@@ -511,9 +511,9 @@ static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init)
+ 
+ #if __OS_HAS_AGP
+ 	if (!dev_priv->is_pci) {
+-		drm_core_ioremap(dev_priv->cce_ring, dev);
+-		drm_core_ioremap(dev_priv->ring_rptr, dev);
+-		drm_core_ioremap(dev->agp_buffer_map, dev);
++		drm_core_ioremap_wc(dev_priv->cce_ring, dev);
++		drm_core_ioremap_wc(dev_priv->ring_rptr, dev);
++		drm_core_ioremap_wc(dev->agp_buffer_map, dev);
+ 		if (!dev_priv->cce_ring->handle ||
+ 		    !dev_priv->ring_rptr->handle ||
+ 		    !dev->agp_buffer_map->handle) {
 @@ -525,11 +525,12 @@ static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init)
  	} else
  #endif
@@ -33731,10 +33858,22 @@ index fef2078..13a60f4 100644
  	.master_destroy = radeon_master_destroy,
  	.irq_preinstall = radeon_driver_irq_preinstall,
 diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
-index 490bc7c..ed4d27e 100644
+index 490bc7c..8071d96 100644
 --- a/drivers/gpu/drm/radeon/radeon_drv.h
 +++ b/drivers/gpu/drm/radeon/radeon_drv.h
-@@ -126,6 +126,7 @@ enum radeon_family {
+@@ -99,9 +99,10 @@
+  * 1.27- Add support for IGP GART
+  * 1.28- Add support for VBL on CRTC2
+  * 1.29- R500 3D cmd buffer support
++ * 1.30- Add support for occlusion queries
+  */
+ #define DRIVER_MAJOR		1
+-#define DRIVER_MINOR		29
++#define DRIVER_MINOR		30
+ #define DRIVER_PATCHLEVEL	0
+ 
+ /*
+@@ -126,6 +127,7 @@ enum radeon_family {
  	CHIP_RV410,
  	CHIP_RS400,
  	CHIP_RS480,
@@ -33742,7 +33881,7 @@ index 490bc7c..ed4d27e 100644
  	CHIP_RS690,
  	CHIP_RS740,
  	CHIP_RV515,
-@@ -134,6 +135,16 @@ enum radeon_family {
+@@ -134,6 +136,16 @@ enum radeon_family {
  	CHIP_RV560,
  	CHIP_RV570,
  	CHIP_R580,
@@ -33759,7 +33898,7 @@ index 490bc7c..ed4d27e 100644
  	CHIP_LAST,
  };
  
-@@ -160,10 +171,6 @@ enum radeon_chip_flags {
+@@ -160,10 +172,6 @@ enum radeon_chip_flags {
  	RADEON_IS_IGPGART = 0x01000000UL,
  };
  
@@ -33770,7 +33909,7 @@ index 490bc7c..ed4d27e 100644
  typedef struct drm_radeon_freelist {
  	unsigned int age;
  	struct drm_buf *buf;
-@@ -221,10 +228,11 @@ struct radeon_virt_surface {
+@@ -221,10 +229,11 @@ struct radeon_virt_surface {
  	u32 upper;
  	u32 flags;
  	struct drm_file *file_priv;
@@ -33784,7 +33923,7 @@ index 490bc7c..ed4d27e 100644
  
  struct drm_radeon_master_private {
  	drm_local_map_t *sarea;
-@@ -248,7 +256,6 @@ typedef struct drm_radeon_private {
+@@ -248,7 +257,6 @@ typedef struct drm_radeon_private {
  	drm_radeon_freelist_t *head;
  	drm_radeon_freelist_t *tail;
  	int last_buf;
@@ -33792,7 +33931,7 @@ index 490bc7c..ed4d27e 100644
  	int writeback_works;
  
  	int usec_timeout;
-@@ -316,11 +323,31 @@ typedef struct drm_radeon_private {
+@@ -316,11 +324,31 @@ typedef struct drm_radeon_private {
  
  	/* starting from here on, data is preserved accross an open */
  	uint32_t flags;		/* see radeon_chip_flags */
@@ -33825,7 +33964,7 @@ index 490bc7c..ed4d27e 100644
  } drm_radeon_private_t;
  
  typedef struct drm_radeon_buf_priv {
-@@ -338,6 +365,12 @@ extern int radeon_no_wb;
+@@ -338,6 +366,12 @@ extern int radeon_no_wb;
  extern struct drm_ioctl_desc radeon_ioctls[];
  extern int radeon_max_ioctl;
  
@@ -33838,7 +33977,7 @@ index 490bc7c..ed4d27e 100644
  /* Check whether the given hardware address is inside the framebuffer or the
   * GART area.
   */
-@@ -364,6 +397,9 @@ extern int radeon_engine_reset(struct drm_device *dev, void *data, struct drm_fi
+@@ -364,6 +398,9 @@ extern int radeon_engine_reset(struct drm_device *dev, void *data, struct drm_fi
  extern int radeon_fullscreen(struct drm_device *dev, void *data, struct drm_file *file_priv);
  extern int radeon_cp_buffers(struct drm_device *dev, void *data, struct drm_file *file_priv);
  extern u32 radeon_read_fb_location(drm_radeon_private_t *dev_priv);
@@ -33848,7 +33987,7 @@ index 490bc7c..ed4d27e 100644
  
  extern void radeon_freelist_reset(struct drm_device * dev);
  extern struct drm_buf *radeon_freelist_get(struct drm_device * dev);
-@@ -383,6 +419,10 @@ extern void radeon_mem_takedown(struct mem_block **heap);
+@@ -383,6 +420,10 @@ extern void radeon_mem_takedown(struct mem_block **heap);
  extern void radeon_mem_release(struct drm_file *file_priv,
  			       struct mem_block *heap);
  
@@ -33859,7 +33998,7 @@ index 490bc7c..ed4d27e 100644
  				/* radeon_irq.c */
  extern void radeon_irq_set_state(struct drm_device *dev, u32 mask, int state);
  extern int radeon_irq_emit(struct drm_device *dev, void *data, struct drm_file *file_priv);
-@@ -423,6 +463,21 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -423,6 +464,21 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  			     struct drm_file *file_priv,
  			     drm_radeon_kcmd_buffer_t *cmdbuf);
  
@@ -33881,7 +34020,7 @@ index 490bc7c..ed4d27e 100644
  /* Flags for stats.boxes
   */
  #define RADEON_BOX_DMA_IDLE      0x1
-@@ -434,6 +489,8 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -434,6 +490,8 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  /* Register definitions, register access macros and drmAddMap constants
   * for Radeon kernel driver.
   */
@@ -33890,7 +34029,7 @@ index 490bc7c..ed4d27e 100644
  
  #define RADEON_AGP_COMMAND		0x0f60
  #define RADEON_AGP_COMMAND_PCI_CONFIG   0x0060	/* offset in PCI config */
-@@ -556,6 +613,56 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -556,6 +614,56 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  #define RS690_MC_AGP_BASE               0x102
  #define RS690_MC_AGP_BASE_2             0x103
  
@@ -33947,7 +34086,7 @@ index 490bc7c..ed4d27e 100644
  #define R520_MC_IND_INDEX 0x70
  #define R520_MC_IND_WR_EN (1 << 24)
  #define R520_MC_IND_DATA  0x74
-@@ -580,7 +687,6 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -580,7 +688,6 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  /* pipe config regs */
  #define R400_GB_PIPE_SELECT             0x402c
  #define R500_DYN_SCLK_PWMEM_PIPE        0x000d /* PLL */
@@ -33955,7 +34094,7 @@ index 490bc7c..ed4d27e 100644
  #define R300_GB_TILE_CONFIG             0x4018
  #       define R300_ENABLE_TILING       (1 << 0)
  #       define R300_PIPE_COUNT_RV350    (0 << 1)
-@@ -639,9 +745,22 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -639,9 +746,22 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  
  #define RADEON_SCRATCHOFF( x )		(RADEON_SCRATCH_REG_OFFSET + 4*(x))
  
@@ -33981,7 +34120,7 @@ index 490bc7c..ed4d27e 100644
  
  #define RADEON_GEN_INT_CNTL		0x0040
  #	define RADEON_CRTC_VBLANK_MASK		(1 << 0)
-@@ -922,6 +1041,7 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -922,6 +1042,7 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  #define RADEON_CP_RB_CNTL		0x0704
  #	define RADEON_BUF_SWAP_32BIT		(2 << 16)
  #	define RADEON_RB_NO_UPDATE		(1 << 27)
@@ -33989,7 +34128,7 @@ index 490bc7c..ed4d27e 100644
  #define RADEON_CP_RB_RPTR_ADDR		0x070c
  #define RADEON_CP_RB_RPTR		0x0710
  #define RADEON_CP_RB_WPTR		0x0714
-@@ -983,6 +1103,14 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -983,6 +1104,14 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  #	define RADEON_CNTL_BITBLT_MULTI		0x00009B00
  #	define RADEON_CNTL_SET_SCISSORS		0xC0001E00
  
@@ -34004,7 +34143,7 @@ index 490bc7c..ed4d27e 100644
  #define RADEON_CP_PACKET_MASK		0xC0000000
  #define RADEON_CP_PACKET_COUNT_MASK	0x3fff0000
  #define RADEON_CP_PACKET0_REG_MASK	0x000007ff
-@@ -1181,6 +1309,422 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -1181,6 +1310,422 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  #define R500_D1_VBLANK_INTERRUPT (1 << 4)
  #define R500_D2_VBLANK_INTERRUPT (1 << 5)
  
@@ -34427,7 +34566,7 @@ index 490bc7c..ed4d27e 100644
  /* Constants */
  #define RADEON_MAX_USEC_TIMEOUT		100000	/* 100 ms */
  
-@@ -1190,6 +1734,11 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -1190,6 +1735,11 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  #define RADEON_LAST_SWI_REG		RADEON_SCRATCH_REG3
  #define RADEON_LAST_DISPATCH		1
  
@@ -34439,7 +34578,7 @@ index 490bc7c..ed4d27e 100644
  #define RADEON_MAX_VB_AGE		0x7fffffff
  #define RADEON_MAX_VB_VERTS		(0xffff)
  
-@@ -1198,7 +1747,15 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
+@@ -1198,7 +1748,15 @@ extern int r300_do_cp_cmdbuf(struct drm_device *dev,
  #define RADEON_PCIGART_TABLE_SIZE      (32*1024)
  
  #define RADEON_READ(reg)	DRM_READ32(  dev_priv->mmio, (reg) )
@@ -34456,7 +34595,7 @@ index 490bc7c..ed4d27e 100644
  #define RADEON_READ8(reg)	DRM_READ8(  dev_priv->mmio, (reg) )
  #define RADEON_WRITE8(reg,val)	DRM_WRITE8( dev_priv->mmio, (reg), (val) )
  
-@@ -1238,11 +1795,19 @@ do {								\
+@@ -1238,11 +1796,19 @@ do {								\
  	RADEON_WRITE(RS690_MC_INDEX, RS690_MC_INDEX_WR_ACK);	\
  } while (0)
  
@@ -34476,7 +34615,7 @@ index 490bc7c..ed4d27e 100644
  	else								\
  		RS480_WRITE_MCIND(addr, val);				\
  } while (0)
-@@ -1346,7 +1911,11 @@ do {								\
+@@ -1346,7 +1912,11 @@ do {								\
  	struct drm_radeon_master_private *master_priv = file_priv->master->driver_priv;	\
  	drm_radeon_sarea_t *sarea_priv = master_priv->sarea_priv;	\
  	if ( sarea_priv->last_dispatch >= RADEON_MAX_VB_AGE ) {		\
@@ -34489,7 +34628,7 @@ index 490bc7c..ed4d27e 100644
  		if ( __ret ) return __ret;				\
  		sarea_priv->last_dispatch = 0;				\
  		radeon_freelist_reset( dev );				\
-@@ -1368,21 +1937,40 @@ do {								\
+@@ -1368,21 +1938,40 @@ do {								\
  	OUT_RING( age );						\
  } while (0)
  
@@ -34533,7 +34672,7 @@ index 490bc7c..ed4d27e 100644
  	}								\
  	_nr = n; dev_priv->ring.space -= (n) * sizeof(u32);		\
  	ring = dev_priv->ring.start;					\
-@@ -1399,19 +1987,16 @@ do {								\
+@@ -1399,19 +1988,16 @@ do {								\
  		DRM_ERROR(						\
  			"ADVANCE_RING(): mismatch: nr: %x write: %x line: %d\n",	\
  			((dev_priv->ring.tail + _nr) & mask),		\
@@ -34759,6 +34898,45 @@ index d465b2f..456cd04 100644
  		}
  	} else {
  		mmio_base = drm_get_resource_start(dev, 0);
+diff --git a/drivers/gpu/drm/via/via_dma.c b/drivers/gpu/drm/via/via_dma.c
+index 7a339db..bfb92d2 100644
+--- a/drivers/gpu/drm/via/via_dma.c
++++ b/drivers/gpu/drm/via/via_dma.c
+@@ -481,11 +481,13 @@ static int via_wait_idle(drm_via_private_t * dev_priv)
+ {
+ 	int count = 10000000;
+ 
+-	while (!(VIA_READ(VIA_REG_STATUS) & VIA_VR_QUEUE_BUSY) && count--);
++	while (!(VIA_READ(VIA_REG_STATUS) & VIA_VR_QUEUE_BUSY) && --count)
++		;
+ 
+-	while (count-- && (VIA_READ(VIA_REG_STATUS) &
++	while (count && (VIA_READ(VIA_REG_STATUS) &
+ 			   (VIA_CMD_RGTR_BUSY | VIA_2D_ENG_BUSY |
+-			    VIA_3D_ENG_BUSY))) ;
++			    VIA_3D_ENG_BUSY)))
++		--count;
+ 	return count;
+ }
+ 
+@@ -705,7 +707,7 @@ static int via_cmdbuf_size(struct drm_device *dev, void *data, struct drm_file *
+ 	switch (d_siz->func) {
+ 	case VIA_CMDBUF_SPACE:
+ 		while (((tmp_size = via_cmdbuf_space(dev_priv)) < d_siz->size)
+-		       && count--) {
++		       && --count) {
+ 			if (!d_siz->wait) {
+ 				break;
+ 			}
+@@ -717,7 +719,7 @@ static int via_cmdbuf_size(struct drm_device *dev, void *data, struct drm_file *
+ 		break;
+ 	case VIA_CMDBUF_LAG:
+ 		while (((tmp_size = via_cmdbuf_lag(dev_priv)) > d_siz->size)
+-		       && count--) {
++		       && --count) {
+ 			if (!d_siz->wait) {
+ 				break;
+ 			}
 diff --git a/drivers/gpu/drm/via/via_drv.c b/drivers/gpu/drm/via/via_drv.c
 index 0993b44..bc2f518 100644
 --- a/drivers/gpu/drm/via/via_drv.c

drm-nouveau.patch:

Index: drm-nouveau.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-nouveau.patch,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -p -r1.47 -r1.48
--- drm-nouveau.patch	5 May 2009 10:28:11 -0000	1.47
+++ drm-nouveau.patch	6 May 2009 03:12:03 -0000	1.48
@@ -185,55 +185,6 @@ index c1173d8..2e4e667 100644
  	mutex_lock(&dev->struct_mutex);
  	drm_gem_object_unreference(obj);
  	mutex_unlock(&dev->struct_mutex);
-diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
-index 5f7e431..a84acdb 100644
---- a/drivers/gpu/drm/drm_stub.c
-+++ b/drivers/gpu/drm/drm_stub.c
-@@ -406,14 +406,14 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
- 	if (dev->driver->load) {
- 		ret = dev->driver->load(dev, ent->driver_data);
- 		if (ret)
--			goto err_g3;
-+			goto err_g4;
- 	}
- 
-         /* setup the grouping for the legacy output */
- 	if (drm_core_check_feature(dev, DRIVER_MODESET)) {
- 		ret = drm_mode_group_init_legacy_group(dev, &dev->primary->mode_group);
- 		if (ret)
--			goto err_g3;
-+			goto err_g4;
- 	}
- 
- 	list_add_tail(&dev->driver_item, &driver->device_list);
-@@ -424,8 +424,11 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
- 
- 	return 0;
- 
--err_g3:
-+err_g4:
- 	drm_put_minor(&dev->primary);
-+err_g3:
-+	if (drm_core_check_feature(dev, DRIVER_MODESET))
-+		drm_put_minor(&dev->control);
- err_g2:
- 	pci_disable_device(pdev);
- err_g1:
-@@ -507,11 +510,11 @@ void drm_put_dev(struct drm_device *dev)
- 		dev->agp = NULL;
- 	}
- 
--	drm_ht_remove(&dev->map_hash);
--	drm_ctxbitmap_cleanup(dev);
--
- 	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
- 		drm_rmmap(dev, r_list->map);
-+	drm_ht_remove(&dev->map_hash);
-+
-+	drm_ctxbitmap_cleanup(dev);
- 
- 	if (drm_core_check_feature(dev, DRIVER_MODESET))
- 		drm_put_minor(&dev->control);
 diff --git a/drivers/gpu/drm/nouveau/Makefile b/drivers/gpu/drm/nouveau/Makefile
 new file mode 100644
 index 0000000..06483d0


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/kernel.spec,v
retrieving revision 1.1590
retrieving revision 1.1591
diff -u -p -r1.1590 -r1.1591
--- kernel.spec	5 May 2009 10:28:13 -0000	1.1590
+++ kernel.spec	6 May 2009 03:12:04 -0000	1.1591
@@ -691,7 +691,6 @@ Patch1822: drm-intel-gen3-fb-hack.patch
 Patch1823: drm-intel-tiled-front.patch
 Patch1824: drm-intel-hdmi-edid-fix.patch
 Patch1825: drm-intel-tiling-transition.patch
-Patch1826: linux-2.6-drm-r128-ioremap.patch
 
 # kludge to make ich9 e1000 work
 Patch2000: linux-2.6-e1000-ich9.patch
@@ -1342,7 +1341,6 @@ ApplyPatch drm-intel-gen3-fb-hack.patch
 ApplyPatch drm-intel-tiled-front.patch
 ApplyPatch drm-intel-hdmi-edid-fix.patch
 ApplyPatch drm-intel-tiling-transition.patch
-ApplyPatch linux-2.6-drm-r128-ioremap.patch
 
 # linux1394 git patches
 ApplyPatch linux-2.6-firewire-git-update.patch
@@ -1965,6 +1963,11 @@ fi
 # and build.
 
 %changelog
+* Wed May 06 2009 Dave Airlie <airlied at redhat.com> 2.6.29.2-129
+- drm-next: update with latest patch queue for upstream + intel fixes
+- drm-modesetting-radeon.patch: rebase onto drm-next
+- drm-nouveau.patch: rebase onto drm-next
+
 * Tue May 05 2009 Dave Airlie <airlied at redhat.com> 2.6.29.2-128
 - radeon kms: backport some fixes - put back old internal interface
 


--- linux-2.6-drm-r128-ioremap.patch DELETED ---




More information about the scm-commits mailing list