[kernel] r19828 - in dists/sid/linux/debian: . patches patches/bugfix/all patches/features/all/drm

Ben Hutchings benh at alioth.debian.org
Wed Feb 20 05:16:46 UTC 2013


Author: benh
Date: Wed Feb 20 05:16:43 2013
New Revision: 19828

Log:
Update to 3.2.39

and update drm, agp to 3.4.32

Deleted:
   dists/sid/linux/debian/patches/bugfix/all/bridge-Pull-ip-header-into-skb-data-before-looking-i.patch
   dists/sid/linux/debian/patches/features/all/drm/efi-Make-efi_enabled-a-function-to-query-EFI-facilit.patch
Modified:
   dists/sid/linux/debian/changelog
   dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch
   dists/sid/linux/debian/patches/series

Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog	Wed Feb 20 03:24:36 2013	(r19827)
+++ dists/sid/linux/debian/changelog	Wed Feb 20 05:16:43 2013	(r19828)
@@ -1,4 +1,4 @@
-linux (3.2.38-1) UNRELEASED; urgency=low
+linux (3.2.39-1) UNRELEASED; urgency=low
 
   * New upstream stable update:
     http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.36
@@ -67,6 +67,38 @@
       (Closes: #696321)
     - printk: fix buffer overflow when calling log_prefix function from
       call_console_drivers
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.39
+    - USB: XHCI: fix memory leak of URB-private data
+    - sched/rt: Use root_domain of rt_rq not current processor
+    - mwifiex: fix incomplete scan in case of IE parsing error
+    - x86-64: Replace left over sti/cli in ia32 audit exit code
+    - Bluetooth: Fix handling of unexpected SMP PDUs
+    - ptrace/x86: Partly fix set_task_blockstep()->update_debugctlmsr() logic
+    - Fix race condition with PTRACE_SETREGS and fatal signal (CVE-2013-0871)
+      + ptrace: introduce signal_wake_up_state() and ptrace_signal_wake_up()
+      + ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL
+      + wake_up_process() should be never used to wakeup a TASK_STOPPED/TRACED
+        task
+    - net: prevent setting ttl=0 via IP_TTL
+    - ipv6: fix header length calculation in ip6_append_data()
+    - netxen: fix off by one bug in netxen_release_tx_buffer()
+    - r8169: remove the obsolete and incorrect AMD workaround
+    - net: loopback: fix a dst refcounting issue
+    - packet: fix leakage of tx_ring memory
+    - net: sctp: sctp_setsockopt_auth_key: use kzfree instead of kfree
+    - net: sctp: sctp_endpoint_free: zero out secret key data
+    - xen/netback: shutdown the ring if it contains garbage. (CVE-2013-0216)
+    - xen/netback: don't leak pages on failure in xen_netbk_tx_check_gop.
+    - xen/netback: free already allocated memory on failure in
+      xen_netbk_get_requests
+    - netback: correct netbk_tx_err to handle wrap around. (CVE-2013-0217)
+    - tcp: frto should not set snd_cwnd to 0
+    - tcp: fix for zero packets_in_flight was too broad
+    - tcp: fix MSG_SENDPAGE_NOTLAST logic
+    - bridge: Pull ip header into skb->data before looking into ip header.
+      (Closes: #697903)
+    - x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS.
+      (CVE-2013-0228)
 
   [ Ben Hutchings ]
   * Input: wacom - fix touch support for Bamboo Fun CTH-461
@@ -114,8 +146,6 @@
     - sched: Init idle->on_rq in init_idle()
     - sched: Check for idle task in might_sleep()
     - mm: swap: Initialize local locks early
-  * bridge: Pull ip header into skb->data before looking into ip header.
-    (Closes: #697903)
   * [armel/versatile,armhf/vexpress] i2c: Enable I2C, I2C_VERSATILE as modules
     (Closes: #696182)
   * ext4: Fix corruption by hole punch in large files (Closes: #685726)
@@ -144,6 +174,9 @@
     - possible bugfix, au_lkup_by_ino() returns ESTALE
   * [x86] efi: Clear EFI_RUNTIME_SERVICES rather than EFI_BOOT by "noefi" boot
     parameter
+  * drm, agp: Update to 3.4.32
+    - drm/radeon: add WAIT_UNTIL to the non-VM safe regs list for cayman/TN
+    - drm/radeon: prevent crash in the ring space allocation
 
   [ Aurelien Jarno ]
   * [armhf/vexpress] Add kernel udebs.

Modified: dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch
==============================================================================
--- dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch	Wed Feb 20 03:24:36 2013	(r19827)
+++ dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch	Wed Feb 20 05:16:43 2013	(r19828)
@@ -47730,7 +47730,7 @@
  
  	drm_encoder_helper_add(&crt->base.base, &intel_crt_helper_funcs);
 diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index c05e825..3c9b9c5 100644
+index 7817429..3c9b9c5 100644
 --- a/drivers/gpu/drm/i915/intel_display.c
 +++ b/drivers/gpu/drm/i915/intel_display.c
 @@ -75,7 +75,7 @@ struct intel_limit {
@@ -49051,14 +49051,12 @@
  	OUT_RING(obj->gtt_offset | obj->tiling_mode);
  
  	/* XXX Enabling the panel-fitter across page-flip is so far
-@@ -7154,15 +7441,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
+@@ -7154,13 +7441,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
  	pf = 0;
  	pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff;
  	OUT_RING(pf | pipesrc);
 -
 -	intel_mark_page_flip_active(intel_crtc);
--
--	intel_mark_page_flip_active(intel_crtc);
  	ADVANCE_LP_RING();
  	return 0;
  
@@ -49068,7 +49066,7 @@
  err:
  	return ret;
  }
-@@ -7187,17 +7470,23 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
+@@ -7185,19 +7470,23 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
  
  	OUT_RING(MI_DISPLAY_FLIP |
  		 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
@@ -49086,6 +49084,8 @@
 +	pf = 0;
  	pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff;
  	OUT_RING(pf | pipesrc);
+-
+-	intel_mark_page_flip_active(intel_crtc);
  	ADVANCE_LP_RING();
  	return 0;
  
@@ -72957,7 +72957,7 @@
  #include <linux/kernel.h>
  
 diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
-index 0977849..4a1d8f3 100644
+index 0977849..c62132c 100644
 --- a/drivers/gpu/drm/radeon/evergreen.c
 +++ b/drivers/gpu/drm/radeon/evergreen.c
 @@ -50,6 +50,39 @@ static const u32 crtc_offsets[6] =
@@ -73009,7 +73009,7 @@
  {
  	u32 tmp = RREG32(MC_SHARED_CHMAP);
  
-@@ -1109,11 +1142,20 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
+@@ -1109,11 +1142,24 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
  		crtc_enabled = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]) & EVERGREEN_CRTC_MASTER_EN;
  		if (crtc_enabled) {
  			save->crtc_enabled[i] = true;
@@ -73023,19 +73023,23 @@
 +				if (!(tmp & EVERGREEN_CRTC_BLANK_DATA_EN)) {
 +					radeon_wait_for_vblank(rdev, i);
 +					tmp |= EVERGREEN_CRTC_BLANK_DATA_EN;
++					WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1);
 +					WREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp);
++					WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0);
 +				}
 +			} else {
 +				tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]);
 +				if (!(tmp & EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE)) {
 +					radeon_wait_for_vblank(rdev, i);
 +					tmp |= EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE;
++					WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1);
 +					WREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp);
++					WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0);
 +				}
  			}
  			/* wait for the next frame */
  			frame_count = radeon_get_vblank_counter(rdev, i);
-@@ -1127,7 +1169,7 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
+@@ -1127,7 +1173,7 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
  		}
  	}
  
@@ -73044,7 +73048,16 @@
  
  	blackout = RREG32(MC_SHARED_BLACKOUT_CNTL);
  	if ((blackout & BLACKOUT_MODE_MASK) != 1) {
-@@ -1166,10 +1208,16 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
+@@ -1137,6 +1183,8 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
+ 		blackout &= ~BLACKOUT_MODE_MASK;
+ 		WREG32(MC_SHARED_BLACKOUT_CNTL, blackout | 1);
+ 	}
++	/* wait for the MC to settle */
++	udelay(100);
+ }
+ 
+ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *save)
+@@ -1166,10 +1214,20 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
  	WREG32(BIF_FB_EN, FB_READ_EN | FB_WRITE_EN);
  
  	for (i = 0; i < rdev->num_crtc; i++) {
@@ -73056,16 +73069,20 @@
 +			if (ASIC_IS_DCE6(rdev)) {
 +				tmp = RREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i]);
 +				tmp |= EVERGREEN_CRTC_BLANK_DATA_EN;
++				WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1);
 +				WREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp);
