[linux] 02/03: Update to 3.2.71

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Sun Sep 20 23:05:08 UTC 2015


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch wheezy
in repository linux.

commit 4954265a2a89c273ad8629f18ee3d86358fca69c
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Sun Sep 20 21:16:13 2015 +0200

    Update to 3.2.71
---
 debian/changelog                                   |  47 +++++-
 .../vhost-actually-track-log-eventfd-file.patch    |  30 ----
 debian/patches/features/all/drm/drm-3.4.patch      | 171 ++++++++++++++-------
 debian/patches/series                              |   1 -
 4 files changed, 164 insertions(+), 85 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 249a0bb..359eec5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-linux (3.2.70-1) UNRELEASED; urgency=medium
+linux (3.2.71-1) UNRELEASED; urgency=medium
 
   * New upstream stable update:
     http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.69
@@ -326,6 +326,51 @@ linux (3.2.70-1) UNRELEASED; urgency=medium
     - UBI: fix soft lockup in ubi_check_volume()
     - [hppa] Provide __ucmpdi2 to resolve undefined references in 32 bit builds.
     - staging: line6: avoid __sync_fetch_and_{and,or}
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.71
+    - hrtimer: Allow concurrent hrtimer_start() for self restarting timers
+    - s5h1420: fix a buffer overflow when checking userspace params
+    - cx24116: fix a buffer overflow when checking userspace params
+    - mtd: fix: avoid race condition when accessing mtd->usecount
+    - rcu: Correctly handle non-empty Tiny RCU callback list with none ready
+    - [x86] staging: rtl8712: prevent buffer overrun in recvbuf2recvframe
+    - SUNRPC: Fix a memory leak in the backchannel code
+    - regulator: core: fix constraints output buffer
+    - [armel] dmaengine: mv_xor: bug fix for racing condition in descriptors
+      cleanup
+    - ext4: fix race between truncate and __ext4_journalled_writepage()
+    - [x86] pcmcia: Disable write buffering on Toshiba ToPIC95
+    - jbd2: issue cache flush after checkpointing even with internal journal
+    - jbd2: fix ocfs2 corrupt when updating journal superblock fails
+    - mmc: card: Fixup request missing in mmc_blk_issue_rw_rq
+    - ext4: call sync_blockdev() before invalidate_bdev() in put_super()
+    - iio: DAC: ad5624r_spi: fix bit shift of output data value
+    - ext4: don't retry file block mapping on bigalloc fs with non-extent file
+    - NET: ROSE: Don't dereference NULL neighbour pointer.
+    - fs: Fix S_NOSEC handling
+    - Btrfs: use kmem_cache_free when freeing entry in inode cache
+    - Btrfs: fix race between caching kthread and returning inode to inode
+      cache
+    - fuse: initialize fc->release before calling it
+    - ext4: avoid deadlocks in the writeback path by using sb_getblk_gfp
+    - netfilter: bridge: don't leak skb in error paths
+    - [x86] KVM: make vapics_in_nmi_mode atomic
+    - 9p: forgetting to cancel request on interrupted zero-copy RPC
+    - dm btree remove: fix bug in redistribute3
+    - rtnetlink: verify IFLA_VF_INFO attributes before passing them to driver
+    - mm: avoid setting up anonymous pages into file mapping
+    - net: do not process device backlog during unregistration
+    - net: call rcu_read_lock early in process_backlog
+    - 9p: don't leave a half-initialized inode sitting around
+    - Btrfs: fix file corruption after cloning inline extents
+    - rds: rds_ib_device.refcount overflow
+    - libata: force disable trim for SuperSSpeed S238
+    - inet: frags: fix defragmented packet's IP header for af_packet
+    - netfilter: nf_conntrack: Support expectations in different zones
+    - usb-storage: ignore ZTE MF 823 card reader in mode 0x1225
+    - md/raid1: fix test for 'was read error from last working device'.
+    - iscsi-target: Fix use-after-free during TPG session shutdown
+    - [x86] xen: Probe target addresses in set_aliased_prot() before the
+      hypercall
 
   [ Ben Hutchings ]
   * drm, agp: Update to 3.4.108:
