]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 Nov 2012 17:01:59 +0000 (10:01 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 2 Nov 2012 17:01:59 +0000 (10:01 -0700)
added patches:
drm-nouveau-fix-suspend-resume-when-in-headless-mode.patch
drm-nouveau-headless-mode-by-default-if-pci-class-vga-display.patch
drm-nouveau-silence-modesetting-spam-on-pre-gf8-chipsets.patch

queue-3.4/drm-nouveau-fix-suspend-resume-when-in-headless-mode.patch [new file with mode: 0644]
queue-3.4/drm-nouveau-headless-mode-by-default-if-pci-class-vga-display.patch [new file with mode: 0644]
queue-3.4/drm-nouveau-silence-modesetting-spam-on-pre-gf8-chipsets.patch [new file with mode: 0644]
queue-3.4/series

diff --git a/queue-3.4/drm-nouveau-fix-suspend-resume-when-in-headless-mode.patch b/queue-3.4/drm-nouveau-fix-suspend-resume-when-in-headless-mode.patch
new file mode 100644 (file)
index 0000000..8c3e9b0
--- /dev/null
@@ -0,0 +1,55 @@
+From skeggsb@gmail.com  Fri Nov  2 09:58:07 2012
+From: Ben Skeggs <skeggsb@gmail.com>
+Date: Thu,  1 Nov 2012 16:16:31 +1000
+Subject: drm/nouveau: fix suspend/resume when in headless mode
+To: stable@vger.kernel.org
+Cc: Ben Skeggs <bskeggs@redhat.com>
+
+From: Ben Skeggs <bskeggs@redhat.com>
+
+Backport of fixes from upstream commit:
+9430738d80223a1cd791a2baa74fa170d3df1262
+
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/nouveau/nouveau_drv.c |   18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
++++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
+@@ -186,11 +186,13 @@ nouveau_pci_suspend(struct pci_dev *pdev
+       if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
+               return 0;
+-      NV_INFO(dev, "Disabling display...\n");
+-      nouveau_display_fini(dev);
++      if (dev->mode_config.num_crtc) {
++              NV_INFO(dev, "Disabling display...\n");
++              nouveau_display_fini(dev);
+-      NV_INFO(dev, "Disabling fbcon...\n");
+-      nouveau_fbcon_set_suspend(dev, 1);
++              NV_INFO(dev, "Disabling fbcon...\n");
++              nouveau_fbcon_set_suspend(dev, 1);
++      }
+       NV_INFO(dev, "Unpinning framebuffer(s)...\n");
+       list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
+@@ -363,10 +365,12 @@ nouveau_pci_resume(struct pci_dev *pdev)
+                       NV_ERROR(dev, "Could not pin/map cursor.\n");
+       }
+-      nouveau_fbcon_set_suspend(dev, 0);
+-      nouveau_fbcon_zfill_all(dev);
++      if (dev->mode_config.num_crtc) {
++              nouveau_fbcon_set_suspend(dev, 0);
++              nouveau_fbcon_zfill_all(dev);
+-      nouveau_display_init(dev);
++              nouveau_display_init(dev);
++      }
+       /* Force CLUT to get re-loaded during modeset */
+       list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
diff --git a/queue-3.4/drm-nouveau-headless-mode-by-default-if-pci-class-vga-display.patch b/queue-3.4/drm-nouveau-headless-mode-by-default-if-pci-class-vga-display.patch
new file mode 100644 (file)
index 0000000..9a69bc8
--- /dev/null
@@ -0,0 +1,59 @@
+From skeggsb@gmail.com  Fri Nov  2 09:59:13 2012
+From: Ben Skeggs <skeggsb@gmail.com>
+Date: Thu,  1 Nov 2012 16:16:32 +1000
+Subject: drm/nouveau: headless mode by default if pci class != vga display
+To: stable@vger.kernel.org
+Cc: Ben Skeggs <bskeggs@redhat.com>
+
+From: Ben Skeggs <bskeggs@redhat.com>
+
+This is to prevent nouveau from taking over the console on headless boards
+such as Tesla.
+
+Backport of upstream commit: e412e95a268fa8544858ebfe066826b290430d51
+
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
++++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
+@@ -488,9 +488,7 @@ static int __init nouveau_init(void)
+ #ifdef CONFIG_VGA_CONSOLE
+               if (vgacon_text_force())
+                       nouveau_modeset = 0;
+-              else
+ #endif
+-                      nouveau_modeset = 1;
+       }
+       if (!nouveau_modeset)
+diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
+index c610144..f5e9584 100644
+--- a/drivers/gpu/drm/nouveau/nouveau_state.c
++++ b/drivers/gpu/drm/nouveau/nouveau_state.c
+@@ -50,6 +50,7 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
+ {
+       struct drm_nouveau_private *dev_priv = dev->dev_private;
+       struct nouveau_engine *engine = &dev_priv->engine;
++      u32 pclass = dev->pdev->class >> 8;
+       switch (dev_priv->chipset & 0xf0) {
+       case 0x00:
+@@ -428,7 +429,8 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
+       }
+       /* headless mode */
+-      if (nouveau_modeset == 2) {
++      if (nouveau_modeset == 2 ||
++          (nouveau_modeset < 0 && pclass != PCI_CLASS_DISPLAY_VGA)) {
+               engine->display.early_init = nouveau_stub_init;
+               engine->display.late_takedown = nouveau_stub_takedown;
+               engine->display.create = nouveau_stub_init;
+-- 
+1.7.12.4
+
+--
+To unsubscribe from this list: send the line "unsubscribe stable" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
diff --git a/queue-3.4/drm-nouveau-silence-modesetting-spam-on-pre-gf8-chipsets.patch b/queue-3.4/drm-nouveau-silence-modesetting-spam-on-pre-gf8-chipsets.patch
new file mode 100644 (file)
index 0000000..7919214
--- /dev/null
@@ -0,0 +1,105 @@
+From cee59f15a60cc6269a25e3f6fbf1a577d6ab8115 Mon Sep 17 00:00:00 2001
+From: Ben Skeggs <bskeggs@redhat.com>
+Date: Mon, 29 Oct 2012 09:03:07 +1000
+Subject: drm/nouveau: silence modesetting spam on pre-gf8 chipsets
+
+From: Ben Skeggs <bskeggs@redhat.com>
+
+commit cee59f15a60cc6269a25e3f6fbf1a577d6ab8115 upstream.
+
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/nouveau/nv04_dac.c |    8 ++++----
+ drivers/gpu/drm/nouveau/nv04_dfp.c |    6 +++---
+ drivers/gpu/drm/nouveau/nv04_tv.c  |    4 ++--
+ 3 files changed, 9 insertions(+), 9 deletions(-)
+
+--- a/drivers/gpu/drm/nouveau/nv04_dac.c
++++ b/drivers/gpu/drm/nouveau/nv04_dac.c
+@@ -210,7 +210,7 @@ out:
+       NVWriteVgaCrtc(dev, 0, NV_CIO_CR_MODE_INDEX, saved_cr_mode);
+       if (blue == 0x18) {
+-              NV_INFO(dev, "Load detected on head A\n");
++              NV_DEBUG(dev, "Load detected on head A\n");
+               return connector_status_connected;
+       }
+@@ -323,7 +323,7 @@ nv17_dac_detect(struct drm_encoder *enco
+       if (nv17_dac_sample_load(encoder) &
+           NV_PRAMDAC_TEST_CONTROL_SENSEB_ALLHI) {
+-              NV_INFO(dev, "Load detected on output %c\n",
++              NV_DEBUG(dev, "Load detected on output %c\n",
+                       '@' + ffs(dcb->or));
+               return connector_status_connected;
+       } else {
+@@ -398,7 +398,7 @@ static void nv04_dac_commit(struct drm_e
+       helper->dpms(encoder, DRM_MODE_DPMS_ON);
+-      NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n",
++      NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n",
+               drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base),
+               nv_crtc->index, '@' + ffs(nv_encoder->dcb->or));
+ }
+@@ -447,7 +447,7 @@ static void nv04_dac_dpms(struct drm_enc
+               return;
+       nv_encoder->last_dpms = mode;
+-      NV_INFO(dev, "Setting dpms mode %d on vga encoder (output %d)\n",
++      NV_DEBUG(dev, "Setting dpms mode %d on vga encoder (output %d)\n",
+                    mode, nv_encoder->dcb->index);
+       nv04_dac_update_dacclk(encoder, mode == DRM_MODE_DPMS_ON);
+--- a/drivers/gpu/drm/nouveau/nv04_dfp.c
++++ b/drivers/gpu/drm/nouveau/nv04_dfp.c
+@@ -476,7 +476,7 @@ static void nv04_dfp_commit(struct drm_e
+       helper->dpms(encoder, DRM_MODE_DPMS_ON);
+-      NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n",
++      NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n",
+               drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base),
+               nv_crtc->index, '@' + ffs(nv_encoder->dcb->or));
+ }
+@@ -519,7 +519,7 @@ static void nv04_lvds_dpms(struct drm_en
+               return;
+       nv_encoder->last_dpms = mode;
+-      NV_INFO(dev, "Setting dpms mode %d on lvds encoder (output %d)\n",
++      NV_DEBUG(dev, "Setting dpms mode %d on lvds encoder (output %d)\n",
+                    mode, nv_encoder->dcb->index);
+       if (was_powersaving && is_powersaving_dpms(mode))
+@@ -564,7 +564,7 @@ static void nv04_tmds_dpms(struct drm_en
+               return;
+       nv_encoder->last_dpms = mode;
+-      NV_INFO(dev, "Setting dpms mode %d on tmds encoder (output %d)\n",
++      NV_DEBUG(dev, "Setting dpms mode %d on tmds encoder (output %d)\n",
+                    mode, nv_encoder->dcb->index);
+       nv04_dfp_update_backlight(encoder, mode);
+--- a/drivers/gpu/drm/nouveau/nv04_tv.c
++++ b/drivers/gpu/drm/nouveau/nv04_tv.c
+@@ -69,7 +69,7 @@ static void nv04_tv_dpms(struct drm_enco
+       struct nv04_mode_state *state = &dev_priv->mode_reg;
+       uint8_t crtc1A;
+-      NV_INFO(dev, "Setting dpms mode %d on TV encoder (output %d)\n",
++      NV_DEBUG(dev, "Setting dpms mode %d on TV encoder (output %d)\n",
+               mode, nv_encoder->dcb->index);
+       state->pllsel &= ~(PLLSEL_TV_CRTC1_MASK | PLLSEL_TV_CRTC2_MASK);
+@@ -162,7 +162,7 @@ static void nv04_tv_commit(struct drm_en
+       helper->dpms(encoder, DRM_MODE_DPMS_ON);
+-      NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n",
++      NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n",
+                     drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), nv_crtc->index,
+                     '@' + ffs(nv_encoder->dcb->or));
+ }
index 0e1397e52f6f47181ca8880e5f37d940a0411970..e2c2a9e2ca645b1e0825cb2fc859120191415b31 100644 (file)
@@ -6,3 +6,6 @@ floppy-do-put_disk-on-current-dr-if-blk_init_queue-fails.patch
 b43-fix-oops-on-unload-when-firmware-not-found.patch
 target-fix-double-free-of-se_cmd-in-target_complete_tmr_failure.patch
 hid-microsoft-fix-invalid-rdesc-for-3k-kbd.patch
+drm-nouveau-silence-modesetting-spam-on-pre-gf8-chipsets.patch
+drm-nouveau-fix-suspend-resume-when-in-headless-mode.patch
+drm-nouveau-headless-mode-by-default-if-pci-class-vga-display.patch