++				WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0);
 +			} else {
 +				tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]);
 +				tmp &= ~EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE;
++				WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1);
 +				WREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp);
++				WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0);
 +			}
  			/* wait for the next frame */
  			frame_count = radeon_get_vblank_counter(rdev, i);
  			for (j = 0; j < rdev->usec_timeout; j++) {
-@@ -1229,7 +1277,10 @@ void evergreen_mc_program(struct radeon_device *rdev)
+@@ -1229,7 +1287,10 @@ void evergreen_mc_program(struct radeon_device *rdev)
  			rdev->mc.vram_end >> 12);
  	}
  	WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, rdev->vram_scratch.gpu_addr >> 12);
@@ -73077,7 +73094,7 @@
  		tmp = RREG32(MC_FUS_VM_FB_OFFSET) & 0x000FFFFF;
  		tmp |= ((rdev->mc.vram_end >> 20) & 0xF) << 24;
  		tmp |= ((rdev->mc.vram_start >> 20) & 0xF) << 20;
-@@ -1264,18 +1315,20 @@ void evergreen_mc_program(struct radeon_device *rdev)
+@@ -1264,18 +1325,20 @@ void evergreen_mc_program(struct radeon_device *rdev)
   */
  void evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
  {
@@ -73104,7 +73121,7 @@
  }
  
  
