From: Greg Kroah-Hartman Date: Fri, 2 Nov 2012 17:01:54 +0000 (-0700) Subject: 3.6-stable patches X-Git-Tag: v3.0.51~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ce69c9ac68ceed12122eb0b3cb854302fd04be4b;p=thirdparty%2Fkernel%2Fstable-queue.git 3.6-stable patches 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 --- diff --git a/queue-3.6/drm-nouveau-fix-suspend-resume-when-in-headless-mode.patch b/queue-3.6/drm-nouveau-fix-suspend-resume-when-in-headless-mode.patch new file mode 100644 index 00000000000..8f5d98b8d16 --- /dev/null +++ b/queue-3.6/drm-nouveau-fix-suspend-resume-when-in-headless-mode.patch @@ -0,0 +1,55 @@ +From skeggsb@gmail.com Fri Nov 2 09:58:07 2012 +From: Ben Skeggs +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 + +From: Ben Skeggs + +Backport of fixes from upstream commit: +9430738d80223a1cd791a2baa74fa170d3df1262 + +Signed-off-by: Ben Skeggs +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -188,11 +188,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) { +@@ -359,10 +361,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.6/drm-nouveau-headless-mode-by-default-if-pci-class-vga-display.patch b/queue-3.6/drm-nouveau-headless-mode-by-default-if-pci-class-vga-display.patch new file mode 100644 index 00000000000..a2095ca7191 --- /dev/null +++ b/queue-3.6/drm-nouveau-headless-mode-by-default-if-pci-class-vga-display.patch @@ -0,0 +1,54 @@ +From skeggsb@gmail.com Fri Nov 2 09:59:13 2012 +From: Ben Skeggs +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 + +From: Ben Skeggs + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/nouveau/nouveau_drv.c | 2 -- + drivers/gpu/drm/nouveau/nouveau_state.c | 4 +++- + 2 files changed, 3 insertions(+), 3 deletions(-) + +--- 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) +--- 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(stru + { + 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(stru + } + + /* 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; diff --git a/queue-3.6/drm-nouveau-silence-modesetting-spam-on-pre-gf8-chipsets.patch b/queue-3.6/drm-nouveau-silence-modesetting-spam-on-pre-gf8-chipsets.patch new file mode 100644 index 00000000000..79192148873 --- /dev/null +++ b/queue-3.6/drm-nouveau-silence-modesetting-spam-on-pre-gf8-chipsets.patch @@ -0,0 +1,105 @@ +From cee59f15a60cc6269a25e3f6fbf1a577d6ab8115 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs +Date: Mon, 29 Oct 2012 09:03:07 +1000 +Subject: drm/nouveau: silence modesetting spam on pre-gf8 chipsets + +From: Ben Skeggs + +commit cee59f15a60cc6269a25e3f6fbf1a577d6ab8115 upstream. + +Signed-off-by: Ben Skeggs +Signed-off-by: Greg Kroah-Hartman + +--- + 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)); + } diff --git a/queue-3.6/series b/queue-3.6/series index 0d40ff81912..da498462981 100644 --- a/queue-3.6/series +++ b/queue-3.6/series @@ -19,3 +19,6 @@ qla2xxx-update-target-lookup-session-tables-when-a-target-session-changes.patch target-reintroduce-some-obsolete-scsi-2-commands.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