[kernel] r19788 - in dists/sid/linux/debian: . patches patches/bugfix/all patches/features/all/drm patches/features/x86/efi-stub
Ben Hutchings
benh at alioth.debian.org
Wed Feb 6 05:33:01 UTC 2013
Author: benh
Date: Wed Feb 6 05:33:01 2013
New Revision: 19788
Log:
Update to 3.2.38
Modified:
dists/sid/linux/debian/changelog
dists/sid/linux/debian/patches/bugfix/all/usb-Add-USB_QUIRK_RESET_RESUME-for-all-Logitech-UVC-.patch
dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch
dists/sid/linux/debian/patches/features/x86/efi-stub/0002-x86-Don-t-use-magic-strings-for-EFI-loader-signature.patch
dists/sid/linux/debian/patches/series
Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog Wed Feb 6 04:16:13 2013 (r19787)
+++ dists/sid/linux/debian/changelog Wed Feb 6 05:33:01 2013 (r19788)
@@ -1,4 +1,4 @@
-linux (3.2.37-1) UNRELEASED; urgency=low
+linux (3.2.38-1) UNRELEASED; urgency=low
* New upstream stable update:
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.36
@@ -43,6 +43,31 @@
- tcp: RFC 5961 5.2 Blind Data Injection Attack Mitigation
- RDMA/nes: Fix for crash when registering zero length MR for CQ
- ACPI : do not use Lid and Sleep button for S5 wakeup
+ http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.38
+ - staging: comedi: comedi_test: fix race when cancelling command
+ - mm: use aligned zone start for pfn_to_bitidx calculation
+ - [s390] s390/time: fix sched_clock() overflow (Closes: #698382)
+ - [i386] xen: Fix stack corruption in xen_failsafe_callback for 32bit
+ PVOPS guests. (CVE-2013-0190)
+ - KVM: PPC: Emulate dcbf
+ - evm: checking if removexattr is not a NULL
+ - ath9k_htc: Fix memory leak
+ - ath9k: do not link receive buffers during flush
+ - ath9k: fix double-free bug on beacon generate failure
+ - x86/msr: Add capabilities check
+ - can: c_can: fix invalid error codes
+ - can: ti_hecc: fix invalid error codes
+ - can: pch_can: fix invalid error codes
+ - smp: Fix SMP function call empty cpu mask race
+ - xfs: Fix possible use-after-free with AIO
+ - EDAC: Test correct variable in ->store function
+ - samsung-laptop: Disable on EFI hardware, to avoid damaging it
+ - NFS: Don't silently fail setattr() requests on mountpoints
+ - intel-iommu: Prevent devices with RMRRs from being placed into SI Domain
+ - ALSA: usb-audio: Fix regression by disconnection-race-fix patch
+ (Closes: #696321)
+ - printk: fix buffer overflow when calling log_prefix function from
+ call_console_drivers
[ Ben Hutchings ]
* Input: wacom - fix touch support for Bamboo Fun CTH-461
@@ -79,18 +104,14 @@
hid-quanta, hid-samsung, hid-speedlink
* radeon: Firmware is required for DRM and KMS on R600 onward, but not
for KMS on earlier chips (Closes: #697229)
- * vt6656: Fix inconsistent structure packing which leads to crash on amd64
* [!powerpc] radeon: Reenable DRM_RADEON_KMS, as it apparently works on
most non-PowerMac systems
* fs: cachefiles: add support for large files in filesystem caching
(Closes: #698376)
- * [i386] xen: Fix stack corruption in xen_failsafe_callback for 32bit PVOPS
- guests. (CVE-2013-0190)
* [rt] Update to 3.2.37-rt55:
- sched: Adjust sched_reset_on_fork when nothing else changes
- sched: Queue RT tasks to head when prio drops
- sched: Consider pi boosting in setscheduler
- * [s390] s390/time: fix sched_clock() overflow (Closes: #698382)
* 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
Modified: dists/sid/linux/debian/patches/bugfix/all/usb-Add-USB_QUIRK_RESET_RESUME-for-all-Logitech-UVC-.patch
==============================================================================
--- dists/sid/linux/debian/patches/bugfix/all/usb-Add-USB_QUIRK_RESET_RESUME-for-all-Logitech-UVC-.patch Wed Feb 6 04:16:13 2013 (r19787)
+++ dists/sid/linux/debian/patches/bugfix/all/usb-Add-USB_QUIRK_RESET_RESUME-for-all-Logitech-UVC-.patch Wed Feb 6 05:33:01 2013 (r19788)
@@ -12,17 +12,16 @@
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Acked-by: Alan Stern <stern at rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+[bwh: Adjust context to apply after 3.2.38]
---
drivers/usb/core/quirks.c | 58 +++++++++++++--------------------------------
1 file changed, 16 insertions(+), 42 deletions(-)
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index cbd15d1..f15501f4c 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
-@@ -43,53 +43,23 @@ static const struct usb_device_id usb_quirk_list[] = {
- /* Creative SB Audigy 2 NX */
- { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME },
+@@ -46,53 +46,23 @@ static const struct usb_device_id usb_qu
+ /* Microsoft LifeCam-VX700 v2.0 */
+ { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME },
- /* Logitech Webcam C200 */
- { USB_DEVICE(0x046d, 0x0802), .driver_info = USB_QUIRK_RESET_RESUME },
@@ -86,7 +85,7 @@
/* Logitech Harmony 700-series */
{ USB_DEVICE(0x046d, 0xc122), .driver_info = USB_QUIRK_DELAY_INIT },
-@@ -162,6 +132,10 @@ static const struct usb_device_id usb_quirk_list[] = {
+@@ -169,6 +139,10 @@ static const struct usb_device_id usb_qu
};
static const struct usb_device_id usb_interface_quirk_list[] = {
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 6 04:16:13 2013 (r19787)
+++ dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch Wed Feb 6 05:33:01 2013 (r19788)
@@ -42875,10 +42875,18 @@
dvo_ch7xxx.o \
dvo_ch7017.o \
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
-index d00f905..e6162a1 100644
+index 10fe480..e6162a1 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
-@@ -83,6 +83,7 @@ static int i915_capabilities(struct seq_file *m, void *data)
+@@ -30,7 +30,6 @@
+ #include <linux/debugfs.h>
+ #include <linux/slab.h>
+ #include <linux/export.h>
+-#include <generated/utsrelease.h>
+ #include "drmP.h"
+ #include "drm.h"
+ #include "intel_drv.h"
+@@ -84,6 +83,7 @@ static int i915_capabilities(struct seq_file *m, void *data)
B(supports_tv);
B(has_bsd_ring);
B(has_blt_ring);
@@ -42886,7 +42894,7 @@
#undef B
return 0;
-@@ -121,11 +122,11 @@ static const char *cache_level_str(int type)
+@@ -122,11 +122,11 @@ static const char *cache_level_str(int type)
static void
describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj)
{
@@ -42900,7 +42908,7 @@
obj->base.read_domains,
obj->base.write_domain,
obj->last_rendering_seqno,
-@@ -339,7 +340,7 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data)
+@@ -340,7 +340,7 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data)
seq_printf(m, "No flip due on pipe %c (plane %c)\n",
pipe, plane);
} else {
@@ -42909,7 +42917,7 @@
seq_printf(m, "Flip queued on pipe %c (plane %c)\n",
pipe, plane);
} else {
-@@ -350,7 +351,7 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data)
+@@ -351,7 +351,7 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data)
seq_printf(m, "Stall check enabled, ");
else
seq_printf(m, "Stall check waiting for page flip ioctl, ");
@@ -42918,7 +42926,7 @@
if (work->old_fb_obj) {
struct drm_i915_gem_object *obj = work->old_fb_obj;
-@@ -563,45 +564,6 @@ static int i915_hws_info(struct seq_file *m, void *data)
+@@ -564,45 +564,6 @@ static int i915_hws_info(struct seq_file *m, void *data)
return 0;
}
@@ -42964,7 +42972,7 @@
static int i915_ringbuffer_data(struct seq_file *m, void *data)
{
struct drm_info_node *node = (struct drm_info_node *) m->private;
-@@ -653,7 +615,7 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data)
+@@ -654,7 +615,7 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data)
seq_printf(m, " Size : %08x\n", ring->size);
seq_printf(m, " Active : %08x\n", intel_ring_get_active_head(ring));
seq_printf(m, " NOPID : %08x\n", I915_READ_NOPID(ring));
@@ -42973,7 +42981,7 @@
seq_printf(m, " Sync 0 : %08x\n", I915_READ_SYNC_0(ring));
seq_printf(m, " Sync 1 : %08x\n", I915_READ_SYNC_1(ring));
}
-@@ -668,9 +630,9 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data)
+@@ -669,9 +630,9 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data)
static const char *ring_str(int ring)
{
switch (ring) {
@@ -42986,7 +42994,7 @@
default: return "";
}
}
-@@ -713,7 +675,7 @@ static void print_error_buffers(struct seq_file *m,
+@@ -714,7 +675,7 @@ static void print_error_buffers(struct seq_file *m,
seq_printf(m, "%s [%d]:\n", name, count);
while (count--) {
@@ -42995,7 +43003,7 @@
err->gtt_offset,
err->size,
err->read_domains,
-@@ -723,6 +685,7 @@ static void print_error_buffers(struct seq_file *m,
+@@ -724,6 +685,7 @@ static void print_error_buffers(struct seq_file *m,
tiling_flag(err->tiling),
dirty_flag(err->dirty),
purgeable_flag(err->purgeable),
@@ -43003,7 +43011,7 @@
ring_str(err->ring),
cache_level_str(err->cache_level));
-@@ -736,6 +699,38 @@ static void print_error_buffers(struct seq_file *m,
+@@ -737,6 +699,38 @@ static void print_error_buffers(struct seq_file *m,
}
}
@@ -43042,7 +43050,7 @@
static int i915_error_state(struct seq_file *m, void *unused)
{
struct drm_info_node *node = (struct drm_info_node *) m->private;
-@@ -743,7 +738,7 @@ static int i915_error_state(struct seq_file *m, void *unused)
+@@ -744,7 +738,7 @@ static int i915_error_state(struct seq_file *m, void *unused)
drm_i915_private_t *dev_priv = dev->dev_private;
struct drm_i915_error_state *error;
unsigned long flags;
@@ -43051,7 +43059,11 @@
spin_lock_irqsave(&dev_priv->error_lock, flags);
if (!dev_priv->first_error) {
-@@ -758,35 +753,20 @@ static int i915_error_state(struct seq_file *m, void *unused)
+@@ -756,39 +750,23 @@ static int i915_error_state(struct seq_file *m, void *unused)
+
+ seq_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec,
+ error->time.tv_usec);
+- seq_printf(m, "Kernel: " UTS_RELEASE);
seq_printf(m, "PCI ID: 0x%04x\n", dev->pci_device);
seq_printf(m, "EIR: 0x%08x\n", error->eir);
seq_printf(m, "PGTBL_ER: 0x%08x\n", error->pgtbl_er);
@@ -43097,7 +43109,7 @@
if (error->active_bo)
print_error_buffers(m, "Active",
-@@ -798,10 +778,10 @@ static int i915_error_state(struct seq_file *m, void *unused)
+@@ -800,10 +778,10 @@ static int i915_error_state(struct seq_file *m, void *unused)
error->pinned_bo,
error->pinned_bo_count);
@@ -43111,7 +43123,7 @@
seq_printf(m, "%s --- gtt_offset = 0x%08x\n",
dev_priv->ring[i].name,
obj->gtt_offset);
-@@ -813,11 +793,20 @@ static int i915_error_state(struct seq_file *m, void *unused)
+@@ -815,11 +793,20 @@ static int i915_error_state(struct seq_file *m, void *unused)
}
}
}
@@ -43136,7 +43148,7 @@
seq_printf(m, "%s --- ringbuffer = 0x%08x\n",
dev_priv->ring[i].name,
obj->gtt_offset);
-@@ -1001,7 +990,7 @@ static int i915_inttoext_table(struct seq_file *m, void *unused)
+@@ -1003,7 +990,7 @@ static int i915_inttoext_table(struct seq_file *m, void *unused)
return 0;
}
@@ -43145,7 +43157,7 @@
{
struct drm_info_node *node = (struct drm_info_node *) m->private;
struct drm_device *dev = node->minor->dev;
-@@ -1068,6 +1057,95 @@ static int i915_drpc_info(struct seq_file *m, void *unused)
+@@ -1070,6 +1057,95 @@ static int i915_drpc_info(struct seq_file *m, void *unused)
return 0;
}
@@ -43241,7 +43253,7 @@
static int i915_fbc_status(struct seq_file *m, void *unused)
{
struct drm_info_node *node = (struct drm_info_node *) m->private;
-@@ -1146,6 +1224,9 @@ static int i915_emon_status(struct seq_file *m, void *unused)
+@@ -1148,6 +1224,9 @@ static int i915_emon_status(struct seq_file *m, void *unused)
unsigned long temp, chipset, gfx;
int ret;
@@ -43251,7 +43263,7 @@
ret = mutex_lock_interruptible(&dev->struct_mutex);
if (ret)
return ret;
-@@ -1325,11 +1406,102 @@ static int i915_gen6_forcewake_count_info(struct seq_file *m, void *data)
+@@ -1327,11 +1406,102 @@ static int i915_gen6_forcewake_count_info(struct seq_file *m, void *data)
return 0;
}
@@ -43358,7 +43370,7 @@
return 0;
}
-@@ -1383,20 +1555,12 @@ i915_wedged_write(struct file *filp,
+@@ -1385,20 +1555,12 @@ i915_wedged_write(struct file *filp,
static const struct file_operations i915_wedged_fops = {
.owner = THIS_MODULE,
@@ -43380,7 +43392,7 @@
static ssize_t
i915_max_freq_read(struct file *filp,
char __user *ubuf,
-@@ -1453,20 +1617,12 @@ i915_max_freq_write(struct file *filp,
+@@ -1455,20 +1617,12 @@ i915_max_freq_write(struct file *filp,
static const struct file_operations i915_max_freq_fops = {
.owner = THIS_MODULE,
@@ -43402,7 +43414,7 @@
static ssize_t
i915_cache_sharing_read(struct file *filp,
char __user *ubuf,
-@@ -1532,7 +1688,7 @@ i915_cache_sharing_write(struct file *filp,
+@@ -1534,7 +1688,7 @@ i915_cache_sharing_write(struct file *filp,
static const struct file_operations i915_cache_sharing_fops = {
.owner = THIS_MODULE,
@@ -43411,7 +43423,7 @@
.read = i915_cache_sharing_read,
.write = i915_cache_sharing_write,
.llseek = default_llseek,
-@@ -1564,28 +1720,13 @@ drm_add_fake_info_node(struct drm_minor *minor,
+@@ -1566,28 +1720,13 @@ drm_add_fake_info_node(struct drm_minor *minor,
return 0;
}
@@ -43441,7 +43453,7 @@
return 0;
ret = mutex_lock_interruptible(&dev->struct_mutex);
-@@ -1602,7 +1743,7 @@ int i915_forcewake_release(struct inode *inode, struct file *file)
+@@ -1604,7 +1743,7 @@ int i915_forcewake_release(struct inode *inode, struct file *file)
struct drm_device *dev = inode->i_private;
struct drm_i915_private *dev_priv = dev->dev_private;
@@ -43450,7 +43462,7 @@
return 0;
/*
-@@ -1640,34 +1781,22 @@ static int i915_forcewake_create(struct dentry *root, struct drm_minor *minor)
+@@ -1642,34 +1781,22 @@ static int i915_forcewake_create(struct dentry *root, struct drm_minor *minor)
return drm_add_fake_info_node(minor, ent, &i915_forcewake_fops);
}
@@ -43492,7 +43504,7 @@
}
static struct drm_info_list i915_debugfs_list[] = {
-@@ -1693,7 +1822,6 @@ static struct drm_info_list i915_debugfs_list[] = {
+@@ -1695,7 +1822,6 @@ static struct drm_info_list i915_debugfs_list[] = {
{"i915_bsd_ringbuffer_info", i915_ringbuffer_info, 0, (void *)VCS},
{"i915_blt_ringbuffer_data", i915_ringbuffer_data, 0, (void *)BCS},
{"i915_blt_ringbuffer_info", i915_ringbuffer_info, 0, (void *)BCS},
@@ -43500,7 +43512,7 @@
{"i915_error_state", i915_error_state, 0},
{"i915_rstdby_delays", i915_rstdby_delays, 0},
{"i915_cur_delayinfo", i915_cur_delayinfo, 0},
-@@ -1709,6 +1837,8 @@ static struct drm_info_list i915_debugfs_list[] = {
+@@ -1711,6 +1837,8 @@ static struct drm_info_list i915_debugfs_list[] = {
{"i915_gem_framebuffer", i915_gem_framebuffer_info, 0},
{"i915_context_status", i915_context_status, 0},
{"i915_gen6_forcewake_count", i915_gen6_forcewake_count_info, 0},
@@ -43509,7 +43521,7 @@
};
#define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list)
-@@ -1716,17 +1846,25 @@ int i915_debugfs_init(struct drm_minor *minor)
+@@ -1718,17 +1846,25 @@ int i915_debugfs_init(struct drm_minor *minor)
{
int ret;
@@ -44467,7 +44479,7 @@
#define __i915_read(x, y) \
u##x i915_read##x(struct drm_i915_private *dev_priv, u32 reg);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index 5950ba3..a230a93 100644
+index b0186b8..a230a93 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -58,6 +58,7 @@ static void i915_gem_free_object_tail(struct drm_i915_gem_object *obj);
@@ -45246,7 +45258,26 @@
atomic_read(&dev_priv->mm.wedged), 3000)) {
ret = -EBUSY;
}
-@@ -3657,8 +3607,8 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
+@@ -3456,15 +3406,14 @@ i915_gem_pin_ioctl(struct drm_device *dev, void *data,
+ goto out;
+ }
+
+- if (obj->user_pin_count == 0) {
++ obj->user_pin_count++;
++ obj->pin_filp = file;
++ if (obj->user_pin_count == 1) {
+ ret = i915_gem_object_pin(obj, args->alignment, true);
+ if (ret)
+ goto out;
+ }
+
+- obj->user_pin_count++;
+- obj->pin_filp = file;
+-
+ /* XXX - flush the CPU caches for pinned objects
+ * as the X server doesn't manage domains yet
+ */
+@@ -3658,8 +3607,8 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
obj->base.write_domain = I915_GEM_DOMAIN_CPU;
obj->base.read_domains = I915_GEM_DOMAIN_CPU;
@@ -45257,7 +45288,7 @@
* cache) for about a 10% performance improvement
* compared to uncached. Graphics requests other than
* display scanout are coherent with the CPU in
-@@ -3748,7 +3698,7 @@ i915_gem_idle(struct drm_device *dev)
+@@ -3749,7 +3698,7 @@ i915_gem_idle(struct drm_device *dev)
return 0;
}
@@ -45266,7 +45297,7 @@
if (ret) {
mutex_unlock(&dev->struct_mutex);
return ret;
-@@ -3783,12 +3733,91 @@ i915_gem_idle(struct drm_device *dev)
+@@ -3784,12 +3733,91 @@ i915_gem_idle(struct drm_device *dev)
return 0;
}
@@ -45359,7 +45390,7 @@
ret = intel_init_render_ring_buffer(dev);
if (ret)
return ret;
-@@ -3807,6 +3836,8 @@ i915_gem_init_ringbuffer(struct drm_device *dev)
+@@ -3808,6 +3836,8 @@ i915_gem_init_ringbuffer(struct drm_device *dev)
dev_priv->next_seqno = 1;
@@ -45368,7 +45399,7 @@
return 0;
cleanup_bsd_ring:
-@@ -3844,7 +3875,7 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
+@@ -3845,7 +3875,7 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
mutex_lock(&dev->struct_mutex);
dev_priv->mm.suspended = 0;
@@ -45377,7 +45408,7 @@
if (ret != 0) {
mutex_unlock(&dev->struct_mutex);
return ret;
-@@ -4239,7 +4270,7 @@ rescan:
+@@ -4240,7 +4270,7 @@ rescan:
* This has a dramatic impact to reduce the number of
* OOM-killer events whilst running the GPU aggressively.
*/
@@ -45450,7 +45481,7 @@
return ret;
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
-index 1202198..d4417e3 100644
+index 878b989..d4417e3 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -203,9 +203,9 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj,
@@ -45715,42 +45746,7 @@
}
return ret;
-@@ -657,6 +707,8 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev,
- total = 0;
- for (i = 0; i < count; i++) {
- struct drm_i915_gem_relocation_entry __user *user_relocs;
-+ u64 invalid_offset = (u64)-1;
-+ int j;
-
- user_relocs = (void __user *)(uintptr_t)exec[i].relocs_ptr;
-
-@@ -667,6 +719,25 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev,
- goto err;
- }
-
-+ /* As we do not update the known relocation offsets after
-+ * relocating (due to the complexities in lock handling),
-+ * we need to mark them as invalid now so that we force the
-+ * relocation processing next time. Just in case the target
-+ * object is evicted and then rebound into its old
-+ * presumed_offset before the next execbuffer - if that
-+ * happened we would make the mistake of assuming that the
-+ * relocations were valid.
-+ */
-+ for (j = 0; j < exec[i].relocation_count; j++) {
-+ if (copy_to_user(&user_relocs[j].presumed_offset,
-+ &invalid_offset,
-+ sizeof(invalid_offset))) {
-+ ret = -EFAULT;
-+ mutex_lock(&dev->struct_mutex);
-+ goto err;
-+ }
-+ }
-+
- reloc_offset[i] = total;
- total += exec[i].relocation_count;
- }
-@@ -683,7 +754,7 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev,
+@@ -704,7 +754,7 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev,
obj = to_intel_bo(drm_gem_object_lookup(dev, file,
exec[i].handle));
if (&obj->base == NULL) {
@@ -45759,7 +45755,7 @@
exec[i].handle, i);
ret = -ENOENT;
goto err;
-@@ -972,6 +1043,31 @@ i915_gem_execbuffer_retire_commands(struct drm_device *dev,
+@@ -993,6 +1043,31 @@ i915_gem_execbuffer_retire_commands(struct drm_device *dev,
}
static int
@@ -45791,7 +45787,7 @@
i915_gem_do_execbuffer(struct drm_device *dev, void *data,
struct drm_file *file,
struct drm_i915_gem_execbuffer2 *args,
-@@ -989,7 +1085,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+@@ -1010,7 +1085,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
int ret, mode, i;
if (!i915_gem_check_execbuffer(args)) {
@@ -45800,7 +45796,7 @@
return -EINVAL;
}
-@@ -1004,20 +1100,20 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+@@ -1025,20 +1100,20 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
break;
case I915_EXEC_BSD:
if (!HAS_BSD(dev)) {
@@ -45824,7 +45820,7 @@
(int)(args->flags & I915_EXEC_RING_MASK));
return -EINVAL;
}
-@@ -1043,18 +1139,18 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+@@ -1064,18 +1139,18 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
}
break;
default:
@@ -45846,7 +45842,7 @@
return -EINVAL;
}
-@@ -1104,7 +1200,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+@@ -1125,7 +1200,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
obj = to_intel_bo(drm_gem_object_lookup(dev, file,
exec[i].handle));
if (&obj->base == NULL) {
@@ -45855,7 +45851,7 @@
exec[i].handle, i);
/* prevent error path from reading uninitialized data */
ret = -ENOENT;
-@@ -1112,7 +1208,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+@@ -1133,7 +1208,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
}
if (!list_empty(&obj->exec_list)) {
@@ -45864,7 +45860,7 @@
obj, exec[i].handle, i);
ret = -EINVAL;
goto err;
-@@ -1150,7 +1246,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+@@ -1171,7 +1246,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
/* Set the pending read domains for the batch buffer to COMMAND */
if (batch_obj->base.pending_write_domain) {
@@ -45873,7 +45869,7 @@
ret = -EINVAL;
goto err;
}
-@@ -1167,7 +1263,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+@@ -1188,7 +1263,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
* so every billion or so execbuffers, we need to stall
* the GPU in order to reset the counters.
*/
@@ -45882,7 +45878,7 @@
if (ret)
goto err;
-@@ -1190,6 +1286,12 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+@@ -1211,6 +1286,12 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
dev_priv->relative_constants_mode = mode;
}
@@ -45895,7 +45891,7 @@
trace_i915_gem_ring_dispatch(ring, seqno);
exec_start = batch_obj->gtt_offset + args->batch_start_offset;
-@@ -1249,7 +1351,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
+@@ -1270,7 +1351,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
int ret, i;
if (args->buffer_count < 1) {
@@ -45904,7 +45900,7 @@
return -EINVAL;
}
-@@ -1257,7 +1359,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
+@@ -1278,7 +1359,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
exec_list = drm_malloc_ab(sizeof(*exec_list), args->buffer_count);
exec2_list = drm_malloc_ab(sizeof(*exec2_list), args->buffer_count);
if (exec_list == NULL || exec2_list == NULL) {
@@ -45913,7 +45909,7 @@
args->buffer_count);
drm_free_large(exec_list);
drm_free_large(exec2_list);
-@@ -1268,7 +1370,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
+@@ -1289,7 +1370,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
(uintptr_t) args->buffers_ptr,
sizeof(*exec_list) * args->buffer_count);
if (ret != 0) {
@@ -45922,7 +45918,7 @@
args->buffer_count, ret);
drm_free_large(exec_list);
drm_free_large(exec2_list);
-@@ -1309,7 +1411,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
+@@ -1330,7 +1411,7 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
sizeof(*exec_list) * args->buffer_count);
if (ret) {
ret = -EFAULT;
@@ -45931,7 +45927,7 @@
"back to user (%d)\n",
args->buffer_count, ret);
}
-@@ -1330,7 +1432,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
+@@ -1351,7 +1432,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
if (args->buffer_count < 1 ||
args->buffer_count > UINT_MAX / sizeof(*exec2_list)) {
@@ -45940,7 +45936,7 @@
return -EINVAL;
}
-@@ -1340,7 +1442,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
+@@ -1361,7 +1442,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
exec2_list = drm_malloc_ab(sizeof(*exec2_list),
args->buffer_count);
if (exec2_list == NULL) {
@@ -45949,7 +45945,7 @@
args->buffer_count);
return -ENOMEM;
}
-@@ -1349,7 +1451,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
+@@ -1370,7 +1451,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
(uintptr_t) args->buffers_ptr,
sizeof(*exec2_list) * args->buffer_count);
if (ret != 0) {
@@ -45958,7 +45954,7 @@
args->buffer_count, ret);
drm_free_large(exec2_list);
return -EFAULT;
-@@ -1364,7 +1466,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
+@@ -1385,7 +1466,7 @@ i915_gem_execbuffer2(struct drm_device *dev, void *data,
sizeof(*exec2_list) * args->buffer_count);
if (ret) {
ret = -EFAULT;
@@ -47004,19 +47000,10 @@
- return 0;
-}
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index 7a10f5f..dde62bf 100644
+index 124dd87..dde62bf 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -27,6 +27,8 @@
-
- #define _PIPE(pipe, a, b) ((a) + (pipe)*((b)-(a)))
-
-+#define _MASKED_BIT_ENABLE(a) (((a) << 16) | (a))
-+
- /*
- * The Bridge device's PCI config space has information about the
- * fb aperture size and the amount of pre-reserved memory.
-@@ -86,12 +88,45 @@
+@@ -88,12 +88,45 @@
#define GEN6_MBC_SNPCR_LOW (2<<21)
#define GEN6_MBC_SNPCR_MIN (3<<21) /* only 1/16th of the cache is shared */
@@ -47062,7 +47049,7 @@
/* VGA stuff */
#define VGA_ST01_MDA 0x3ba
-@@ -303,6 +338,12 @@
+@@ -305,6 +338,12 @@
#define FENCE_REG_SANDYBRIDGE_0 0x100000
#define SANDYBRIDGE_FENCE_PITCH_SHIFT 32
@@ -47075,7 +47062,7 @@
/*
* Instruction and interrupt control regs
*/
-@@ -326,7 +367,14 @@
+@@ -328,7 +367,14 @@
#define RING_MAX_IDLE(base) ((base)+0x54)
#define RING_HWS_PGA(base) ((base)+0x80)
#define RING_HWS_PGA_GEN6(base) ((base)+0x2080)
@@ -47090,7 +47077,7 @@
#define BSD_HWS_PGA_GEN7 (0x04180)
#define BLT_HWS_PGA_GEN7 (0x04280)
#define RING_ACTHD(base) ((base)+0x74)
-@@ -360,6 +408,12 @@
+@@ -362,6 +408,12 @@
#define IPEIR_I965 0x02064
#define IPEHR_I965 0x02068
#define INSTDONE_I965 0x0206c
@@ -47103,7 +47090,7 @@
#define INSTPS 0x02070 /* 965+ only */
#define INSTDONE1 0x0207c /* 965+ only */
#define ACTHD_I965 0x02074
-@@ -373,14 +427,6 @@
+@@ -375,14 +427,6 @@
#define INSTDONE 0x02090
#define NOPID 0x02094
#define HWSTAM 0x02098
@@ -47118,20 +47105,11 @@
#define ERROR_GEN6 0x040a0
-@@ -389,6 +435,7 @@
- * the enables for writing to the corresponding low bit.
- */
- #define _3D_CHICKEN 0x02084
-+#define _3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB (1 << 10)
- #define _3D_CHICKEN2 0x0208c
- /* Disables pipelining of read flushes past the SF-WIZ interface.
- * Required on all Ironlake steppings according to the B-Spec, but the
-@@ -399,13 +446,14 @@
-
+@@ -403,13 +447,13 @@
#define MI_MODE 0x0209c
# define VS_TIMER_DISPATCH (1 << 6)
--# define MI_FLUSH_ENABLE (1 << 11)
-+# define MI_FLUSH_ENABLE (1 << 12)
+ # define MI_FLUSH_ENABLE (1 << 12)
+-# define ASYNC_FLIP_PERF_DISABLE (1 << 14)
#define GEN6_GT_MODE 0x20d0
#define GEN6_GT_MODE_HI (1 << 9)
@@ -47142,7 +47120,7 @@
#define GFX_RUN_LIST_ENABLE (1<<15)
#define GFX_TLB_INVALIDATE_ALWAYS (1<<13)
#define GFX_SURFACE_FAULT_ENABLE (1<<12)
-@@ -1064,6 +1112,29 @@
+@@ -1068,6 +1112,29 @@
#define C0DRB3 0x10206
#define C1DRB3 0x10606
@@ -47172,7 +47150,7 @@
/* Clocking configuration register */
#define CLKCFG 0x10c00
#define CLKCFG_FSB_400 (5 << 0) /* hrawclk 100 */
-@@ -1343,6 +1414,7 @@
+@@ -1347,6 +1414,7 @@
#define _VSYNC_A 0x60014
#define _PIPEASRC 0x6001c
#define _BCLRPAT_A 0x60020
@@ -47180,7 +47158,7 @@
/* Pipe B timing regs */
#define _HTOTAL_B 0x61000
-@@ -1353,6 +1425,8 @@
+@@ -1357,6 +1425,8 @@
#define _VSYNC_B 0x61014
#define _PIPEBSRC 0x6101c
#define _BCLRPAT_B 0x61020
@@ -47189,7 +47167,7 @@
#define HTOTAL(pipe) _PIPE(pipe, _HTOTAL_A, _HTOTAL_B)
#define HBLANK(pipe) _PIPE(pipe, _HBLANK_A, _HBLANK_B)
-@@ -1361,6 +1435,7 @@
+@@ -1365,6 +1435,7 @@
#define VBLANK(pipe) _PIPE(pipe, _VBLANK_A, _VBLANK_B)
#define VSYNC(pipe) _PIPE(pipe, _VSYNC_A, _VSYNC_B)
#define BCLRPAT(pipe) _PIPE(pipe, _BCLRPAT_A, _BCLRPAT_B)
@@ -47197,7 +47175,7 @@
/* VGA port control */
#define ADPA 0x61100
-@@ -1560,10 +1635,6 @@
+@@ -1564,10 +1635,6 @@
/* Video Data Island Packet control */
#define VIDEO_DIP_DATA 0x61178
@@ -47208,7 +47186,7 @@
#define VIDEO_DIP_CTL 0x61170
#define VIDEO_DIP_ENABLE (1 << 31)
#define VIDEO_DIP_PORT_B (1 << 29)
-@@ -2357,9 +2428,21 @@
+@@ -2361,9 +2428,21 @@
#define PIPECONF_PALETTE 0
#define PIPECONF_GAMMA (1<<24)
#define PIPECONF_FORCE_BORDER (1<<25)
@@ -47232,7 +47210,7 @@
#define PIPECONF_CXSR_DOWNCLOCK (1<<16)
#define PIPECONF_BPP_MASK (0x000000e0)
#define PIPECONF_BPP_8 (0<<5)
-@@ -2498,6 +2581,8 @@
+@@ -2502,6 +2581,8 @@
#define WM3_LP_ILK 0x45110
#define WM3_LP_EN (1<<31)
#define WM1S_LP_ILK 0x45120
@@ -47241,7 +47219,7 @@
#define WM1S_LP_EN (1<<31)
/* Memory latency timer register */
-@@ -2714,6 +2799,140 @@
+@@ -2718,6 +2799,140 @@
#define _DSPBSURF 0x7119C
#define _DSPBTILEOFF 0x711A4
@@ -47382,7 +47360,7 @@
/* VBIOS regs */
#define VGACNTRL 0x71400
# define VGA_DISP_DISABLE (1 << 31)
-@@ -2923,6 +3142,10 @@
+@@ -2927,6 +3142,10 @@
#define ILK_DPFC_DIS1 (1<<8)
#define ILK_DPFC_DIS2 (1<<9)
@@ -47393,7 +47371,7 @@
#define DISP_ARB_CTL 0x45000
#define DISP_TILE_SURFACE_SWIZZLING (1<<13)
#define DISP_FBC_WM_DIS (1<<15)
-@@ -3118,6 +3341,7 @@
+@@ -3122,6 +3341,7 @@
#define _TRANS_VSYNC_A 0xe0014
#define TRANS_VSYNC_END_SHIFT 16
#define TRANS_VSYNC_START_SHIFT 0
@@ -47401,7 +47379,7 @@
#define _TRANSA_DATA_M1 0xe0030
#define _TRANSA_DATA_N1 0xe0034
-@@ -3148,6 +3372,7 @@
+@@ -3152,6 +3372,7 @@
#define _TRANS_VTOTAL_B 0xe100c
#define _TRANS_VBLANK_B 0xe1010
#define _TRANS_VSYNC_B 0xe1014
@@ -47409,7 +47387,7 @@
#define TRANS_HTOTAL(pipe) _PIPE(pipe, _TRANS_HTOTAL_A, _TRANS_HTOTAL_B)
#define TRANS_HBLANK(pipe) _PIPE(pipe, _TRANS_HBLANK_A, _TRANS_HBLANK_B)
-@@ -3155,6 +3380,8 @@
+@@ -3159,6 +3380,8 @@
#define TRANS_VTOTAL(pipe) _PIPE(pipe, _TRANS_VTOTAL_A, _TRANS_VTOTAL_B)
#define TRANS_VBLANK(pipe) _PIPE(pipe, _TRANS_VBLANK_A, _TRANS_VBLANK_B)
#define TRANS_VSYNC(pipe) _PIPE(pipe, _TRANS_VSYNC_A, _TRANS_VSYNC_B)
@@ -47418,7 +47396,7 @@
#define _TRANSB_DATA_M1 0xe1030
#define _TRANSB_DATA_N1 0xe1034
-@@ -3188,7 +3415,10 @@
+@@ -3192,7 +3415,10 @@
#define TRANS_FSYNC_DELAY_HB4 (3<<27)
#define TRANS_DP_AUDIO_ONLY (1<<26)
#define TRANS_DP_VIDEO_AUDIO (0<<26)
@@ -47429,7 +47407,7 @@
#define TRANS_8BPC (0<<5)
#define TRANS_10BPC (1<<5)
#define TRANS_6BPC (2<<5)
-@@ -3527,9 +3757,18 @@
+@@ -3531,9 +3757,18 @@
#define ECOBUS 0xa180
#define FORCEWAKE_MT_ENABLE (1<<5)
@@ -47448,7 +47426,7 @@
#define GEN6_UCGCTL2 0x9404
# define GEN6_RCZUNIT_CLOCK_GATE_DISABLE (1 << 13)
# define GEN6_RCPBUNIT_CLOCK_GATE_DISABLE (1 << 12)
-@@ -3617,6 +3856,14 @@
+@@ -3621,6 +3856,14 @@
#define GEN6_PCODE_DATA 0x138128
#define GEN6_PCODE_FREQ_IA_RATIO_SHIFT 8
@@ -47463,7 +47441,7 @@
#define G4X_AUD_VID_DID 0x62020
#define INTEL_AUDIO_DEVCL 0x808629FB
#define INTEL_AUDIO_DEVBLC 0x80862801
-@@ -3629,17 +3876,35 @@
+@@ -3633,17 +3876,35 @@
#define G4X_ELD_ACK (1 << 4)
#define G4X_HDMIW_HDMIEDID 0x6210C
@@ -47752,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 fa9639b..3c9b9c5 100644
+index c05e825..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 {
@@ -49284,15 +49262,7 @@
I915_WRITE(GEN6_RC_CONTROL,
rc6_mask |
-@@ -8279,10 +8592,18 @@ static void gen6_init_clock_gating(struct drm_device *dev)
- I915_READ(ILK_DISPLAY_CHICKEN2) |
- ILK_ELPIN_409_SELECT);
-
-+ /* WaDisableHiZPlanesWhenMSAAEnabled */
-+ I915_WRITE(_3D_CHICKEN,
-+ _MASKED_BIT_ENABLE(_3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB));
-+
- I915_WRITE(WM3_LP_ILK, 0);
+@@ -8287,6 +8600,10 @@ static void gen6_init_clock_gating(struct drm_device *dev)
I915_WRITE(WM2_LP_ILK, 0);
I915_WRITE(WM1_LP_ILK, 0);
@@ -49303,7 +49273,7 @@
/* According to the BSpec vol1g, bit 12 (RCPBUNIT) clock
* gating disable must be set. Failure to set it results in
* flickering pixels due to Z write ordering failures after
-@@ -8361,6 +8682,10 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
+@@ -8365,6 +8682,10 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE);
@@ -49314,7 +49284,7 @@
/* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */
I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1,
GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC);
-@@ -8671,9 +8996,15 @@ static void intel_init_display(struct drm_device *dev)
+@@ -8675,9 +8996,15 @@ static void intel_init_display(struct drm_device *dev)
if (IS_IVYBRIDGE(dev)) {
u32 ecobus;
@@ -49331,7 +49301,7 @@
__gen6_gt_force_wake_mt_put(dev_priv);
mutex_unlock(&dev->struct_mutex);
-@@ -8705,6 +9036,7 @@ static void intel_init_display(struct drm_device *dev)
+@@ -8709,6 +9036,7 @@ static void intel_init_display(struct drm_device *dev)
} else if (IS_GEN6(dev)) {
if (SNB_READ_WM0_LATENCY()) {
dev_priv->display.update_wm = sandybridge_update_wm;
@@ -49339,7 +49309,7 @@
} else {
DRM_DEBUG_KMS("Failed to read display plane latency. "
"Disable CxSR\n");
-@@ -8718,6 +9050,7 @@ static void intel_init_display(struct drm_device *dev)
+@@ -8722,6 +9050,7 @@ static void intel_init_display(struct drm_device *dev)
dev_priv->display.fdi_link_train = ivb_manual_fdi_link_train;
if (SNB_READ_WM0_LATENCY()) {
dev_priv->display.update_wm = sandybridge_update_wm;
@@ -49347,7 +49317,7 @@
} else {
DRM_DEBUG_KMS("Failed to read display plane latency. "
"Disable CxSR\n");
-@@ -8830,8 +9163,6 @@ struct intel_quirk {
+@@ -8834,8 +9163,6 @@ struct intel_quirk {
};
struct intel_quirk intel_quirks[] = {
@@ -49356,7 +49326,7 @@
/* HP Mini needs pipe A force quirk (LP: #322104) */
{ 0x27ae, 0x103c, 0x361a, quirk_pipea_force },
-@@ -8898,33 +9229,19 @@ static void i915_disable_vga(struct drm_device *dev)
+@@ -8902,33 +9229,19 @@ static void i915_disable_vga(struct drm_device *dev)
POSTING_READ(vga_reg);
}
@@ -49394,7 +49364,7 @@
dev->mode_config.funcs = (void *)&intel_mode_funcs;
intel_init_quirks(dev);
-@@ -8948,6 +9265,9 @@ void intel_modeset_init(struct drm_device *dev)
+@@ -8952,6 +9265,9 @@ void intel_modeset_init(struct drm_device *dev)
for (i = 0; i < dev_priv->num_pipe; i++) {
intel_crtc_init(dev, i);
@@ -50164,7 +50134,7 @@
}
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
-index c6d0966..a8b28c4 100644
+index 6601d21..a8b28c4 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -187,6 +187,8 @@ centre_horizontally(struct drm_display_mode *mode,
@@ -50202,22 +50172,7 @@
mutex_unlock(&dev->mode_config.mutex);
return NOTIFY_OK;
-@@ -774,14 +779,6 @@ static const struct dmi_system_id intel_no_lvds[] = {
- },
- {
- .callback = intel_no_lvds_dmi_callback,
-- .ident = "ZOTAC ZBOXSD-ID12/ID13",
-- .matches = {
-- DMI_MATCH(DMI_BOARD_VENDOR, "ZOTAC"),
-- DMI_MATCH(DMI_BOARD_NAME, "ZBOXSD-ID12/ID13"),
-- },
-- },
-- {
-- .callback = intel_no_lvds_dmi_callback,
- .ident = "Gigabyte GA-D525TUD",
- .matches = {
- DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."),
-@@ -901,6 +898,18 @@ static bool lvds_is_present_in_vbt(struct drm_device *dev,
+@@ -893,6 +898,18 @@ static bool lvds_is_present_in_vbt(struct drm_device *dev,
return false;
}
@@ -50236,7 +50191,7 @@
/**
* intel_lvds_init - setup LVDS connectors on this device
* @dev: drm device
-@@ -922,6 +931,9 @@ bool intel_lvds_init(struct drm_device *dev)
+@@ -914,6 +931,9 @@ bool intel_lvds_init(struct drm_device *dev)
int pipe;
u8 pin;
@@ -50470,7 +50425,7 @@
} else {
val = I915_READ(BLC_PWM_CTL);
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
-index 19085c0..c17325c 100644
+index 4fddd21..c17325c 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -263,6 +263,8 @@ static int init_ring_common(struct intel_ring_buffer *ring)
@@ -50502,16 +50457,37 @@
}
out:
-@@ -398,8 +396,6 @@ static int init_render_ring(struct intel_ring_buffer *ring)
-
+@@ -399,25 +397,12 @@ static int init_render_ring(struct intel_ring_buffer *ring)
if (INTEL_INFO(dev)->gen > 3) {
int mode = VS_TIMER_DISPATCH << 16 | VS_TIMER_DISPATCH;
-- if (IS_GEN6(dev) || IS_GEN7(dev))
-- mode |= MI_FLUSH_ENABLE << 16 | MI_FLUSH_ENABLE;
I915_WRITE(MI_MODE, mode);
- if (IS_GEN7(dev))
- I915_WRITE(GFX_MODE_GEN7,
-@@ -609,6 +605,7 @@ pc_render_add_request(struct intel_ring_buffer *ring,
++ if (IS_GEN7(dev))
++ I915_WRITE(GFX_MODE_GEN7,
++ GFX_MODE_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) |
++ GFX_MODE_ENABLE(GFX_REPLAY_MODE));
+ }
+
+- /* We need to disable the AsyncFlip performance optimisations in order
+- * to use MI_WAIT_FOR_EVENT within the CS. It should already be
+- * programmed to '1' on all products.
+- */
+- if (INTEL_INFO(dev)->gen >= 6)
+- I915_WRITE(MI_MODE, GFX_MODE_ENABLE(ASYNC_FLIP_PERF_DISABLE));
+-
+- /* Required for the hardware to program scanline values for waiting */
+- if (INTEL_INFO(dev)->gen == 6)
+- I915_WRITE(GFX_MODE,
+- GFX_MODE_ENABLE(GFX_TLB_INVALIDATE_ALWAYS));
+-
+- if (IS_GEN7(dev))
+- I915_WRITE(GFX_MODE_GEN7,
+- GFX_MODE_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) |
+- GFX_MODE_ENABLE(GFX_REPLAY_MODE));
+-
+ if (INTEL_INFO(dev)->gen >= 5) {
+ ret = init_pipe_control(ring);
+ if (ret)
+@@ -620,6 +605,7 @@ pc_render_add_request(struct intel_ring_buffer *ring,
PIPE_CONTROL_FLUSH(ring, scratch_addr);
scratch_addr += 128;
PIPE_CONTROL_FLUSH(ring, scratch_addr);
@@ -50519,7 +50495,7 @@
intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE |
PIPE_CONTROL_WRITE_FLUSH |
PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE |
-@@ -651,7 +648,7 @@ gen6_ring_get_seqno(struct intel_ring_buffer *ring)
+@@ -662,7 +648,7 @@ gen6_ring_get_seqno(struct intel_ring_buffer *ring)
/* Workaround to force correct ordering between irq and seqno writes on
* ivb (and maybe also on snb) by reading from a CS register (like
* ACTHD) before reading the status page. */
@@ -50528,7 +50504,7 @@
intel_ring_get_active_head(ring);
return intel_read_status_page(ring, I915_GEM_HWS_INDEX);
}
-@@ -752,13 +749,13 @@ void intel_ring_setup_status_page(struct intel_ring_buffer *ring)
+@@ -763,13 +749,13 @@ void intel_ring_setup_status_page(struct intel_ring_buffer *ring)
*/
if (IS_GEN7(dev)) {
switch (ring->id) {
@@ -50545,7 +50521,7 @@
mmio = BSD_HWS_PGA_GEN7;
break;
}
-@@ -824,8 +821,7 @@ gen6_ring_get_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag)
+@@ -835,8 +821,7 @@ gen6_ring_get_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag)
/* It looks like we need to prevent the gt from suspending while waiting
* for an notifiy irq, otherwise irqs seem to get lost on at least the
* blt/bsd rings on ivb. */
@@ -50555,7 +50531,7 @@
spin_lock(&ring->irq_lock);
if (ring->irq_refcount++ == 0) {
-@@ -852,8 +848,7 @@ gen6_ring_put_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag)
+@@ -863,8 +848,7 @@ gen6_ring_put_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag)
}
spin_unlock(&ring->irq_lock);
@@ -50565,7 +50541,7 @@
}
static bool
-@@ -1139,14 +1134,105 @@ static int intel_wrap_ring_buffer(struct intel_ring_buffer *ring)
+@@ -1150,14 +1134,105 @@ static int intel_wrap_ring_buffer(struct intel_ring_buffer *ring)
return 0;
}
@@ -50672,7 +50648,7 @@
do {
ring->head = I915_READ_HEAD(ring);
ring->space = ring_space(ring);
-@@ -1203,7 +1289,7 @@ void intel_ring_advance(struct intel_ring_buffer *ring)
+@@ -1214,7 +1289,7 @@ void intel_ring_advance(struct intel_ring_buffer *ring)
static const struct intel_ring_buffer render_ring = {
.name = "render ring",
@@ -50681,7 +50657,7 @@
.mmio_base = RENDER_RING_BASE,
.size = 32 * PAGE_SIZE,
.init = init_render_ring,
-@@ -1226,7 +1312,7 @@ static const struct intel_ring_buffer render_ring = {
+@@ -1237,7 +1312,7 @@ static const struct intel_ring_buffer render_ring = {
static const struct intel_ring_buffer bsd_ring = {
.name = "bsd ring",
@@ -50690,7 +50666,7 @@
.mmio_base = BSD_RING_BASE,
.size = 32 * PAGE_SIZE,
.init = init_ring_common,
-@@ -1336,7 +1422,7 @@ gen6_bsd_ring_put_irq(struct intel_ring_buffer *ring)
+@@ -1347,7 +1422,7 @@ gen6_bsd_ring_put_irq(struct intel_ring_buffer *ring)
/* ring buffer for Video Codec for Gen6+ */
static const struct intel_ring_buffer gen6_bsd_ring = {
.name = "gen6 bsd ring",
@@ -50699,7 +50675,7 @@
.mmio_base = GEN6_BSD_RING_BASE,
.size = 32 * PAGE_SIZE,
.init = init_ring_common,
-@@ -1372,79 +1458,13 @@ blt_ring_put_irq(struct intel_ring_buffer *ring)
+@@ -1383,79 +1458,13 @@ blt_ring_put_irq(struct intel_ring_buffer *ring)
GEN6_BLITTER_USER_INTERRUPT);
}
@@ -50780,7 +50756,7 @@
if (ret)
return ret;
-@@ -1459,22 +1479,12 @@ static int blt_ring_flush(struct intel_ring_buffer *ring,
+@@ -1470,22 +1479,12 @@ static int blt_ring_flush(struct intel_ring_buffer *ring,
return 0;
}
@@ -50805,7 +50781,7 @@
.write_tail = ring_write_tail,
.flush = blt_ring_flush,
.add_request = gen6_add_request,
-@@ -1482,7 +1492,6 @@ static const struct intel_ring_buffer gen6_blt_ring = {
+@@ -1493,7 +1492,6 @@ static const struct intel_ring_buffer gen6_blt_ring = {
.irq_get = blt_ring_get_irq,
.irq_put = blt_ring_put_irq,
.dispatch_execbuffer = gen6_ring_dispatch_execbuffer,
@@ -86026,7 +86002,7 @@
dev_priv->flags |= RADEON_IS_AGP;
else if (pci_is_pcie(dev->pdev))
diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
-index 29afd71..cf723c4 100644
+index 1f32557..cf723c4 100644
--- a/drivers/gpu/drm/radeon/radeon_cs.c
+++ b/drivers/gpu/drm/radeon/radeon_cs.c
@@ -58,7 +58,7 @@ int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
@@ -86176,7 +86152,7 @@
size = p->chunks[i].length_dw * sizeof(uint32_t);
p->chunks[i].kdata = kmalloc(size, GFP_KERNEL);
if (p->chunks[i].kdata == NULL) {
-@@ -160,29 +244,55 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)
+@@ -160,31 +244,55 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)
return -EFAULT;
}
if (p->chunks[i].chunk_id == RADEON_CHUNK_ID_FLAGS) {
@@ -86188,6 +86164,8 @@
- if (p->chunks[i].kpage[0] == NULL || p->chunks[i].kpage[1] == NULL) {
- kfree(p->chunks[i].kpage[0]);
- kfree(p->chunks[i].kpage[1]);
+- p->chunks[i].kpage[0] = NULL;
+- p->chunks[i].kpage[1] = NULL;
- return -ENOMEM;
+ p->cs_flags = p->chunks[i].kdata[0];
+ if (p->chunks[i].length_dw > 1)
@@ -86250,7 +86228,7 @@
return 0;
}
-@@ -224,14 +334,186 @@ static void radeon_cs_parser_fini(struct radeon_cs_parser *parser, int error)
+@@ -226,14 +334,186 @@ static void radeon_cs_parser_fini(struct radeon_cs_parser *parser, int error)
radeon_ib_free(parser->rdev, &parser->ib);
}
@@ -86438,7 +86416,7 @@
/* initialize parser */
memset(&parser, 0, sizeof(struct radeon_cs_parser));
parser.filp = filp;
-@@ -245,13 +527,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
+@@ -247,13 +527,6 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
radeon_mutex_unlock(&rdev->cs_mutex);
return r;
}
@@ -86452,7 +86430,7 @@
r = radeon_cs_parser_relocs(&parser);
if (r) {
if (r != -ERESTARTSYS)
-@@ -260,29 +535,15 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
+@@ -262,29 +535,15 @@ int radeon_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
radeon_mutex_unlock(&rdev->cs_mutex);
return r;
}
@@ -86516,7 +86494,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 c5762e3..de5e0b5 100644
+index bd959c1..de5e0b5 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] = {
@@ -86541,7 +86519,17 @@
rdev->wb.enabled = true;
rdev->wb.use_event = true;
}
-@@ -720,18 +724,25 @@ int radeon_device_init(struct radeon_device *rdev,
+@@ -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,
/* mutex initialization are all done here so we
* can recall function without having locking issues */
radeon_mutex_init(&rdev->cs_mutex);
@@ -86570,7 +86558,7 @@
/* Set asic functions */
r = radeon_asic_init(rdev);
-@@ -768,8 +779,14 @@ int radeon_device_init(struct radeon_device *rdev,
+@@ -769,8 +779,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;
@@ -86585,7 +86573,7 @@
/* Registers mapping */
/* TODO: block userspace mapping of io register */
-@@ -817,15 +834,20 @@ int radeon_device_init(struct radeon_device *rdev,
+@@ -818,15 +834,20 @@ int radeon_device_init(struct radeon_device *rdev,
if (r)
return r;
}
@@ -86607,7 +86595,7 @@
void radeon_device_fini(struct radeon_device *rdev)
{
DRM_INFO("radeon: finishing device.\n");
-@@ -840,6 +862,7 @@ void radeon_device_fini(struct radeon_device *rdev)
+@@ -841,6 +862,7 @@ void radeon_device_fini(struct radeon_device *rdev)
rdev->rio_mem = NULL;
iounmap(rdev->rmmio);
rdev->rmmio = NULL;
@@ -86615,7 +86603,7 @@
}
-@@ -851,7 +874,7 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
+@@ -852,7 +874,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;
@@ -86624,7 +86612,7 @@
if (dev == NULL || dev->dev_private == NULL) {
return -ENODEV;
-@@ -892,7 +915,8 @@ int radeon_suspend_kms(struct drm_device *dev, pm_message_t state)
+@@ -893,7 +915,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 */
@@ -86634,7 +86622,7 @@
radeon_save_bios_scratch_regs(rdev);
-@@ -941,9 +965,11 @@ int radeon_resume_kms(struct drm_device *dev)
+@@ -942,9 +965,11 @@ int radeon_resume_kms(struct drm_device *dev)
radeon_fbdev_set_suspend(rdev, 0);
console_unlock();
@@ -86648,7 +86636,7 @@
/* reset hpd state */
radeon_hpd_init(rdev);
/* blat the mode back in */
-@@ -993,36 +1019,29 @@ int radeon_gpu_reset(struct radeon_device *rdev)
+@@ -994,36 +1019,29 @@ int radeon_gpu_reset(struct radeon_device *rdev)
/*
* Debugfs
*/
@@ -86691,7 +86679,7 @@
#if defined(CONFIG_DEBUG_FS)
drm_debugfs_create_files(files, nfiles,
rdev->ddev->control->debugfs_root,
-@@ -1034,6 +1053,22 @@ int radeon_debugfs_add_files(struct radeon_device *rdev,
+@@ -1035,6 +1053,22 @@ int radeon_debugfs_add_files(struct radeon_device *rdev,
return 0;
}
@@ -86714,7 +86702,7 @@
#if defined(CONFIG_DEBUG_FS)
int radeon_debugfs_init(struct drm_minor *minor)
{
-@@ -1042,11 +1077,5 @@ int radeon_debugfs_init(struct drm_minor *minor)
+@@ -1043,11 +1077,5 @@ int radeon_debugfs_init(struct drm_minor *minor)
void radeon_debugfs_cleanup(struct drm_minor *minor)
{
@@ -88937,7 +88925,7 @@
static const struct drm_crtc_helper_funcs legacy_helper_funcs = {
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
-index 8165953..53b07a3 100644
+index a906803..53b07a3 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -88,7 +88,7 @@ static void radeon_legacy_lvds_update(struct drm_encoder *encoder, int mode)
@@ -88971,22 +88959,7 @@
break;
}
-@@ -617,6 +617,14 @@ static enum drm_connector_status radeon_legacy_primary_dac_detect(struct drm_enc
- enum drm_connector_status found = connector_status_disconnected;
- bool color = true;
-
-+ /* just don't bother on RN50 those chip are often connected to remoting
-+ * console hw and often we get failure to load detect those. So to make
-+ * everyone happy report the encoder as always connected.
-+ */
-+ if (ASIC_IS_RN50(rdev)) {
-+ return connector_status_connected;
-+ }
-+
- /* save the regs we need */
- vclk_ecp_cntl = RREG32_PLL(RADEON_VCLK_ECP_CNTL);
- crtc_ext_cntl = RREG32(RADEON_CRTC_EXT_CNTL);
-@@ -657,7 +665,7 @@ static enum drm_connector_status radeon_legacy_primary_dac_detect(struct drm_enc
+@@ -665,7 +665,7 @@ static enum drm_connector_status radeon_legacy_primary_dac_detect(struct drm_enc
WREG32(RADEON_DAC_MACRO_CNTL, tmp);
@@ -88995,7 +88968,7 @@
if (RREG32(RADEON_DAC_CNTL) & RADEON_DAC_CMP_OUTPUT)
found = connector_status_connected;
-@@ -1496,7 +1504,7 @@ static enum drm_connector_status radeon_legacy_tv_dac_detect(struct drm_encoder
+@@ -1504,7 +1504,7 @@ static enum drm_connector_status radeon_legacy_tv_dac_detect(struct drm_encoder
tmp = dac_cntl2 | RADEON_DAC2_DAC2_CLK_SEL | RADEON_DAC2_CMP_EN;
WREG32(RADEON_DAC_CNTL2, tmp);
Modified: dists/sid/linux/debian/patches/features/x86/efi-stub/0002-x86-Don-t-use-magic-strings-for-EFI-loader-signature.patch
==============================================================================
--- dists/sid/linux/debian/patches/features/x86/efi-stub/0002-x86-Don-t-use-magic-strings-for-EFI-loader-signature.patch Wed Feb 6 04:16:13 2013 (r19787)
+++ dists/sid/linux/debian/patches/features/x86/efi-stub/0002-x86-Don-t-use-magic-strings-for-EFI-loader-signature.patch Wed Feb 6 05:33:01 2013 (r19788)
@@ -11,13 +11,13 @@
Signed-off-by: Matt Fleming <matt.fleming at intel.com>
Link: http://lkml.kernel.org/r/1318848017-12301-1-git-send-email-matt@console-pimps.org
Signed-off-by: H. Peter Anvin <hpa at linux.intel.com>
+[bwh: Drop the hunk in arch/x86/kernel/setup.c which is unnecessary and
+ conflicts with a fix in 3.2.38]
---
arch/x86/include/asm/efi.h | 4 ++++
arch/x86/kernel/setup.c | 7 +------
2 files changed, 5 insertions(+), 6 deletions(-)
-diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
-index b8d8bfc..26d8c18 100644
--- a/arch/x86/include/asm/efi.h
+++ b/arch/x86/include/asm/efi.h
@@ -3,6 +3,8 @@
@@ -29,7 +29,7 @@
extern unsigned long asmlinkage efi_call_phys(void *, ...);
#define efi_call_phys0(f) efi_call_phys(f)
-@@ -35,6 +37,8 @@ extern unsigned long asmlinkage efi_call_phys(void *, ...);
+@@ -37,6 +39,8 @@ extern unsigned long asmlinkage efi_call
#else /* !CONFIG_X86_32 */
@@ -38,24 +38,3 @@
extern u64 efi_call0(void *fp);
extern u64 efi_call1(void *fp, u64 arg1);
extern u64 efi_call2(void *fp, u64 arg1, u64 arg2);
-diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index 9a9e40f..4d5243c 100644
---- a/arch/x86/kernel/setup.c
-+++ b/arch/x86/kernel/setup.c
-@@ -752,12 +752,7 @@ void __init setup_arch(char **cmdline_p)
- #endif
- #ifdef CONFIG_EFI
- if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature,
--#ifdef CONFIG_X86_32
-- "EL32",
--#else
-- "EL64",
--#endif
-- 4)) {
-+ EFI_LOADER_SIGNATURE, 4)) {
- efi_enabled = 1;
- efi_memblock_x86_reserve_range();
- }
---
-1.7.10
-
Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series Wed Feb 6 04:16:13 2013 (r19787)
+++ dists/sid/linux/debian/patches/series Wed Feb 6 05:33:01 2013 (r19788)
@@ -448,10 +448,7 @@
features/all/iguanair/0010-media-iguanair-do-not-modify-transmit-buffer.patch
features/all/iguanair/0011-media-iguanair-cannot-send-data-from-the-stack.patch
features/all/rt2800-add-chipset-revision-RT5390R-support.patch
-bugfix/all/vt6656-Fix-inconsistent-structure-packing.patch
bugfix/all/fs-cachefiles-add-support-for-large-files-in-filesys.patch
-bugfix/x86/xen-Fix-stack-corruption-in-xen_failsafe_callback-fo.patch
-bugfix/s390/s390-time-fix-sched_clock-overflow.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
More information about the Kernel-svn-changes
mailing list