Linux v3.11.8
This commit is contained in:
parent
896c40242e
commit
40a807fe99
|
@ -1,49 +0,0 @@
|
|||
From c511851de162e8ec03d62e7d7feecbdf590d881d Mon Sep 17 00:00:00 2001
|
||||
From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
|
||||
Date: Tue, 29 Oct 2013 13:12:56 +0100
|
||||
Subject: [PATCH] Revert "epoll: use freezable blocking call"
|
||||
|
||||
This reverts commit 1c441e921201 (epoll: use freezable blocking call)
|
||||
which is reported to cause user space memory corruption to happen
|
||||
after suspend to RAM.
|
||||
|
||||
Since it appears to be extremely difficult to root cause this
|
||||
problem, it is best to revert the offending commit and try to address
|
||||
the original issue in a better way later.
|
||||
|
||||
References: https://bugzilla.kernel.org/show_bug.cgi?id=61781
|
||||
Reported-by: Natrio <natrio@list.ru>
|
||||
Reported-by: Jeff Pohlmeyer <yetanothergeek@gmail.com>
|
||||
Bisected-by: Leo Wolf <jclw@ymail.com>
|
||||
Fixes: 1c441e921201 (epoll: use freezable blocking call)
|
||||
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
Cc: 3.11+ <stable@vger.kernel.org> # 3.11+
|
||||
---
|
||||
fs/eventpoll.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
|
||||
index 473e09d..810c28f 100644
|
||||
--- a/fs/eventpoll.c
|
||||
+++ b/fs/eventpoll.c
|
||||
@@ -34,7 +34,6 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/anon_inodes.h>
|
||||
#include <linux/device.h>
|
||||
-#include <linux/freezer.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/mman.h>
|
||||
@@ -1605,8 +1604,7 @@ fetch_events:
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(&ep->lock, flags);
|
||||
- if (!freezable_schedule_hrtimeout_range(to, slack,
|
||||
- HRTIMER_MODE_ABS))
|
||||
+ if (!schedule_hrtimeout_range(to, slack, HRTIMER_MODE_ABS))
|
||||
timed_out = 1;
|
||||
|
||||
spin_lock_irqsave(&ep->lock, flags);
|
||||
--
|
||||
1.8.3.1
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
From 59612d187912750f416fbffe0c00bc0811c54ab5 Mon Sep 17 00:00:00 2001
|
||||
From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
|
||||
Date: Tue, 29 Oct 2013 23:43:08 +0100
|
||||
Subject: [PATCH] Revert "select: use freezable blocking call"
|
||||
|
||||
This reverts commit 9745cdb36da8 (select: use freezable blocking call)
|
||||
that triggers problems during resume from suspend to RAM on Paul Bolle's
|
||||
32-bit x86 machines. Paul says:
|
||||
|
||||
Ever since I tried running (release candidates of) v3.11 on the two
|
||||
working i686s I still have lying around I ran into issues on resuming
|
||||
from suspend. Reverting 9745cdb36da8 (select: use freezable blocking
|
||||
call) resolves those issues.
|
||||
|
||||
Resuming from suspend on i686 on (release candidates of) v3.11 and
|
||||
later triggers issues like:
|
||||
|
||||
traps: systemd[1] general protection ip:b738e490 sp:bf882fc0 error:0 in libc-2.16.so[b731c000+1b0000]
|
||||
|
||||
and
|
||||
|
||||
traps: rtkit-daemon[552] general protection ip:804d6e5 sp:b6cb32f0 error:0 in rtkit-daemon[8048000+d000]
|
||||
|
||||
Once I hit the systemd error I can only get out of the mess that the
|
||||
system is at that point by power cycling it.
|
||||
|
||||
Since we are reverting another freezer-related change causing similar
|
||||
problems to happen, this one should be reverted as well.
|
||||
|
||||
References: https://lkml.org/lkml/2013/10/29/583
|
||||
Reported-by: Paul Bolle <pebolle@tiscali.nl>
|
||||
Fixes: 9745cdb36da8 (select: use freezable blocking call)
|
||||
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
Cc: 3.11+ <stable@vger.kernel.org> # 3.11+
|
||||
---
|
||||
fs/select.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/fs/select.c b/fs/select.c
|
||||
index 35d4adc7..dfd5cb1 100644
|
||||
--- a/fs/select.c
|
||||
+++ b/fs/select.c
|
||||
@@ -238,8 +238,7 @@ int poll_schedule_timeout(struct poll_wqueues *pwq, int state,
|
||||
|
||||
set_current_state(state);
|
||||
if (!pwq->triggered)
|
||||
- rc = freezable_schedule_hrtimeout_range(expires, slack,
|
||||
- HRTIMER_MODE_ABS);
|
||||
+ rc = schedule_hrtimeout_range(expires, slack, HRTIMER_MODE_ABS);
|
||||
__set_current_state(TASK_RUNNING);
|
||||
|
||||
/*
|
||||
--
|
||||
1.8.3.1
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
This reverts commit 9483f40d8d01918b399b4e24d0c1111db0afffeb.
|
||||
|
||||
Some devices stop to connect with above commit, see:
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=61621
|
||||
|
||||
Since there is no clear benefit of having MSI enabled, just revert
|
||||
change to fix the problem.
|
||||
|
||||
Cc: stable@vger.kernel.org # 3.11+
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2x00pci.c | 9 +--------
|
||||
1 file changed, 1 insertion(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
index 76d95de..dc49e52 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
@@ -105,13 +105,11 @@ int rt2x00pci_probe(struct pci_dev *pci_dev, const struct rt2x00_ops *ops)
|
||||
goto exit_release_regions;
|
||||
}
|
||||
|
||||
- pci_enable_msi(pci_dev);
|
||||
-
|
||||
hw = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), ops->hw);
|
||||
if (!hw) {
|
||||
rt2x00_probe_err("Failed to allocate hardware\n");
|
||||
retval = -ENOMEM;
|
||||
- goto exit_disable_msi;
|
||||
+ goto exit_release_regions;
|
||||
}
|
||||
|
||||
pci_set_drvdata(pci_dev, hw);
|
||||
@@ -152,9 +150,6 @@ exit_free_reg:
|
||||
exit_free_device:
|
||||
ieee80211_free_hw(hw);
|
||||
|
||||
-exit_disable_msi:
|
||||
- pci_disable_msi(pci_dev);
|
||||
-
|
||||
exit_release_regions:
|
||||
pci_release_regions(pci_dev);
|
||||
|
||||
@@ -179,8 +174,6 @@ void rt2x00pci_remove(struct pci_dev *pci_dev)
|
||||
rt2x00pci_free_reg(rt2x00dev);
|
||||
ieee80211_free_hw(hw);
|
||||
|
||||
- pci_disable_msi(pci_dev);
|
||||
-
|
||||
/*
|
||||
* Free the PCI device data.
|
||||
*/
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
@ -1,121 +0,0 @@
|
|||
This fixes an oops caused by buslogic driver when initializing a BusLogic
|
||||
MultiMaster adapter. Initialization code used scope of a variable
|
||||
incorrectly which created a NULL pointer. Oops message is below:
|
||||
|
||||
BUG: unable to handle kernel NULL pointer dereference at 0000000c
|
||||
IP: [<c150c137>] blogic_init_mm_probeinfo.isra.17+0x20a/0x583
|
||||
*pde = 00000000
|
||||
Oops: 002 [#1] PREEMPT SMP
|
||||
Modules linked in:
|
||||
CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.11.1.puz1 #1
|
||||
Hardware name: /Canterwood, BIOS 6.00 PG 05/16/2003
|
||||
task: f7050000 ti: f7054000 task.ti: f7054000
|
||||
EIP: 0060:[<c150c137>] EFLAGS: 00010246 CPU:1
|
||||
EIP is at blogic_init_mm_probeinfo.isra.17+0x20a/0x583
|
||||
EAX: 00000013 EBX: 00000000 ECX: 00000000 EDX: f8001000
|
||||
ESI: f71cb800 EDI: f7388000 EBP: 00007800 ESP: f7055c84
|
||||
DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
|
||||
CR0: 8005003b CR2: 0000000c CR3: 0154f000 CR4: 000007d0
|
||||
Stack:
|
||||
0000001c 00000000 c11a59f6 f7055c98 00008130 ffffffff ffffffff 00000000
|
||||
00000003 00000000 00000000 00000000 00000013 f8001000 00000001 000003d0
|
||||
00000000 00000000 00000000 c14e3f84 f78803c8 00000000 f738c000 000000e9
|
||||
Call Trace:
|
||||
[<c11a59f6>] ? pci_get_subsys+0x33/0x38
|
||||
[<c150c4fb>] ? blogic_init_probeinfo_list+0x4b/0x19e
|
||||
[<c108d593>] ? __alloc_pages_nodemask+0xe3/0x623
|
||||
[<c108d593>] ? __alloc_pages_nodemask+0xe3/0x623
|
||||
[<c10fb99e>] ? sysfs_link_sibling+0x61/0x8d
|
||||
[<c10b0519>] ? kmem_cache_alloc+0x8b/0xb5
|
||||
[<c150cce5>] ? blogic_init+0xa1/0x10e8
|
||||
[<c10fc0a8>] ? sysfs_add_one+0x10/0x9d
|
||||
[<c10fc18a>] ? sysfs_addrm_finish+0x12/0x85
|
||||
[<c10fca37>] ? sysfs_do_create_link_sd+0x9d/0x1b4
|
||||
[<c117c272>] ? blk_register_queue+0x69/0xb3
|
||||
[<c10fcb68>] ? sysfs_create_link+0x1a/0x2c
|
||||
[<c1181a07>] ? add_disk+0x1a1/0x3c7
|
||||
[<c138737b>] ? klist_next+0x60/0xc3
|
||||
[<c122cc3a>] ? scsi_dh_detach+0x68/0x68
|
||||
[<c1213e36>] ? bus_for_each_dev+0x51/0x61
|
||||
[<c1000356>] ? do_one_initcall+0x22/0x12c
|
||||
[<c10f3688>] ? __proc_create+0x8c/0xba
|
||||
[<c150cc44>] ? blogic_setup+0x5f6/0x5f6
|
||||
[<c14e94aa>] ? repair_env_string+0xf/0x4d
|
||||
[<c14e949b>] ? do_early_param+0x71/0x71
|
||||
[<c103efaa>] ? parse_args+0x21f/0x33d
|
||||
[<c14e9a54>] ? kernel_init_freeable+0xdf/0x17d
|
||||
[<c14e949b>] ? do_early_param+0x71/0x71
|
||||
[<c1388b64>] ? kernel_init+0x8/0xc0
|
||||
[<c1392222>] ? ret_from_kernel_thread+0x6/0x28
|
||||
[<c1392227>] ? ret_from_kernel_thread+0x1b/0x28
|
||||
[<c1388b5c>] ? rest_init+0x6c/0x6c
|
||||
Code: 89 44 24 10 0f b6 44 24 3d 89 44 24 0c c7 44 24 08 00 00 00 00 c7 44 24 04 38 62 46 c1 c7 04 24 02 00 00 00 e8 78 13 d2 ff 31 db <89> 6b 0c b0 20 89 ea ee
|
||||
c7 44 24 08 04 00 00 00 8d 44 24 4c 89
|
||||
EIP: [<c150c137>] blogic_init_mm_probeinfo.isra.17+0x20a/0x583 SS:ESP 0068:f7055c84
|
||||
CR2: 000000000000000c
|
||||
---[ end trace 17f45f5196d40487 ]---
|
||||
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000009
|
||||
|
||||
Signed-off-by: Khalid Aziz <khalid.aziz@xxxxxxxxxx>
|
||||
Cc: <stable@xxxxxxxxxxxxxxx> # 3.11.x
|
||||
Cc: Khalid Aziz <khalid@xxxxxxxxxxxxxx>
|
||||
Reported-by: Pierre Uszynski <pierre@xxxxxxxxx>
|
||||
Tested-by: Pierre Uszynski <pierre@xxxxxxxxx>
|
||||
---
|
||||
drivers/scsi/BusLogic.c | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c
|
||||
index feab3a5..757eb07 100644
|
||||
--- a/drivers/scsi/BusLogic.c
|
||||
+++ b/drivers/scsi/BusLogic.c
|
||||
@@ -696,7 +696,7 @@ static int __init blogic_init_mm_probeinfo(struct blogic_adapter *adapter)
|
||||
while ((pci_device = pci_get_device(PCI_VENDOR_ID_BUSLOGIC,
|
||||
PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER,
|
||||
pci_device)) != NULL) {
|
||||
- struct blogic_adapter *adapter = adapter;
|
||||
+ struct blogic_adapter *host_adapter = adapter;
|
||||
struct blogic_adapter_info adapter_info;
|
||||
enum blogic_isa_ioport mod_ioaddr_req;
|
||||
unsigned char bus;
|
||||
@@ -744,9 +744,9 @@ static int __init blogic_init_mm_probeinfo(struct blogic_adapter *adapter)
|
||||
known and enabled, note that the particular Standard ISA I/O
|
||||
Address should not be probed.
|
||||
*/
|
||||
- adapter->io_addr = io_addr;
|
||||
- blogic_intreset(adapter);
|
||||
- if (blogic_cmd(adapter, BLOGIC_INQ_PCI_INFO, NULL, 0,
|
||||
+ host_adapter->io_addr = io_addr;
|
||||
+ blogic_intreset(host_adapter);
|
||||
+ if (blogic_cmd(host_adapter, BLOGIC_INQ_PCI_INFO, NULL, 0,
|
||||
&adapter_info, sizeof(adapter_info)) ==
|
||||
sizeof(adapter_info)) {
|
||||
if (adapter_info.isa_port < 6)
|
||||
@@ -762,7 +762,7 @@ static int __init blogic_init_mm_probeinfo(struct blogic_adapter *adapter)
|
||||
I/O Address assigned at system initialization.
|
||||
*/
|
||||
mod_ioaddr_req = BLOGIC_IO_DISABLE;
|
||||
- blogic_cmd(adapter, BLOGIC_MOD_IOADDR, &mod_ioaddr_req,
|
||||
+ blogic_cmd(host_adapter, BLOGIC_MOD_IOADDR, &mod_ioaddr_req,
|
||||
sizeof(mod_ioaddr_req), NULL, 0);
|
||||
/*
|
||||
For the first MultiMaster Host Adapter enumerated,
|
||||
@@ -779,12 +779,12 @@ static int __init blogic_init_mm_probeinfo(struct blogic_adapter *adapter)
|
||||
|
||||
fetch_localram.offset = BLOGIC_AUTOSCSI_BASE + 45;
|
||||
fetch_localram.count = sizeof(autoscsi_byte45);
|
||||
- blogic_cmd(adapter, BLOGIC_FETCH_LOCALRAM,
|
||||
+ blogic_cmd(host_adapter, BLOGIC_FETCH_LOCALRAM,
|
||||
&fetch_localram, sizeof(fetch_localram),
|
||||
&autoscsi_byte45,
|
||||
sizeof(autoscsi_byte45));
|
||||
- blogic_cmd(adapter, BLOGIC_GET_BOARD_ID, NULL, 0, &id,
|
||||
- sizeof(id));
|
||||
+ blogic_cmd(host_adapter, BLOGIC_GET_BOARD_ID, NULL, 0,
|
||||
+ &id, sizeof(id));
|
||||
if (id.fw_ver_digit1 == '5')
|
||||
force_scan_order =
|
||||
autoscsi_byte45.force_scan_order;
|
||||
--
|
||||
1.7.10.4
|
||||
|
|
@ -1,254 +1,3 @@
|
|||
From 39bb622a9804de9fa51cae31f07104a19067483a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
|
||||
Date: Mon, 21 Oct 2013 10:52:06 +0300
|
||||
Subject: [PATCH 1/5] drm/i915: Add support for pipe_bpp readout
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
On CTG+ read out the pipe bpp setting from hardware and fill it into
|
||||
pipe config. Also check it appropriately.
|
||||
|
||||
v2: Don't do the pipe_bpp extraction inside the PCH only code block on
|
||||
ILK+.
|
||||
Avoid the PIPECONF read as we already have read it for the
|
||||
PIPECONF_EANBLE check.
|
||||
|
||||
Note: This is already in drm-intel-next-queued as
|
||||
commit 42571aefafb1d330ef84eb29418832f72e7dfb4c
|
||||
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||
Date: Fri Sep 6 23:29:00 2013 +0300
|
||||
|
||||
drm/i915: Add support for pipe_bpp readout
|
||||
|
||||
but is needed for the following bugfix.
|
||||
|
||||
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_ddi.c | 17 +++++++++++++++++
|
||||
drivers/gpu/drm/i915/intel_display.c | 36 ++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 53 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
|
||||
index b042ee5..83e413b 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_ddi.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_ddi.c
|
||||
@@ -1280,6 +1280,23 @@ static void intel_ddi_get_config(struct intel_encoder *encoder,
|
||||
flags |= DRM_MODE_FLAG_NVSYNC;
|
||||
|
||||
pipe_config->adjusted_mode.flags |= flags;
|
||||
+
|
||||
+ switch (temp & TRANS_DDI_BPC_MASK) {
|
||||
+ case TRANS_DDI_BPC_6:
|
||||
+ pipe_config->pipe_bpp = 18;
|
||||
+ break;
|
||||
+ case TRANS_DDI_BPC_8:
|
||||
+ pipe_config->pipe_bpp = 24;
|
||||
+ break;
|
||||
+ case TRANS_DDI_BPC_10:
|
||||
+ pipe_config->pipe_bpp = 30;
|
||||
+ break;
|
||||
+ case TRANS_DDI_BPC_12:
|
||||
+ pipe_config->pipe_bpp = 36;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
|
||||
static void intel_ddi_destroy(struct drm_encoder *encoder)
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 90a7c17..4aaccd3 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -4943,6 +4943,22 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
|
||||
if (!(tmp & PIPECONF_ENABLE))
|
||||
return false;
|
||||
|
||||
+ if (IS_G4X(dev) || IS_VALLEYVIEW(dev)) {
|
||||
+ switch (tmp & PIPECONF_BPC_MASK) {
|
||||
+ case PIPECONF_6BPC:
|
||||
+ pipe_config->pipe_bpp = 18;
|
||||
+ break;
|
||||
+ case PIPECONF_8BPC:
|
||||
+ pipe_config->pipe_bpp = 24;
|
||||
+ break;
|
||||
+ case PIPECONF_10BPC:
|
||||
+ pipe_config->pipe_bpp = 30;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
intel_get_pipe_timings(crtc, pipe_config);
|
||||
|
||||
i9xx_get_pfit_config(crtc, pipe_config);
|
||||
@@ -5821,6 +5837,23 @@ static bool ironlake_get_pipe_config(struct intel_crtc *crtc,
|
||||
if (!(tmp & PIPECONF_ENABLE))
|
||||
return false;
|
||||
|
||||
+ switch (tmp & PIPECONF_BPC_MASK) {
|
||||
+ case PIPECONF_6BPC:
|
||||
+ pipe_config->pipe_bpp = 18;
|
||||
+ break;
|
||||
+ case PIPECONF_8BPC:
|
||||
+ pipe_config->pipe_bpp = 24;
|
||||
+ break;
|
||||
+ case PIPECONF_10BPC:
|
||||
+ pipe_config->pipe_bpp = 30;
|
||||
+ break;
|
||||
+ case PIPECONF_12BPC:
|
||||
+ pipe_config->pipe_bpp = 36;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
if (I915_READ(PCH_TRANSCONF(crtc->pipe)) & TRANS_ENABLE) {
|
||||
struct intel_shared_dpll *pll;
|
||||
|
||||
@@ -8147,6 +8180,9 @@ intel_pipe_config_compare(struct drm_device *dev,
|
||||
PIPE_CONF_CHECK_X(dpll_hw_state.fp0);
|
||||
PIPE_CONF_CHECK_X(dpll_hw_state.fp1);
|
||||
|
||||
+ if (IS_G4X(dev) || INTEL_INFO(dev)->gen >= 5)
|
||||
+ PIPE_CONF_CHECK_I(pipe_bpp);
|
||||
+
|
||||
#undef PIPE_CONF_CHECK_X
|
||||
#undef PIPE_CONF_CHECK_I
|
||||
#undef PIPE_CONF_CHECK_FLAGS
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From b59da942a708f7cf1c421a7cb666f98fd8172208 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
|
||||
Date: Tue, 24 Sep 2013 14:24:05 +0300
|
||||
Subject: [PATCH 2/5] drm/i915: Add HSW CRT output readout support
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Call intel_ddi_get_config() to get the pipe_bpp settings from
|
||||
DDI.
|
||||
|
||||
The sync polarity settings from DDI are irrelevant for CRT
|
||||
output, so override them with data from the ADPA register.
|
||||
|
||||
Note: This is already merged in drm-intel-next-queued as
|
||||
|
||||
commit 6801c18c0a43386bb44712cbc028a7e05adb9f0d
|
||||
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||
Date: Tue Sep 24 14:24:05 2013 +0300
|
||||
|
||||
drm/i915: Add HSW CRT output readout support
|
||||
|
||||
but is required for the following edp bpp bugfix.
|
||||
|
||||
v2: Extract intel_crt_get_flags()
|
||||
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69691
|
||||
Tested-by: Qingshuai Tian <qingshuai.tian@intel.com>
|
||||
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_crt.c | 30 ++++++++++++++++++++++++++----
|
||||
drivers/gpu/drm/i915/intel_ddi.c | 4 ++--
|
||||
drivers/gpu/drm/i915/intel_drv.h | 2 ++
|
||||
3 files changed, 30 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
|
||||
index 3acec8c..6aa6ebd 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_crt.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_crt.c
|
||||
@@ -84,8 +84,7 @@ static bool intel_crt_get_hw_state(struct intel_encoder *encoder,
|
||||
return true;
|
||||
}
|
||||
|
||||
-static void intel_crt_get_config(struct intel_encoder *encoder,
|
||||
- struct intel_crtc_config *pipe_config)
|
||||
+static unsigned int intel_crt_get_flags(struct intel_encoder *encoder)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = encoder->base.dev->dev_private;
|
||||
struct intel_crt *crt = intel_encoder_to_crt(encoder);
|
||||
@@ -103,7 +102,27 @@ static void intel_crt_get_config(struct intel_encoder *encoder,
|
||||
else
|
||||
flags |= DRM_MODE_FLAG_NVSYNC;
|
||||
|
||||
- pipe_config->adjusted_mode.flags |= flags;
|
||||
+ return flags;
|
||||
+}
|
||||
+
|
||||
+static void intel_crt_get_config(struct intel_encoder *encoder,
|
||||
+ struct intel_crtc_config *pipe_config)
|
||||
+{
|
||||
+ struct drm_device *dev = encoder->base.dev;
|
||||
+
|
||||
+ pipe_config->adjusted_mode.flags |= intel_crt_get_flags(encoder);
|
||||
+}
|
||||
+
|
||||
+static void hsw_crt_get_config(struct intel_encoder *encoder,
|
||||
+ struct intel_crtc_config *pipe_config)
|
||||
+{
|
||||
+ intel_ddi_get_config(encoder, pipe_config);
|
||||
+
|
||||
+ pipe_config->adjusted_mode.flags &= ~(DRM_MODE_FLAG_PHSYNC |
|
||||
+ DRM_MODE_FLAG_NHSYNC |
|
||||
+ DRM_MODE_FLAG_PVSYNC |
|
||||
+ DRM_MODE_FLAG_NVSYNC);
|
||||
+ pipe_config->adjusted_mode.flags |= intel_crt_get_flags(encoder);
|
||||
}
|
||||
|
||||
/* Note: The caller is required to filter out dpms modes not supported by the
|
||||
@@ -802,7 +821,10 @@ void intel_crt_init(struct drm_device *dev)
|
||||
crt->base.compute_config = intel_crt_compute_config;
|
||||
crt->base.disable = intel_disable_crt;
|
||||
crt->base.enable = intel_enable_crt;
|
||||
- crt->base.get_config = intel_crt_get_config;
|
||||
+ if (IS_HASWELL(dev))
|
||||
+ crt->base.get_config = hsw_crt_get_config;
|
||||
+ else
|
||||
+ crt->base.get_config = intel_crt_get_config;
|
||||
if (I915_HAS_HOTPLUG(dev))
|
||||
crt->base.hpd_pin = HPD_CRT;
|
||||
if (HAS_DDI(dev))
|
||||
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
|
||||
index 83e413b..5a6368d 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_ddi.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_ddi.c
|
||||
@@ -1261,8 +1261,8 @@ static void intel_ddi_hot_plug(struct intel_encoder *intel_encoder)
|
||||
intel_dp_check_link_status(intel_dp);
|
||||
}
|
||||
|
||||
-static void intel_ddi_get_config(struct intel_encoder *encoder,
|
||||
- struct intel_crtc_config *pipe_config)
|
||||
+void intel_ddi_get_config(struct intel_encoder *encoder,
|
||||
+ struct intel_crtc_config *pipe_config)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = encoder->base.dev->dev_private;
|
||||
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
|
||||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
|
||||
index b7d6e09..ddf7e2f 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/intel_drv.h
|
||||
@@ -816,6 +816,8 @@ extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder);
|
||||
extern bool
|
||||
intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector);
|
||||
extern void intel_ddi_fdi_disable(struct drm_crtc *crtc);
|
||||
+extern void intel_ddi_get_config(struct intel_encoder *encoder,
|
||||
+ struct intel_crtc_config *pipe_config);
|
||||
|
||||
extern void intel_display_handle_reset(struct drm_device *dev);
|
||||
extern bool intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev,
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From 92c64493f41092185230c552c277b42bf6113140 Mon Sep 17 00:00:00 2001
|
||||
From: Jani Nikula <jani.nikula@intel.com>
|
||||
Date: Mon, 21 Oct 2013 10:52:07 +0300
|
||||
|
@ -335,240 +84,3 @@ index 3aed1fe..07eb447 100644
|
|||
static void intel_disable_dp(struct intel_encoder *encoder)
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From 1e5ec9a5628cfd23443a91f80dea2118efb21afd Mon Sep 17 00:00:00 2001
|
||||
From: Rob Pearce <rob@flitspace.org.uk>
|
||||
Date: Sun, 27 Oct 2013 16:13:42 +0000
|
||||
Subject: [PATCH 4/5] drm/i915: No LVDS hardware on Intel D410PT and D425KT
|
||||
|
||||
The Intel D410PT(LW) and D425KT Mini-ITX desktop boards both show up as
|
||||
having LVDS but the hardware is not populated. This patch adds them to
|
||||
the list of such systems. Patch is against 3.11.4
|
||||
|
||||
v2: Patch revised to match the D425KT exactly as the D425KTW does have
|
||||
LVDS. According to Intel's documentation, the D410PTL and D410PLTW
|
||||
don't.
|
||||
|
||||
Signed-off-by: Rob Pearce <rob@flitspace.org.uk>
|
||||
Cc: stable@vger.kernel.org
|
||||
[danvet: Pimp commit message to my liking and add cc: stable.]
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_lvds.c | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
|
||||
index 61348ea..44533dd 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_lvds.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_lvds.c
|
||||
@@ -696,6 +696,22 @@ static const struct dmi_system_id intel_no_lvds[] = {
|
||||
},
|
||||
{
|
||||
.callback = intel_no_lvds_dmi_callback,
|
||||
+ .ident = "Intel D410PT",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_BOARD_VENDOR, "Intel"),
|
||||
+ DMI_MATCH(DMI_BOARD_NAME, "D410PT"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .callback = intel_no_lvds_dmi_callback,
|
||||
+ .ident = "Intel D425KT",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_BOARD_VENDOR, "Intel"),
|
||||
+ DMI_EXACT_MATCH(DMI_BOARD_NAME, "D425KT"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .callback = intel_no_lvds_dmi_callback,
|
||||
.ident = "Intel D510MO",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "Intel"),
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
From 239319357b4a2d085e5f5c27b46aab5f612c5036 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Date: Tue, 29 Oct 2013 12:04:08 +0100
|
||||
Subject: [PATCH 5/5] drm/i915: Fix the PPT fdi lane bifurcate state handling
|
||||
on ivb
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Originally I've thought that this is leftover hw state dirt from the
|
||||
BIOS. But after way too much helpless flailing around on my part I've
|
||||
noticed that the actual bug is when we change the state of an already
|
||||
active pipe.
|
||||
|
||||
For example when we change the fdi lines from 2 to 3 without switching
|
||||
off outputs in-between we'll never see the crucial on->off transition
|
||||
in the ->modeset_global_resources hook the current logic relies on.
|
||||
|
||||
Patch version 2 got this right by instead also checking whether the
|
||||
pipe is indeed active. But that in turn broke things when pipes have
|
||||
been turned off through dpms since the bifurcate enabling is done in
|
||||
the ->crtc_mode_set callback.
|
||||
|
||||
To address this issues discussed with Ville in the patch review move
|
||||
the setting of the bifurcate bit into the ->crtc_enable hook. That way
|
||||
we won't wreak havoc with this state when userspace puts all other
|
||||
outputs into dpms off state. This also moves us forward with our
|
||||
overall goal to unify the modeset and dpms on paths (which we need to
|
||||
have to allow runtime pm in the dpms off state).
|
||||
|
||||
Unfortunately this requires us to move the bifurcate helpers around a
|
||||
bit.
|
||||
|
||||
Also update the commit message, I've misanalyzed the bug rather badly.
|
||||
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70507
|
||||
Tested-by: Jan-Michael Brummer <jan.brummer@tabos.org>
|
||||
Cc: stable@vger.kernel.org
|
||||
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_display.c | 95 ++++++++++++++++++------------------
|
||||
1 file changed, 48 insertions(+), 47 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 4aaccd3..ad2a258 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -2251,9 +2251,10 @@ static void intel_fdi_normal_train(struct drm_crtc *crtc)
|
||||
FDI_FE_ERRC_ENABLE);
|
||||
}
|
||||
|
||||
-static bool pipe_has_enabled_pch(struct intel_crtc *intel_crtc)
|
||||
+static bool pipe_has_enabled_pch(struct intel_crtc *crtc)
|
||||
{
|
||||
- return intel_crtc->base.enabled && intel_crtc->config.has_pch_encoder;
|
||||
+ return crtc->base.enabled && crtc->active &&
|
||||
+ crtc->config.has_pch_encoder;
|
||||
}
|
||||
|
||||
static void ivb_modeset_global_resources(struct drm_device *dev)
|
||||
@@ -2901,6 +2902,48 @@ static void ironlake_pch_transcoder_set_timings(struct intel_crtc *crtc,
|
||||
I915_READ(VSYNCSHIFT(cpu_transcoder)));
|
||||
}
|
||||
|
||||
+static void cpt_enable_fdi_bc_bifurcation(struct drm_device *dev)
|
||||
+{
|
||||
+ struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
+ uint32_t temp;
|
||||
+
|
||||
+ temp = I915_READ(SOUTH_CHICKEN1);
|
||||
+ if (temp & FDI_BC_BIFURCATION_SELECT)
|
||||
+ return;
|
||||
+
|
||||
+ WARN_ON(I915_READ(FDI_RX_CTL(PIPE_B)) & FDI_RX_ENABLE);
|
||||
+ WARN_ON(I915_READ(FDI_RX_CTL(PIPE_C)) & FDI_RX_ENABLE);
|
||||
+
|
||||
+ temp |= FDI_BC_BIFURCATION_SELECT;
|
||||
+ DRM_DEBUG_KMS("enabling fdi C rx\n");
|
||||
+ I915_WRITE(SOUTH_CHICKEN1, temp);
|
||||
+ POSTING_READ(SOUTH_CHICKEN1);
|
||||
+}
|
||||
+
|
||||
+static void ivybridge_update_fdi_bc_bifurcation(struct intel_crtc *intel_crtc)
|
||||
+{
|
||||
+ struct drm_device *dev = intel_crtc->base.dev;
|
||||
+ struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
+
|
||||
+ switch (intel_crtc->pipe) {
|
||||
+ case PIPE_A:
|
||||
+ break;
|
||||
+ case PIPE_B:
|
||||
+ if (intel_crtc->config.fdi_lanes > 2)
|
||||
+ WARN_ON(I915_READ(SOUTH_CHICKEN1) & FDI_BC_BIFURCATION_SELECT);
|
||||
+ else
|
||||
+ cpt_enable_fdi_bc_bifurcation(dev);
|
||||
+
|
||||
+ break;
|
||||
+ case PIPE_C:
|
||||
+ cpt_enable_fdi_bc_bifurcation(dev);
|
||||
+
|
||||
+ break;
|
||||
+ default:
|
||||
+ BUG();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Enable PCH resources required for PCH ports:
|
||||
* - PCH PLLs
|
||||
@@ -2919,6 +2962,9 @@ static void ironlake_pch_enable(struct drm_crtc *crtc)
|
||||
|
||||
assert_pch_transcoder_disabled(dev_priv, pipe);
|
||||
|
||||
+ if (IS_IVYBRIDGE(dev))
|
||||
+ ivybridge_update_fdi_bc_bifurcation(intel_crtc);
|
||||
+
|
||||
/* Write the TU size bits before fdi link training, so that error
|
||||
* detection works. */
|
||||
I915_WRITE(FDI_RX_TUSIZE1(pipe),
|
||||
@@ -5512,48 +5558,6 @@ static bool ironlake_compute_clocks(struct drm_crtc *crtc,
|
||||
return true;
|
||||
}
|
||||
|
||||
-static void cpt_enable_fdi_bc_bifurcation(struct drm_device *dev)
|
||||
-{
|
||||
- struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
- uint32_t temp;
|
||||
-
|
||||
- temp = I915_READ(SOUTH_CHICKEN1);
|
||||
- if (temp & FDI_BC_BIFURCATION_SELECT)
|
||||
- return;
|
||||
-
|
||||
- WARN_ON(I915_READ(FDI_RX_CTL(PIPE_B)) & FDI_RX_ENABLE);
|
||||
- WARN_ON(I915_READ(FDI_RX_CTL(PIPE_C)) & FDI_RX_ENABLE);
|
||||
-
|
||||
- temp |= FDI_BC_BIFURCATION_SELECT;
|
||||
- DRM_DEBUG_KMS("enabling fdi C rx\n");
|
||||
- I915_WRITE(SOUTH_CHICKEN1, temp);
|
||||
- POSTING_READ(SOUTH_CHICKEN1);
|
||||
-}
|
||||
-
|
||||
-static void ivybridge_update_fdi_bc_bifurcation(struct intel_crtc *intel_crtc)
|
||||
-{
|
||||
- struct drm_device *dev = intel_crtc->base.dev;
|
||||
- struct drm_i915_private *dev_priv = dev->dev_private;
|
||||
-
|
||||
- switch (intel_crtc->pipe) {
|
||||
- case PIPE_A:
|
||||
- break;
|
||||
- case PIPE_B:
|
||||
- if (intel_crtc->config.fdi_lanes > 2)
|
||||
- WARN_ON(I915_READ(SOUTH_CHICKEN1) & FDI_BC_BIFURCATION_SELECT);
|
||||
- else
|
||||
- cpt_enable_fdi_bc_bifurcation(dev);
|
||||
-
|
||||
- break;
|
||||
- case PIPE_C:
|
||||
- cpt_enable_fdi_bc_bifurcation(dev);
|
||||
-
|
||||
- break;
|
||||
- default:
|
||||
- BUG();
|
||||
- }
|
||||
-}
|
||||
-
|
||||
int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp)
|
||||
{
|
||||
/*
|
||||
@@ -5768,9 +5772,6 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
|
||||
&intel_crtc->config.fdi_m_n);
|
||||
}
|
||||
|
||||
- if (IS_IVYBRIDGE(dev))
|
||||
- ivybridge_update_fdi_bc_bifurcation(intel_crtc);
|
||||
-
|
||||
ironlake_set_pipeconf(crtc);
|
||||
|
||||
/* Set up the display plane register */
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
|
25
kernel.spec
25
kernel.spec
|
@ -74,7 +74,7 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 7
|
||||
%define stable_update 8
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -748,9 +748,6 @@ Patch25104: ansi_cprng-Fix-off-by-one-error-in-non-block-size-request.patch
|
|||
#rhbz 985522
|
||||
Patch25107: ntp-Make-periodic-RTC-update-more-reliable.patch
|
||||
|
||||
#rhbz 1010431
|
||||
Patch25108: Revert-rt2x00pci-Use-PCI-MSIs-whenever-possible.patch
|
||||
|
||||
#rhbz 971893
|
||||
Patch25109: bonding-driver-alb-learning.patch
|
||||
|
||||
|
@ -789,9 +786,6 @@ Patch25131: btrfs-relocate-csums-properly-with-prealloc-ext.patch
|
|||
#rhbz 984696
|
||||
Patch25132: rt2800usb-slow-down-TX-status-polling.patch
|
||||
|
||||
#rhbz 1015558
|
||||
Patch25133: fix-buslogic.patch
|
||||
|
||||
#rhbz 1023413
|
||||
Patch25135: alps-Support-for-Dell-XT2-model.patch
|
||||
|
||||
|
@ -804,10 +798,6 @@ Patch25138: intel-3.12-stable-fixes.patch
|
|||
#CVE-2013-4348 rhbz 1007939 1025647
|
||||
Patch25139: net-flow_dissector-fail-on-evil-iph-ihl.patch
|
||||
|
||||
#rhbz 1010603
|
||||
Patch25140: 0001-Revert-epoll-use-freezable-blocking-call.patch
|
||||
Patch25141: 0001-Revert-select-use-freezable-blocking-call.patch
|
||||
|
||||
#rhbz 1025769
|
||||
Patch25142: iwlwifi-dvm-dont-override-mac80211-queue-setting.patch
|
||||
|
||||
|
@ -1521,9 +1511,6 @@ ApplyPatch ansi_cprng-Fix-off-by-one-error-in-non-block-size-request.patch
|
|||
#rhbz 985522
|
||||
ApplyPatch ntp-Make-periodic-RTC-update-more-reliable.patch
|
||||
|
||||
#rhbz 1010431
|
||||
ApplyPatch Revert-rt2x00pci-Use-PCI-MSIs-whenever-possible.patch
|
||||
|
||||
#rhbz 971893
|
||||
ApplyPatch bonding-driver-alb-learning.patch
|
||||
|
||||
|
@ -1562,9 +1549,6 @@ ApplyPatch btrfs-relocate-csums-properly-with-prealloc-ext.patch
|
|||
#rhbz 984696
|
||||
ApplyPatch rt2800usb-slow-down-TX-status-polling.patch
|
||||
|
||||
#rhbz 1015558
|
||||
ApplyPatch fix-buslogic.patch
|
||||
|
||||
#rhbz 1023413
|
||||
ApplyPatch alps-Support-for-Dell-XT2-model.patch
|
||||
|
||||
|
@ -1577,10 +1561,6 @@ ApplyPatch intel-3.12-stable-fixes.patch
|
|||
#CVE-2013-4348 rhbz 1007939 1025647
|
||||
ApplyPatch net-flow_dissector-fail-on-evil-iph-ihl.patch
|
||||
|
||||
#rhbz 1010603
|
||||
ApplyPatch 0001-Revert-epoll-use-freezable-blocking-call.patch
|
||||
ApplyPatch 0001-Revert-select-use-freezable-blocking-call.patch
|
||||
|
||||
#rhbz 1025769
|
||||
ApplyPatch iwlwifi-dvm-dont-override-mac80211-queue-setting.patch
|
||||
|
||||
|
@ -2390,6 +2370,9 @@ fi
|
|||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Wed Nov 13 2013 Justin M. Forbes <jforbes@fedoraproject.org> - 3.11.8-300
|
||||
- Linux v3.11.8
|
||||
|
||||
* Wed Nov 13 2013 Adam Jackson <ajax@redhat.com>
|
||||
- Hush i915's check_crtc_state()
|
||||
|
||||
|
|
Loading…
Reference in New Issue