-@@ -1313,71 +1366,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev)
+@@ -1313,71 +1376,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev)
  
  static int evergreen_cp_start(struct radeon_device *rdev)
  {
@@ -73209,7 +73226,7 @@
  	u32 tmp;
  	u32 rb_bufsz;
  	int r;
-@@ -1395,13 +1450,14 @@ int evergreen_cp_resume(struct radeon_device *rdev)
+@@ -1395,13 +1460,14 @@ int evergreen_cp_resume(struct radeon_device *rdev)
  	RREG32(GRBM_SOFT_RESET);
  
  	/* Set ring buffer size */
@@ -73226,7 +73243,7 @@
  
  	/* Set the write pointer delay */
  	WREG32(CP_RB_WPTR_DELAY, 0);
-@@ -1409,8 +1465,8 @@ int evergreen_cp_resume(struct radeon_device *rdev)
+@@ -1409,8 +1475,8 @@ int evergreen_cp_resume(struct radeon_device *rdev)
  	/* Initialize the ring buffer's read and write pointers */
  	WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA);
  	WREG32(CP_RB_RPTR_WR, 0);
@@ -73237,7 +73254,7 @@
  
  	/* set the wb address wether it's enabled or not */
  	WREG32(CP_RB_RPTR_ADDR,
-@@ -1428,16 +1484,16 @@ int evergreen_cp_resume(struct radeon_device *rdev)
+@@ -1428,16 +1494,16 @@ int evergreen_cp_resume(struct radeon_device *rdev)
  	mdelay(1);
  	WREG32(CP_RB_CNTL, tmp);
  
@@ -73259,7 +73276,7 @@
  		return r;
  	}
  	return 0;
-@@ -1730,7 +1786,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
+@@ -1730,7 +1796,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
  	case CHIP_SUMO:
  		rdev->config.evergreen.num_ses = 1;
  		rdev->config.evergreen.max_pipes = 4;
@@ -73268,7 +73285,7 @@
  		if (rdev->pdev->device == 0x9648)
  			rdev->config.evergreen.max_simds = 3;
  		else if ((rdev->pdev->device == 0x9647) ||
-@@ -1819,7 +1875,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
+@@ -1819,7 +1885,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
  		break;
  	case CHIP_CAICOS:
  		rdev->config.evergreen.num_ses = 1;
@@ -73277,7 +73294,7 @@
  		rdev->config.evergreen.max_tile_pipes = 2;
  		rdev->config.evergreen.max_simds = 2;
  		rdev->config.evergreen.max_backends = 1 * rdev->config.evergreen.num_ses;
-@@ -1868,7 +1924,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
+@@ -1868,7 +1934,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
  
  
  	mc_shared_chmap = RREG32(MC_SHARED_CHMAP);
@@ -73288,7 +73305,7 @@
  		mc_arb_ramcfg = RREG32(FUS_MC_ARB_RAMCFG);
  	else
  		mc_arb_ramcfg = RREG32(MC_ARB_RAMCFG);
-@@ -2272,7 +2330,9 @@ int evergreen_mc_init(struct radeon_device *rdev)
+@@ -2272,7 +2340,9 @@ int evergreen_mc_init(struct radeon_device *rdev)
  
  	/* Get VRAM informations */
  	rdev->mc.vram_is_ddr = true;
@@ -73299,7 +73316,7 @@
  		tmp = RREG32(FUS_MC_ARB_RAMCFG);
  	else
  		tmp = RREG32(MC_ARB_RAMCFG);
-@@ -2304,12 +2364,14 @@ int evergreen_mc_init(struct radeon_device *rdev)
+@@ -2304,12 +2374,14 @@ int evergreen_mc_init(struct radeon_device *rdev)
  	rdev->mc.aper_base = pci_resource_start(rdev->pdev, 0);
  	rdev->mc.aper_size = pci_resource_len(rdev->pdev, 0);
  	/* Setup GPU memory space */
@@ -73316,7 +73333,7 @@
  		rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024;
  		rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024;
  	}
-@@ -2320,7 +2382,7 @@ int evergreen_mc_init(struct radeon_device *rdev)
+@@ -2320,7 +2392,7 @@ int evergreen_mc_init(struct radeon_device *rdev)
  	return 0;
  }
  
