[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