diff --git a/debian/patches/bugfix/all/vhost-actually-track-log-eventfd-file.patch b/debian/patches/bugfix/all/vhost-actually-track-log-eventfd-file.patch
deleted file mode 100644
index 8e27e22..0000000
--- a/debian/patches/bugfix/all/vhost-actually-track-log-eventfd-file.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau at redhat.com>
-Date: Fri, 17 Jul 2015 15:32:03 +0200
-Subject: vhost: actually track log eventfd file
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-Origin: https://git.kernel.org/linus/7932c0bd7740f4cd2aa168d3ce0199e7af7d72d5
-
-While reviewing vhost log code, I found out that log_file is never
-set. Note: I haven't tested the change (QEMU doesn't use LOG_FD yet).
-
-Cc: stable at vger.kernel.org
-Signed-off-by: Marc-André Lureau <marcandre.lureau at redhat.com>
-Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
----
- drivers/vhost/vhost.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
-index a9fe859..95bdb90 100644
---- a/drivers/vhost/vhost.c
-+++ b/drivers/vhost/vhost.c
-@@ -995,6 +995,7 @@ long vhost_dev_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *argp)
- 		}
- 		if (eventfp != d->log_file) {
- 			filep = d->log_file;
-+			d->log_file = eventfp;
- 			ctx = d->log_ctx;
- 			d->log_ctx = eventfp ?
- 				eventfd_ctx_fileget(eventfp) : NULL;
diff --git a/debian/patches/features/all/drm/drm-3.4.patch b/debian/patches/features/all/drm/drm-3.4.patch
index 8c6ed85..fab11b5 100644
--- a/debian/patches/features/all/drm/drm-3.4.patch
+++ b/debian/patches/features/all/drm/drm-3.4.patch
@@ -93,7 +93,7 @@ index 58b49d1..4293c48 100644
  	ID(PCI_DEVICE_ID_INTEL_82443BX_0),
  	ID(PCI_DEVICE_ID_INTEL_82443GX_0),
 diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
-index 43c4ec3..7f025fb 100644
+index 59d4697..7f025fb 100644
 --- a/drivers/char/agp/intel-gtt.c
 +++ b/drivers/char/agp/intel-gtt.c
 @@ -76,7 +76,6 @@ static struct _intel_private {
@@ -142,7 +142,7 @@ index 43c4ec3..7f025fb 100644
  						  i, 0);
  	}
  	readl(intel_private.gtt+i-1);