@@ -73325,7 +73342,7 @@
  {
  	u32 srbm_status;
  	u32 grbm_status;
-@@ -2333,19 +2395,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
+@@ -2333,19 +2405,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
  	grbm_status_se0 = RREG32(GRBM_STATUS_SE0);
  	grbm_status_se1 = RREG32(GRBM_STATUS_SE1);
  	if (!(grbm_status & GUI_ACTIVE)) {
@@ -73352,7 +73369,7 @@
  }
  
  static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
-@@ -2437,7 +2499,13 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
+@@ -2437,7 +2509,13 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
  {
  	u32 tmp;
  
@@ -73367,7 +73384,7 @@
  	WREG32(GRBM_INT_CNTL, 0);
  	WREG32(INT_MASK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0);
  	WREG32(INT_MASK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0);
-@@ -2461,7 +2529,9 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
+@@ -2461,7 +2539,9 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
  		WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0);
  	}
  
@@ -73378,7 +73395,7 @@
  	WREG32(DACB_AUTODETECT_INT_CONTROL, 0);
  
  	tmp = RREG32(DC_HPD1_INT_CONTROL) & DC_HPDx_INT_POLARITY;
-@@ -2482,6 +2552,7 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
+@@ -2482,6 +2562,7 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
  int evergreen_irq_set(struct radeon_device *rdev)
  {
  	u32 cp_int_cntl = CNTX_BUSY_INT_ENABLE | CNTX_EMPTY_INT_ENABLE;
@@ -73386,7 +73403,7 @@
  	u32 crtc1 = 0, crtc2 = 0, crtc3 = 0, crtc4 = 0, crtc5 = 0, crtc6 = 0;
  	u32 hpd1, hpd2, hpd3, hpd4, hpd5, hpd6;
  	u32 grbm_int_cntl = 0;
-@@ -2506,11 +2577,28 @@ int evergreen_irq_set(struct radeon_device *rdev)
+@@ -2506,11 +2587,28 @@ int evergreen_irq_set(struct radeon_device *rdev)
  	hpd5 = RREG32(DC_HPD5_INT_CONTROL) & ~DC_HPDx_INT_EN;
  	hpd6 = RREG32(DC_HPD6_INT_CONTROL) & ~DC_HPDx_INT_EN;
  
@@ -73419,7 +73436,7 @@
  	if (rdev->irq.crtc_vblank_int[0] ||
  	    rdev->irq.pflip[0]) {
  		DRM_DEBUG("evergreen_irq_set: vblank 0\n");
-@@ -2570,7 +2658,12 @@ int evergreen_irq_set(struct radeon_device *rdev)
+@@ -2570,7 +2668,12 @@ int evergreen_irq_set(struct radeon_device *rdev)
  		grbm_int_cntl |= GUI_IDLE_INT_ENABLE;
  	}
  
@@ -73433,7 +73450,7 @@
  	WREG32(GRBM_INT_CNTL, grbm_int_cntl);
  
  	WREG32(INT_MASK + EVERGREEN_CRTC0_REGISTER_OFFSET, crtc1);
-@@ -2985,11 +3078,24 @@ restart_ih:
+@@ -2985,11 +3088,24 @@ restart_ih:
  		case 177: /* CP_INT in IB1 */
  		case 178: /* CP_INT in IB2 */
  			DRM_DEBUG("IH: CP int: 0x%08x\n", src_data);
@@ -73460,7 +73477,7 @@
  			break;
  		case 233: /* GUI IDLE */
  			DRM_DEBUG("IH: GUI idle\n");
-@@ -3019,6 +3125,7 @@ restart_ih:
+@@ -3019,6 +3135,7 @@ restart_ih:
  
  static int evergreen_startup(struct radeon_device *rdev)
  {
@@ -73468,7 +73485,7 @@
  	int r;
  
  	/* enable pcie gen2 link */
-@@ -3064,7 +3171,7 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3064,7 +3181,7 @@ static int evergreen_startup(struct radeon_device *rdev)
  	r = evergreen_blit_init(rdev);
  	if (r) {
  		r600_blit_fini(rdev);
@@ -73477,7 +73494,7 @@
  		dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
  	}
  
-@@ -3073,6 +3180,12 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3073,6 +3190,12 @@ static int evergreen_startup(struct radeon_device *rdev)
  	if (r)
  		return r;
  
@@ -73490,7 +73507,7 @@
  	/* Enable IRQ */
  	r = r600_irq_init(rdev);
  	if (r) {
-@@ -3082,7 +3195,9 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3082,7 +3205,9 @@ static int evergreen_startup(struct radeon_device *rdev)
  	}
  	evergreen_irq_set(rdev);
  
@@ -73501,7 +73518,7 @@
  	if (r)
  		return r;
  	r = evergreen_cp_load_microcode(rdev);
-@@ -3092,6 +3207,23 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3092,6 +3217,23 @@ static int evergreen_startup(struct radeon_device *rdev)
  	if (r)
  		return r;
  
@@ -73525,7 +73542,7 @@
  	return 0;
  }
  
-@@ -3111,15 +3243,11 @@ int evergreen_resume(struct radeon_device *rdev)
+@@ -3111,15 +3253,11 @@ int evergreen_resume(struct radeon_device *rdev)
  	/* post card */
  	atom_asic_init(rdev->mode_info.atom_context);
  
@@ -73543,7 +73560,7 @@
  		return r;
  	}
  
-@@ -3129,13 +3257,17 @@ int evergreen_resume(struct radeon_device *rdev)
+@@ -3129,13 +3267,17 @@ int evergreen_resume(struct radeon_device *rdev)
  
  int evergreen_suspend(struct radeon_device *rdev)
  {
@@ -73563,7 +73580,7 @@
  
  	return 0;
  }
-@@ -3210,8 +3342,8 @@ int evergreen_init(struct radeon_device *rdev)
+@@ -3210,8 +3352,8 @@ int evergreen_init(struct radeon_device *rdev)
  	if (r)
  		return r;
  
@@ -73574,7 +73591,7 @@
  
  	rdev->ih.ring_obj = NULL;
  	r600_ih_ring_init(rdev, 64 * 1024);
-@@ -3220,29 +3352,24 @@ int evergreen_init(struct radeon_device *rdev)
+@@ -3220,29 +3362,24 @@ int evergreen_init(struct radeon_device *rdev)
  	if (r)
  		return r;
  
@@ -73611,7 +73628,7 @@
  
  	/* Don't start up if the MC ucode is missing on BTC parts.
  	 * The default clocks and voltages before the MC ucode
-@@ -3260,15 +3387,17 @@ int evergreen_init(struct radeon_device *rdev)
+@@ -3260,15 +3397,17 @@ int evergreen_init(struct radeon_device *rdev)
  
  void evergreen_fini(struct radeon_device *rdev)
  {
@@ -85713,7 +85730,7 @@
  			tmp = RREG32_PLL(RADEON_VCLK_ECP_CNTL);
  			tmp &= ~(RADEON_PIXCLK_ALWAYS_ONb |
 diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
-index 1b98338..2cad9fd 100644
+index ec36dd9..a2470d9 100644
 --- a/drivers/gpu/drm/radeon/radeon_combios.c
 +++ b/drivers/gpu/drm/radeon/radeon_combios.c
 @@ -1536,9 +1536,6 @@ bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev)
@@ -85854,7 +85871,7 @@
  	default:
  		DRM_INFO("Connector table: %d (invalid)\n",
  			 rdev->mode_info.connector_table);
-@@ -2962,7 +2845,7 @@ bool radeon_combios_external_tmds_setup(struct drm_encoder *encoder)
+@@ -2970,7 +2853,7 @@ bool radeon_combios_external_tmds_setup(struct drm_encoder *encoder)
  					case 4:
  						val = RBIOS16(index);
  						index += 2;
@@ -85863,7 +85880,7 @@
  						break;
  					case 6:
  						slave_addr = id & 0xff;
-@@ -3161,7 +3044,7 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
+@@ -3169,7 +3052,7 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
  					udelay(150);
  					break;
  				case 2:
@@ -85872,7 +85889,7 @@
  					break;
  				case 3:
  					while (tmp--) {
-@@ -3192,13 +3075,13 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
+@@ -3200,13 +3083,13 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
  						/*mclk_cntl |= 0x00001111;*//* ??? */
  						WREG32_PLL(RADEON_MCLK_CNTL,
  							   mclk_cntl);
@@ -86494,7 +86511,7 @@
  		struct drm_crtc *crtc_p;
  
 diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
-index bd959c1..de5e0b5 100644
+index bd959c1..68c89db 100644
 --- a/drivers/gpu/drm/radeon/radeon_device.c
 +++ b/drivers/gpu/drm/radeon/radeon_device.c
 @@ -89,6 +89,10 @@ static const char radeon_family_name[][16] = {
@@ -86519,17 +86536,7 @@
  		rdev->wb.enabled = true;
  		rdev->wb.use_event = true;
  	}