-@@ -1190,7 +1190,6 @@ static inline int needs_idle_maps(void)
+@@ -1190,12 +1190,11 @@ static inline int needs_idle_maps(void)
  {
  #ifdef CONFIG_INTEL_IOMMU
  	const unsigned short gpu_devid = intel_private.pcidev->device;
@@ -150,6 +150,12 @@ index 43c4ec3..7f025fb 100644
  
  	/* Query intel_iommu to see if we need the workaround. Presumably that
  	 * was loaded first.
+ 	 */
+-	if ((gpu_devid == PCI_DEVICE_ID_INTEL_IRONLAKE_D_IG ||
++	if ((gpu_devid == PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB ||
+ 	     gpu_devid == PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG) &&
+ 	     intel_iommu_gfx_mapped)
+ 		return 1;
 diff --git a/drivers/char/agp/sis-agp.c b/drivers/char/agp/sis-agp.c
 index 29aacd8..08704ae 100644
 --- a/drivers/char/agp/sis-agp.c
@@ -351,7 +357,7 @@ index 6d440fb..325365f 100644
  		return -EINVAL;
  
 diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
-index 09851ce..c61e672 100644
+index 20110b4..c61e672 100644
 --- a/drivers/gpu/drm/drm_crtc.c
 +++ b/drivers/gpu/drm/drm_crtc.c
 @@ -36,11 +36,7 @@
@@ -1282,18 +1288,21 @@ index 09851ce..c61e672 100644
  	struct drm_connector **connector_set = NULL, *connector;
  	struct drm_framebuffer *fb = NULL;
  	struct drm_display_mode *mode = NULL;
-@@ -1505,6 +1836,10 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1505,11 +1836,8 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
  		return -EINVAL;
  
+-	/*
+-	 * Universal plane src offsets are only 16.16, prevent havoc for
+-	 * drivers using universal plane code internally.
+-	 */
+-	if (crtc_req->x & 0xffff0000 || crtc_req->y & 0xffff0000)
 +	/* For some reason crtc x/y offsets are signed internally. */
 +	if (crtc_req->x > INT_MAX || crtc_req->y > INT_MAX)
-+		return -ERANGE;
-+
+ 		return -ERANGE;
+ 
  	mutex_lock(&dev->mode_config.mutex);
- 	obj = drm_mode_object_find(dev, crtc_req->crtc_id,
- 				   DRM_MODE_OBJECT_CRTC);
-@@ -1520,14 +1855,12 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1527,14 +1855,12 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
  		/* If we have a mode we need a framebuffer. */
  		/* If we pass -1, set the mode with the currently bound fb */
  		if (crtc_req->fb_id == -1) {
@@ -1313,7 +1322,7 @@ index 09851ce..c61e672 100644
  		} else {
  			obj = drm_mode_object_find(dev, crtc_req->fb_id,
  						   DRM_MODE_OBJECT_FB);
-@@ -1541,8 +1874,30 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1548,8 +1874,30 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
  		}
  
  		mode = drm_mode_create(dev);
@@ -1345,7 +1354,7 @@ index 09851ce..c61e672 100644
  	}
  
  	if (crtc_req->count_connectors == 0 && mode) {
-@@ -1576,7 +1931,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1583,7 +1931,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
  		}
  
  		for (i = 0; i < crtc_req->count_connectors; i++) {
@@ -1354,7 +1363,7 @@ index 09851ce..c61e672 100644
  			if (get_user(out_id, &set_connectors_ptr[i])) {
  				ret = -EFAULT;
  				goto out;
-@@ -1610,6 +1965,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1617,6 +1965,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
  
  out:
  	kfree(connector_set);
@@ -1362,7 +1371,7 @@ index 09851ce..c61e672 100644
  	mutex_unlock(&dev->mode_config.mutex);
  	return ret;
  }
-@@ -1660,6 +2016,42 @@ out:
+@@ -1667,6 +2016,42 @@ out:
  	return ret;
  }
  
@@ -1405,7 +1414,7 @@ index 09851ce..c61e672 100644
  /**
   * drm_mode_addfb - add an FB to the graphics configuration
   * @inode: inode from the ioctl
-@@ -1680,18 +2072,27 @@ out:
+@@ -1687,18 +2072,27 @@ out:
  int drm_mode_addfb(struct drm_device *dev,
  		   void *data, struct drm_file *file_priv)
  {
@@ -1436,7 +1445,7 @@ index 09851ce..c61e672 100644
  		return -EINVAL;
  
  	mutex_lock(&dev->mode_config.mutex);
-@@ -1699,6 +2100,138 @@ int drm_mode_addfb(struct drm_device *dev,
+@@ -1706,6 +2100,138 @@ int drm_mode_addfb(struct drm_device *dev,
  	/* TODO check buffer is sufficiently large */
  	/* TODO setup destructor callback */
  
@@ -1575,7 +1584,7 @@ index 09851ce..c61e672 100644
  	fb = dev->mode_config.funcs->fb_create(dev, file_priv, r);
  	if (IS_ERR(fb)) {
  		DRM_ERROR("could not create framebuffer\n");
-@@ -1782,7 +2315,7 @@ out:
+@@ -1789,7 +2315,7 @@ out:
   * @arg: arg from ioctl
   *
   * LOCKING:
@@ -1584,7 +1593,7 @@ index 09851ce..c61e672 100644
   *
   * Lookup the FB given its ID and return info about it.
   *
-@@ -1814,18 +2347,8 @@ int drm_mode_getfb(struct drm_device *dev,
+@@ -1821,18 +2347,8 @@ int drm_mode_getfb(struct drm_device *dev,
  	r->width = fb->width;
  	r->depth = fb->depth;
  	r->bpp = fb->bits_per_pixel;
@@ -1605,7 +1614,7 @@ index 09851ce..c61e672 100644
  
  out:
  	mutex_unlock(&dev->mode_config.mutex);
-@@ -1856,7 +2379,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
+@@ -1863,7 +2379,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
  	fb = obj_to_fb(obj);
  
  	num_clips = r->num_clips;
@@ -1614,7 +1623,7 @@ index 09851ce..c61e672 100644
  
  	if (!num_clips != !clips_ptr) {
  		ret = -EINVAL;
-@@ -1941,38 +2464,48 @@ void drm_fb_release(struct drm_file *priv)
+@@ -1948,38 +2464,48 @@ void drm_fb_release(struct drm_file *priv)
   *
   * Add @mode to @connector's user mode list.
   */
@@ -1682,7 +1691,7 @@ index 09851ce..c61e672 100644
  }
  EXPORT_SYMBOL(drm_mode_attachmode_crtc);
  
-@@ -2051,9 +2584,14 @@ int drm_mode_attachmode_ioctl(struct drm_device *dev,
+@@ -2058,9 +2584,14 @@ int drm_mode_attachmode_ioctl(struct drm_device *dev,
  		goto out;
  	}
  
@@ -1699,7 +1708,7 @@ index 09851ce..c61e672 100644
  out:
  	mutex_unlock(&dev->mode_config.mutex);
  	return ret;
-@@ -2094,7 +2632,12 @@ int drm_mode_detachmode_ioctl(struct drm_device *dev,
+@@ -2101,7 +2632,12 @@ int drm_mode_detachmode_ioctl(struct drm_device *dev,
  	}
  	connector = obj_to_connector(obj);
  
@@ -1713,7 +1722,7 @@ index 09851ce..c61e672 100644
  	ret = drm_mode_detachmode(dev, connector, &mode);
  out:
  	mutex_unlock(&dev->mode_config.mutex);
-@@ -2105,6 +2648,7 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
+@@ -2112,6 +2648,7 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  					 const char *name, int num_values)
  {
  	struct drm_property *property = NULL;
@@ -1721,7 +1730,7 @@ index 09851ce..c61e672 100644
  
  	property = kzalloc(sizeof(struct drm_property), GFP_KERNEL);
  	if (!property)
-@@ -2116,7 +2660,10 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
+@@ -2123,7 +2660,10 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  			goto fail;
  	}
  
@@ -1733,7 +1742,7 @@ index 09851ce..c61e672 100644
  	property->flags = flags;
  	property->num_values = num_values;
  	INIT_LIST_HEAD(&property->enum_blob_list);
-@@ -2129,11 +2676,59 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
+@@ -2136,11 +2676,59 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  	list_add_tail(&property->head, &dev->mode_config.property_list);
  	return property;
  fail:
@@ -1793,7 +1802,7 @@ index 09851ce..c61e672 100644
  int drm_property_add_enum(struct drm_property *property, int index,
  			  uint64_t value, const char *name)
  {
-@@ -2252,7 +2847,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2259,7 +2847,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	struct drm_property_enum *prop_enum;
  	struct drm_mode_property_enum __user *enum_ptr;
  	struct drm_property_blob *prop_blob;
@@ -1802,7 +1811,7 @@ index 09851ce..c61e672 100644
  	uint64_t __user *values_ptr;
  	uint32_t __user *blob_length_ptr;
  
-@@ -2282,7 +2877,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2289,7 +2877,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	out_resp->flags = property->flags;
  
  	if ((out_resp->count_values >= value_count) && value_count) {
@@ -1811,7 +1820,7 @@ index 09851ce..c61e672 100644
  		for (i = 0; i < value_count; i++) {
  			if (copy_to_user(values_ptr + i, &property->values[i], sizeof(uint64_t))) {
  				ret = -EFAULT;
-@@ -2295,7 +2890,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2302,7 +2890,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	if (property->flags & DRM_MODE_PROP_ENUM) {
  		if ((out_resp->count_enum_blobs >= enum_count) && enum_count) {
  			copied = 0;
@@ -1820,7 +1829,7 @@ index 09851ce..c61e672 100644
  			list_for_each_entry(prop_enum, &property->enum_blob_list, head) {
  
  				if (copy_to_user(&enum_ptr[copied].value, &prop_enum->value, sizeof(uint64_t))) {
-@@ -2317,8 +2912,8 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2324,8 +2912,8 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	if (property->flags & DRM_MODE_PROP_BLOB) {
  		if ((out_resp->count_enum_blobs >= blob_count) && blob_count) {
  			copied = 0;
@@ -1831,7 +1840,7 @@ index 09851ce..c61e672 100644
  
  			list_for_each_entry(prop_blob, &property->enum_blob_list, head) {
  				if (put_user(prop_blob->base.id, blob_id_ptr + copied)) {
-@@ -2345,6 +2940,7 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
+@@ -2352,6 +2940,7 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
  							  void *data)
  {
  	struct drm_property_blob *blob;
@@ -1839,7 +1848,7 @@ index 09851ce..c61e672 100644
  
  	if (!length || !data)
  		return NULL;
-@@ -2353,13 +2949,16 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
+@@ -2360,13 +2949,16 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
  	if (!blob)
  		return NULL;
  
@@ -1859,7 +1868,7 @@ index 09851ce..c61e672 100644
  	list_add_tail(&blob->head, &dev->mode_config.property_blob_list);
  	return blob;
  }
-@@ -2379,7 +2978,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2386,7 +2978,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
  	struct drm_mode_get_blob *out_resp = data;
  	struct drm_property_blob *blob;
  	int ret = 0;
@@ -1868,7 +1877,7 @@ index 09851ce..c61e672 100644
  
  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
  		return -EINVAL;
-@@ -2393,7 +2992,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2400,7 +2992,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
  	blob = obj_to_blob(obj);
  
  	if (out_resp->length == blob->length) {
@@ -1877,7 +1886,7 @@ index 09851ce..c61e672 100644
  		if (copy_to_user(blob_ptr, blob->data, blob->length)){
  			ret = -EFAULT;
  			goto done;
-@@ -2538,7 +3137,7 @@ void drm_mode_connector_detach_encoder(struct drm_connector *connector,
+@@ -2545,7 +3137,7 @@ void drm_mode_connector_detach_encoder(struct drm_connector *connector,
  }
  EXPORT_SYMBOL(drm_mode_connector_detach_encoder);
  
@@ -1886,7 +1895,7 @@ index 09851ce..c61e672 100644
  				  int gamma_size)
  {
  	crtc->gamma_size = gamma_size;
-@@ -2546,10 +3145,10 @@ bool drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
+@@ -2553,10 +3145,10 @@ bool drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
  	crtc->gamma_store = kzalloc(gamma_size * sizeof(uint16_t) * 3, GFP_KERNEL);
  	if (!crtc->gamma_store) {
  		crtc->gamma_size = 0;
@@ -1899,7 +1908,7 @@ index 09851ce..c61e672 100644
  }
  EXPORT_SYMBOL(drm_mode_crtc_set_gamma_size);
  
-@@ -2695,6 +3294,18 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
+@@ -2702,6 +3294,18 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
  		goto out;
  	fb = obj_to_fb(obj);
  
@@ -1918,7 +1927,7 @@ index 09851ce..c61e672 100644
  	if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT) {
  		ret = -ENOMEM;
  		spin_lock_irqsave(&dev->event_lock, flags);
-@@ -2724,10 +3335,12 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
+@@ -2731,10 +3335,12 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
  
  	ret = crtc->funcs->page_flip(crtc, fb, e);
  	if (ret) {
@@ -1935,7 +1944,7 @@ index 09851ce..c61e672 100644
  	}
  
  out:
-@@ -2787,3 +3400,72 @@ int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
+@@ -2794,3 +3400,72 @@ int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
  
  	return dev->driver->dumb_destroy(file_priv, dev, args->handle);
  }
@@ -67783,7 +67792,7 @@ index 2a4b6dc..e6b2288 100644
  	shl b32 $r14 8
  	sub b32 $r15 $r14 $r15
 diff --git a/drivers/gpu/drm/nouveau/nvc0_graph.h b/drivers/gpu/drm/nouveau/nvc0_graph.h
-index 636fe98..91d44ea6 100644
+index 636fe981..91d44ea6 100644
 --- a/drivers/gpu/drm/nouveau/nvc0_graph.h
 +++ b/drivers/gpu/drm/nouveau/nvc0_graph.h
 @@ -87,6 +87,7 @@ nvc0_graph_class(struct drm_device *dev)
@@ -69729,7 +69738,7 @@ index ce984d5..a7eef89 100644
  
  	/* if all controllers have the same amount attached, there's no holes */
 diff --git a/drivers/gpu/drm/nouveau/nvd0_display.c b/drivers/gpu/drm/nouveau/nvd0_display.c
-index 3002d82..8a555fb 100644
+index 3002d82..8a555fb6 100644
 --- a/drivers/gpu/drm/nouveau/nvd0_display.c
 +++ b/drivers/gpu/drm/nouveau/nvd0_display.c
 @@ -35,12 +35,34 @@
@@ -85945,10 +85954,27 @@ index b6e18c8..9c6b29a 100644
  			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 8115557..cf5dd63 100644
+index 21e689d..cf5dd63 100644
 --- a/drivers/gpu/drm/radeon/radeon_combios.c
 +++ b/drivers/gpu/drm/radeon/radeon_combios.c
-@@ -2922,7 +2922,7 @@ bool radeon_combios_external_tmds_setup(struct drm_encoder *encoder)
+@@ -1259,15 +1259,10 @@ struct radeon_encoder_lvds *radeon_combios_get_lvds_info(struct radeon_encoder
+ 
+ 			if ((RBIOS16(tmp) == lvds->native_mode.hdisplay) &&
+ 			    (RBIOS16(tmp + 2) == lvds->native_mode.vdisplay)) {
+-				u32 hss = (RBIOS16(tmp + 21) - RBIOS16(tmp + 19) - 1) * 8;
+-
+-				if (hss > lvds->native_mode.hdisplay)
+-					hss = (10 - 1) * 8;
+-
+ 				lvds->native_mode.htotal = lvds->native_mode.hdisplay +
+ 					(RBIOS16(tmp + 17) - RBIOS16(tmp + 19)) * 8;
+ 				lvds->native_mode.hsync_start = lvds->native_mode.hdisplay +
+-					hss;
++					(RBIOS16(tmp + 21) - RBIOS16(tmp + 19) - 1) * 8;
+ 				lvds->native_mode.hsync_end = lvds->native_mode.hsync_start +
+ 					(RBIOS8(tmp + 23) * 8);
+ 
+@@ -2927,7 +2922,7 @@ bool radeon_combios_external_tmds_setup(struct drm_encoder *encoder)
  					case 4:
  						val = RBIOS16(index);
  						index += 2;
@@ -85957,7 +85983,7 @@ index 8115557..cf5dd63 100644
  						break;
  					case 6:
  						slave_addr = id & 0xff;
-@@ -3121,7 +3121,7 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
+@@ -3126,7 +3121,7 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
  					udelay(150);
  					break;
  				case 2:
@@ -85966,7 +85992,7 @@ index 8115557..cf5dd63 100644
  					break;
  				case 3:
  					while (tmp--) {
-@@ -3152,13 +3152,13 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
+@@ -3157,13 +3152,13 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
  						/*mclk_cntl |= 0x00001111;*//* ??? */
  						WREG32_PLL(RADEON_MCLK_CNTL,
  							   mclk_cntl);
@@ -85983,7 +86009,7 @@ index 8115557..cf5dd63 100644
  					break;
  				default:
 diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
-index 683cede..9184bbe 100644
+index 683cede1..9184bbe 100644
 --- a/drivers/gpu/drm/radeon/radeon_connectors.c
 +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
 @@ -846,6 +846,27 @@ static int radeon_dvi_get_modes(struct drm_connector *connector)
@@ -87959,7 +87985,7 @@ index 76ec0e9..4bd36a3 100644
  	return 0;
  }
 diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c
-index ba7ab79..2a4c592 100644
+index d2572108..2a4c592 100644
 --- a/drivers/gpu/drm/radeon/radeon_gart.c
 +++ b/drivers/gpu/drm/radeon/radeon_gart.c
 @@ -157,9 +157,6 @@ void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset,
@@ -87972,7 +87998,20 @@ index ba7ab79..2a4c592 100644
  			rdev->gart.pages[p] = NULL;
  			rdev->gart.pages_addr[p] = rdev->dummy_page.addr;
  			page_base = rdev->gart.pages_addr[p];
-@@ -191,23 +188,7 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset,
+@@ -171,10 +168,8 @@ void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset,
+ 			}
+ 		}
+ 	}
+-	if (rdev->gart.ptr) {
+-		mb();
+-		radeon_gart_tlb_flush(rdev);
+-	}
++	mb();
++	radeon_gart_tlb_flush(rdev);
+ }
+ 
+ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset,
+@@ -193,23 +188,7 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset,
  	p = t / (PAGE_SIZE / RADEON_GPU_PAGE_SIZE);
  
  	for (i = 0; i < pages; i++, p++) {
@@ -87997,7 +88036,20 @@ index ba7ab79..2a4c592 100644
  		rdev->gart.pages[p] = pagelist[i];
  		if (rdev->gart.ptr) {
  			page_base = rdev->gart.pages_addr[p];
-@@ -274,12 +255,6 @@ int radeon_gart_init(struct radeon_device *rdev)
+@@ -219,10 +198,8 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset,
+ 			}
+ 		}
+ 	}
+-	if (rdev->gart.ptr) {
+-		mb();
+-		radeon_gart_tlb_flush(rdev);
+-	}
++	mb();
++	radeon_gart_tlb_flush(rdev);
+ 	return 0;
+ }
+ 
+@@ -278,12 +255,6 @@ int radeon_gart_init(struct radeon_device *rdev)
  		radeon_gart_fini(rdev);
  		return -ENOMEM;
  	}
@@ -88010,7 +88062,7 @@ index ba7ab79..2a4c592 100644
  	/* set GART entry to point to the dummy page by default */
  	for (i = 0; i < rdev->gart.num_cpu_pages; i++) {
  		rdev->gart.pages_addr[i] = rdev->dummy_page.addr;
-@@ -296,10 +271,418 @@ void radeon_gart_fini(struct radeon_device *rdev)
+@@ -300,10 +271,418 @@ void radeon_gart_fini(struct radeon_device *rdev)
  	rdev->gart.ready = false;
  	kfree(rdev->gart.pages);
  	kfree(rdev->gart.pages_addr);
@@ -88740,10 +88792,23 @@ index 894b5f0..19d68c5 100644
  	snprintf(i2c->adapter.name, sizeof(i2c->adapter.name),
  		 "Radeon aux bus %s", name);
 diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
-index 4f9496e..645dcbf 100644
+index 42f5a2b..645dcbf 100644
 --- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
 +++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
-@@ -65,7 +65,8 @@ void radeon_driver_irq_preinstall_kms(struct drm_device *dev)
+@@ -51,12 +51,10 @@ static void radeon_hotplug_work_func(struct work_struct *work)
+ 	struct drm_mode_config *mode_config = &dev->mode_config;
+ 	struct drm_connector *connector;
+ 
+-	mutex_lock(&mode_config->mutex);
+ 	if (mode_config->num_connector) {
+ 		list_for_each_entry(connector, &mode_config->connector_list, head)
+ 			radeon_connector_hotplug(connector);
+ 	}
+-	mutex_unlock(&mode_config->mutex);
+ 	/* Just fire off a uevent and let userspace tell us what to do */
+ 	drm_helper_hpd_irq_event(dev);
+ }
+@@ -67,7 +65,8 @@ void radeon_driver_irq_preinstall_kms(struct drm_device *dev)
  	unsigned i;
  
  	/* Disable *all* interrupts */
@@ -88753,7 +88818,7 @@ index 4f9496e..645dcbf 100644
  	rdev->irq.gui_idle = false;
  	for (i = 0; i < RADEON_MAX_HPD_PINS; i++)
  		rdev->irq.hpd[i] = false;
-@@ -81,9 +82,11 @@ void radeon_driver_irq_preinstall_kms(struct drm_device *dev)
+@@ -83,9 +82,11 @@ void radeon_driver_irq_preinstall_kms(struct drm_device *dev)
  int radeon_driver_irq_postinstall_kms(struct drm_device *dev)
  {
  	struct radeon_device *rdev = dev->dev_private;
@@ -88766,7 +88831,7 @@ index 4f9496e..645dcbf 100644
  	radeon_irq_set(rdev);
  	return 0;
  }
-@@ -97,7 +100,8 @@ void radeon_driver_irq_uninstall_kms(struct drm_device *dev)
+@@ -99,7 +100,8 @@ void radeon_driver_irq_uninstall_kms(struct drm_device *dev)
  		return;
  	}
  	/* Disable *all* interrupts */
@@ -88776,7 +88841,7 @@ index 4f9496e..645dcbf 100644
  	rdev->irq.gui_idle = false;
  	for (i = 0; i < RADEON_MAX_HPD_PINS; i++)
  		rdev->irq.hpd[i] = false;
-@@ -216,26 +220,26 @@ void radeon_irq_kms_fini(struct radeon_device *rdev)
+@@ -218,26 +220,26 @@ void radeon_irq_kms_fini(struct radeon_device *rdev)
  	flush_work_sync(&rdev->hotplug_work);
  }
  
diff --git a/debian/patches/series b/debian/patches/series
index ce15467..b125b28 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1157,5 +1157,4 @@ bugfix/all/md-use-kzalloc-when-bitmap-is-disabled.patch
 debian/revert-acpica-utilities-split-io-address-types-from-.patch
 bugfix/all/ipv6-addrconf-validate-new-MTU-before-applying-it.patch
 bugfix/all/virtio-net-drop-netif_f_fraglist.patch
-bugfix/all/vhost-actually-track-log-eventfd-file.patch
 bugfix/all/rds-verify-the-underlying-transport-exists-before-cr.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git



More information about the Kernel-svn-changes mailing list