-@@ -354,8 +358,7 @@ bool radeon_card_posted(struct radeon_device *rdev)
- {
- 	uint32_t reg;
- 
--	if (efi_enabled(EFI_BOOT) &&
--	    rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE)
-+	if (efi_enabled && rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE)
- 		return false;
- 
- 	/* first check CRTCs */
-@@ -721,18 +724,25 @@ int radeon_device_init(struct radeon_device *rdev,
+@@ -721,18 +725,25 @@ int radeon_device_init(struct radeon_device *rdev,
  	/* mutex initialization are all done here so we
  	 * can recall function without having locking issues */
  	radeon_mutex_init(&rdev->cs_mutex);
@@ -86558,7 +86565,7 @@
  
  	/* Set asic functions */
  	r = radeon_asic_init(rdev);
-@@ -769,8 +779,14 @@ int radeon_device_init(struct radeon_device *rdev,
+@@ -769,8 +780,14 @@ int radeon_device_init(struct radeon_device *rdev,
  	r = pci_set_dma_mask(rdev->pdev, DMA_BIT_MASK(dma_bits));
  	if (r) {
  		rdev->need_dma32 = true;
@@ -86573,7 +86580,7 @@
  
  	/* Registers mapping */
  	/* TODO: block userspace mapping of io register */
-@@ -818,15 +834,20 @@ int radeon_device_init(struct radeon_device *rdev,
+@@ -818,15 +835,20 @@ int radeon_device_init(struct radeon_device *rdev,
  		if (r)
  			return r;
  	}
@@ -86595,7 +86602,7 @@
  void radeon_device_fini(struct radeon_device *rdev)
  {
  	DRM_INFO("radeon: finishing device.\n");
-@@ -841,6 +862,7 @@ void radeon_device_fini(struct radeon_device *rdev)
+@@ -841,6 +863,7 @@ void radeon_device_fini(struct radeon_device *rdev)
  	rdev->rio_mem = NULL;
  	iounmap(rdev->rmmio);
  	rdev->rmmio = NULL;
@@ -86603,7 +86610,7 @@
  }
  
  
-@@ -852,7 +874,7 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
+@@ -852,7 +875,7 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
  	struct radeon_device *rdev;
  	struct drm_crtc *crtc;
  	struct drm_connector *connector;
@@ -86612,7 +86619,7 @@
  
  	if (dev == NULL || dev->dev_private == NULL) {
  		return -ENODEV;
-@@ -893,7 +915,8 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
+@@ -893,7 +916,8 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
  	/* evict vram memory */
  	radeon_bo_evict_vram(rdev);
  	/* wait for gpu to finish processing current batch */
@@ -86622,7 +86629,7 @@
  
  	radeon_save_bios_scratch_regs(rdev);
  
-@@ -942,9 +965,11 @@ int radeon_resume_kms(struct drm_device *dev)
+@@ -942,9 +966,11 @@ int radeon_resume_kms(struct drm_device *dev)
  	radeon_fbdev_set_suspend(rdev, 0);
  	console_unlock();
  
@@ -86636,7 +86643,7 @@
  	/* reset hpd state */
  	radeon_hpd_init(rdev);
  	/* blat the mode back in */
-@@ -994,36 +1019,29 @@ int radeon_gpu_reset(struct radeon_device *rdev)
+@@ -994,36 +1020,29 @@ int radeon_gpu_reset(struct radeon_device *rdev)
  /*
   * Debugfs
   */
@@ -86679,7 +86686,7 @@
  #if defined(CONFIG_DEBUG_FS)
  	drm_debugfs_create_files(files, nfiles,
  				 rdev->ddev->control->debugfs_root,
-@@ -1035,6 +1053,22 @@ int radeon_debugfs_add_files(struct radeon_device *rdev,
+@@ -1035,6 +1054,22 @@ int radeon_debugfs_add_files(struct radeon_device *rdev,
  	return 0;
  }
  
@@ -86702,7 +86709,7 @@
  #if defined(CONFIG_DEBUG_FS)
  int radeon_debugfs_init(struct drm_minor *minor)
  {
-@@ -1043,11 +1077,5 @@ int radeon_debugfs_init(struct drm_minor *minor)
+@@ -1043,11 +1078,5 @@ int radeon_debugfs_init(struct drm_minor *minor)
  
  void radeon_debugfs_cleanup(struct drm_minor *minor)
  {
@@ -86715,7 +86722,7 @@
  }
  #endif
 diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
-index aec8e0c..1f50727 100644
+index 63e7143..00d9cac 100644
 --- a/drivers/gpu/drm/radeon/radeon_display.c
 +++ b/drivers/gpu/drm/radeon/radeon_display.c
 @@ -303,8 +303,17 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
@@ -86818,9 +86825,9 @@
  		return ERR_PTR(-ENOENT);
  	}
  
-@@ -1113,7 +1132,12 @@ radeon_user_framebuffer_create(struct drm_device *dev,
- 	if (radeon_fb == NULL)
+@@ -1115,7 +1134,12 @@ radeon_user_framebuffer_create(struct drm_device *dev,
  		return ERR_PTR(-ENOMEM);
+ 	}
  
 -	radeon_framebuffer_init(dev, radeon_fb, mode_cmd, obj);
 +	ret = radeon_framebuffer_init(dev, radeon_fb, mode_cmd, obj);
@@ -86832,7 +86839,7 @@
  
  	return &radeon_fb->base;
  }
-@@ -1129,11 +1153,6 @@ static const struct drm_mode_config_funcs radeon_mode_funcs = {
+@@ -1131,11 +1155,6 @@ static const struct drm_mode_config_funcs radeon_mode_funcs = {
  	.output_poll_changed = radeon_output_poll_changed
  };
  
@@ -86844,7 +86851,7 @@
  static struct drm_prop_enum_list radeon_tmds_pll_enum_list[] =
  {	{ 0, "driver" },
  	{ 1, "bios" },
-@@ -1158,86 +1177,53 @@ static struct drm_prop_enum_list radeon_underscan_enum_list[] =
+@@ -1160,86 +1179,53 @@ static struct drm_prop_enum_list radeon_underscan_enum_list[] =
  
  static int radeon_modeset_create_props(struct radeon_device *rdev)
  {
@@ -86947,7 +86954,7 @@
  
  	return 0;
  }
-@@ -1283,6 +1269,9 @@ int radeon_modeset_init(struct radeon_device *rdev)
+@@ -1285,6 +1271,9 @@ int radeon_modeset_init(struct radeon_device *rdev)
  		rdev->ddev->mode_config.max_height = 4096;
  	}
  
@@ -86957,7 +86964,7 @@
  	rdev->ddev->mode_config.fb_base = rdev->mc.aper_base;
  
  	ret = radeon_modeset_create_props(rdev);
-@@ -1310,9 +1299,11 @@ int radeon_modeset_init(struct radeon_device *rdev)
+@@ -1312,9 +1301,11 @@ int radeon_modeset_init(struct radeon_device *rdev)
  		return ret;
  	}
  
@@ -89384,7 +89391,7 @@
  #       define RADEON_CRTC2_VBLANK_SAVE_CLEAR  (1 <<  1)
  #define RADEON_CRTC_V_SYNC_STRT_WID         0x020c
 diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
-index 49d5820..cc33b3d 100644
+index 65be5e8..33eff8b 100644
 --- a/drivers/gpu/drm/radeon/radeon_ring.c
 +++ b/drivers/gpu/drm/radeon/radeon_ring.c
 @@ -34,6 +34,7 @@
@@ -89419,32 +89426,22 @@
  }
  
 -void radeon_ib_bogus_cleanup(struct radeon_device *rdev)
-+/*
-+ * IB.
-+ */
-+bool radeon_ib_try_free(struct radeon_device *rdev, struct radeon_ib *ib)
- {
+-{
 -	struct radeon_ib *ib, *n;
 -
 -	list_for_each_entry_safe(ib, n, &rdev->ib_pool.bogus_ib, list) {
 -		list_del(&ib->list);
 -		vfree(ib->ptr);
 -		kfree(ib);
-+	bool done = false;
-+
-+	/* only free ib which have been emited */
-+	if (ib->fence && ib->fence->emitted) {
-+		if (radeon_fence_signaled(ib->fence)) {
-+			radeon_fence_unref(&ib->fence);
-+			radeon_sa_bo_free(rdev, &ib->sa_bo);
-+			done = true;
-+		}
- 	}
-+	return done;
- }
- 
+-	}
+-}
+-
 -void radeon_ib_bogus_add(struct radeon_device *rdev, struct radeon_ib *ib)
--{
++/*
++ * IB.
++ */
++bool radeon_ib_try_free(struct radeon_device *rdev, struct radeon_ib *ib)
+ {
 -	struct radeon_ib *bib;
 -
 -	bib = kmalloc(sizeof(*bib), GFP_KERNEL);
@@ -89454,14 +89451,24 @@
 -	if (bib->ptr == NULL) {
 -		kfree(bib);
 -		return;
--	}
++	bool done = false;
++
++	/* only free ib which have been emited */
++	if (ib->fence && ib->fence->emitted) {
++		if (radeon_fence_signaled(ib->fence)) {
++			radeon_fence_unref(&ib->fence);
++			radeon_sa_bo_free(rdev, &ib->sa_bo);
++			done = true;
++		}
+ 	}
 -	memcpy(bib->ptr, ib->ptr, ib->length_dw * 4);
 -	bib->length_dw = ib->length_dw;
 -	mutex_lock(&rdev->ib_pool.mutex);
 -	list_add_tail(&bib->list, &rdev->ib_pool.bogus_ib);
 -	mutex_unlock(&rdev->ib_pool.mutex);
--}
--
++	return done;
+ }
+ 
 -/*
 - * IB.
 - */
@@ -89579,7 +89586,7 @@
  }
  
  void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
-@@ -169,247 +172,258 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
+@@ -169,250 +172,261 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
  	if (tmp == NULL) {
  		return;
  	}
@@ -89799,6 +89806,10 @@
  {
  	int r;
  
+ 	/* make sure we aren't trying to allocate more space than there is on the ring */
+-	if (ndw > (rdev->cp.ring_size / 4))
++	if (ndw > (ring->ring_size / 4))
+ 		return -ENOMEM;
  	/* Align requested size with padding so unlock_commit can
  	 * pad safely */
 -	ndw = (ndw + rdev->cp.align_mask) & ~rdev->cp.align_mask;
@@ -89957,7 +89968,7 @@
  
  	if (ring_obj) {
  		r = radeon_bo_reserve(ring_obj, false);
-@@ -422,78 +436,96 @@ void radeon_ring_fini(struct radeon_device *rdev)
+@@ -425,78 +439,96 @@ void radeon_ring_fini(struct radeon_device *rdev)
  	}
  }
  
@@ -91197,19 +91208,20 @@
  #endif
  	return 0;
 diff --git a/drivers/gpu/drm/radeon/reg_srcs/cayman b/drivers/gpu/drm/radeon/reg_srcs/cayman
-index 2316977..0f656b1 100644
+index 2316977..a072fa8 100644
 --- a/drivers/gpu/drm/radeon/reg_srcs/cayman
 +++ b/drivers/gpu/drm/radeon/reg_srcs/cayman
-@@ -1,5 +1,8 @@
+@@ -1,5 +1,9 @@
  cayman 0x9400
  0x0000802C GRBM_GFX_INDEX
++0x00008040 WAIT_UNTIL
 +0x000084FC CP_STRMOUT_CNTL
 +0x000085F0 CP_COHER_CNTL
 +0x000085F4 CP_COHER_SIZE
  0x000088B0 VGT_VTX_VECT_EJECT_REG
  0x000088C4 VGT_CACHE_INVALIDATION
  0x000088D4 VGT_GS_VERTEX_REUSE
-@@ -77,7 +80,6 @@ cayman 0x9400
+@@ -77,7 +81,6 @@ cayman 0x9400
  0x0002802C DB_DEPTH_CLEAR
  0x00028030 PA_SC_SCREEN_SCISSOR_TL
  0x00028034 PA_SC_SCREEN_SCISSOR_BR
@@ -91217,7 +91229,7 @@
  0x00028140 SQ_ALU_CONST_BUFFER_SIZE_PS_0
  0x00028144 SQ_ALU_CONST_BUFFER_SIZE_PS_1
  0x00028148 SQ_ALU_CONST_BUFFER_SIZE_PS_2
-@@ -206,7 +208,6 @@ cayman 0x9400
+@@ -206,7 +209,6 @@ cayman 0x9400
  0x00028344 PA_SC_VPORT_ZMAX_14
  0x00028348 PA_SC_VPORT_ZMIN_15
  0x0002834C PA_SC_VPORT_ZMAX_15
@@ -91225,7 +91237,7 @@
  0x00028354 SX_SURFACE_SYNC
  0x0002835C SX_SCATTER_EXPORT_SIZE
  0x00028380 SQ_VTX_SEMANTIC_0
-@@ -508,10 +509,16 @@ cayman 0x9400
+@@ -508,10 +510,16 @@ cayman 0x9400
  0x00028AA8 IA_MULTI_VGT_PARAM
  0x00028AB4 VGT_REUSE_OFF
  0x00028AB8 VGT_VTX_CNT_EN
@@ -91243,7 +91255,7 @@
  0x00028B38 VGT_GS_MAX_VERT_OUT
  0x00028B54 VGT_SHADER_STAGES_EN
  0x00028B58 VGT_LS_HS_CONFIG
-@@ -551,6 +558,18 @@ cayman 0x9400
+@@ -551,6 +559,18 @@ cayman 0x9400
  0x00028C34 PA_SC_AA_SAMPLE_LOCS_PIXEL_X1_Y1_3
  0x00028C38 PA_SC_AA_MASK_X0_Y0_X1_Y0
  0x00028C3C PA_SC_AA_MASK_X0_Y1_X1_Y1

Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series	Wed Feb 20 03:24:36 2013	(r19827)
+++ dists/sid/linux/debian/patches/series	Wed Feb 20 05:16:43 2013	(r19828)
@@ -449,7 +449,6 @@
 features/all/iguanair/0011-media-iguanair-cannot-send-data-from-the-stack.patch
 features/all/rt2800-add-chipset-revision-RT5390R-support.patch
 bugfix/all/fs-cachefiles-add-support-for-large-files-in-filesys.patch
-bugfix/all/bridge-Pull-ip-header-into-skb-data-before-looking-i.patch
 bugfix/all/ext4-rewrite-punch-hole-to-use-ext4_ext_remove_space.patch
 bugfix/all/ext4-fix-hole-punch-failure-when-depth-is-greater-th.patch
 bugfix/all/ext4-fix-kernel-BUG-on-large-scale-rm-rf-commands.patch
@@ -501,7 +500,6 @@
 bugfix/x86/drm-i915-Disable-AsyncFlip-performance-optimisations.patch
 bugfix/x86/drm-i915-GFX_MODE-Flush-TLB-Invalidate-Mode-must-be-.patch
 bugfix/x86/drm-i915-dump-UTS_RELEASE-into-the-error_state.patch
-features/all/drm/efi-Make-efi_enabled-a-function-to-query-EFI-facilit.patch
 
 # virtio-scsi from 3.7
 features/all/virtio_scsi/0001-SCSI-virtio-scsi-SCSI-driver-for-QEMU-based-virtual-.patch



More information about the Kernel-svn-changes mailing list