From: Greg Kroah-Hartman Date: Tue, 8 Nov 2011 16:59:16 +0000 (-0800) Subject: 3.0 patches X-Git-Tag: v3.0.9~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d5d071cb783a33e86705cb611159a9f081d1ccd1;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0 patches added patches: cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch drm-radeon-kms-add-msi-module-parameter.patch drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch drm-radeon-kms-properly-set-panel-mode-for-edp.patch drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch drm-radeon-kms-split-msi-check-into-a-separate-function.patch drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch hwmon-coretemp-fix-for-non-smp-builds.patch hwmon-w83627ehf-fix-broken-driver-init.patch hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch kbuild-fix-help-text-not-displayed-in-choice-option.patch usb-update-last_busy-time-after-autosuspend-fails.patch --- diff --git a/queue-3.0/cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch b/queue-3.0/cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch new file mode 100644 index 00000000000..b0e0271d9aa --- /dev/null +++ b/queue-3.0/cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch @@ -0,0 +1,36 @@ +From ab5dbebe33e0c353e8545f09c34553ac3351dad6 Mon Sep 17 00:00:00 2001 +From: Mike Miller +Date: Thu, 20 Oct 2011 22:19:17 +0200 +Subject: cciss: add small delay when using PCI Power Management to reset for kump + +From: Mike Miller + +commit ab5dbebe33e0c353e8545f09c34553ac3351dad6 upstream. + +The P600 requires a small delay when changing states. Otherwise we may think +the board did not reset and we bail. This for kdump only and is particular +to the P600. + +Signed-off-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/block/cciss.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/block/cciss.c ++++ b/drivers/block/cciss.c +@@ -4533,6 +4533,13 @@ static int cciss_controller_hard_reset(s + pmcsr &= ~PCI_PM_CTRL_STATE_MASK; + pmcsr |= PCI_D0; + pci_write_config_word(pdev, pos + PCI_PM_CTRL, pmcsr); ++ ++ /* ++ * The P600 requires a small delay when changing states. ++ * Otherwise we may think the board did not reset and we bail. ++ * This for kdump only and is particular to the P600. ++ */ ++ msleep(500); + } + return 0; + } diff --git a/queue-3.0/drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch b/queue-3.0/drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch new file mode 100644 index 00000000000..f4ef2043e51 --- /dev/null +++ b/queue-3.0/drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch @@ -0,0 +1,49 @@ +From 340764465aa4a586ca332e61ae64883e5ad6f183 Mon Sep 17 00:00:00 2001 +From: Jerome Glisse +Date: Mon, 24 Oct 2011 18:16:34 -0400 +Subject: drm/radeon: avoid bouncing connector status btw disconnected & unknown + +From: Jerome Glisse + +commit 340764465aa4a586ca332e61ae64883e5ad6f183 upstream. + +Since force handling rework of d0d0a225e6ad43314c9aa7ea081f76adc5098ad4 +we could end up bouncing connector status btw disconnected and unknown. +When connector status change a call to output_poll_changed happen which +in turn ask again for detect but with force set. + +So set the load detect flags whenever we report the connector as +connected or unknown this avoid bouncing btw disconnected and unknown. + +Signed-off-by: Jerome Glisse +Reviewed-by: Alex Deucher +Signed-off-by: Dave Airlie +Cc: Stefan Lippers-Hollmann +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_connectors.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_connectors.c ++++ b/drivers/gpu/drm/radeon/radeon_connectors.c +@@ -755,7 +755,7 @@ radeon_vga_detect(struct drm_connector * + if (radeon_connector->dac_load_detect && encoder) { + encoder_funcs = encoder->helper_private; + ret = encoder_funcs->detect(encoder, connector); +- if (ret == connector_status_connected) ++ if (ret != connector_status_disconnected) + radeon_connector->detected_by_load = true; + } + } +@@ -996,8 +996,9 @@ radeon_dvi_detect(struct drm_connector * + ret = encoder_funcs->detect(encoder, connector); + if (ret == connector_status_connected) { + radeon_connector->use_digital = false; +- radeon_connector->detected_by_load = true; + } ++ if (ret != connector_status_disconnected) ++ radeon_connector->detected_by_load = true; + } + break; + } diff --git a/queue-3.0/drm-radeon-kms-add-msi-module-parameter.patch b/queue-3.0/drm-radeon-kms-add-msi-module-parameter.patch new file mode 100644 index 00000000000..fd185bbd5b0 --- /dev/null +++ b/queue-3.0/drm-radeon-kms-add-msi-module-parameter.patch @@ -0,0 +1,76 @@ +From a18cee15ed4c8b6a35f96b7b26a46bac32e04bd9 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Tue, 1 Nov 2011 14:20:30 -0400 +Subject: drm/radeon/kms: add MSI module parameter + +From: Alex Deucher + +commit a18cee15ed4c8b6a35f96b7b26a46bac32e04bd9 upstream. + +Allow the user to override whether MSIs are enabled +or not on supported ASICs. MSIs are disabled by default +on IGP chips as they tend not to work. However certain +IGP chips only seem to work with MSIs enabled. + +I suspect this is a chipset or bios issue, but I'm not sure +what the proper fix is. This will at least make diagnosing +and working around the problem much easier. + +See: +https://bugs.freedesktop.org/show_bug.cgi?id=37679 + +Signed-off-by: Alex Deucher +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon.h | 1 + + drivers/gpu/drm/radeon/radeon_drv.c | 4 ++++ + drivers/gpu/drm/radeon/radeon_irq_kms.c | 6 ++++++ + 3 files changed, 11 insertions(+) + +--- a/drivers/gpu/drm/radeon/radeon.h ++++ b/drivers/gpu/drm/radeon/radeon.h +@@ -93,6 +93,7 @@ extern int radeon_audio; + extern int radeon_disp_priority; + extern int radeon_hw_i2c; + extern int radeon_pcie_gen2; ++extern int radeon_msi; + + /* + * Copy from radeon_drv.h so we don't have to include both and have conflicting +--- a/drivers/gpu/drm/radeon/radeon_drv.c ++++ b/drivers/gpu/drm/radeon/radeon_drv.c +@@ -117,6 +117,7 @@ int radeon_audio = 0; + int radeon_disp_priority = 0; + int radeon_hw_i2c = 0; + int radeon_pcie_gen2 = 0; ++int radeon_msi = -1; + + MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers"); + module_param_named(no_wb, radeon_no_wb, int, 0444); +@@ -163,6 +164,9 @@ module_param_named(hw_i2c, radeon_hw_i2c + MODULE_PARM_DESC(pcie_gen2, "PCIE Gen2 mode (1 = enable)"); + module_param_named(pcie_gen2, radeon_pcie_gen2, int, 0444); + ++MODULE_PARM_DESC(msi, "MSI support (1 = enable, 0 = disable, -1 = auto)"); ++module_param_named(msi, radeon_msi, int, 0444); ++ + static int radeon_suspend(struct drm_device *dev, pm_message_t state) + { + drm_radeon_private_t *dev_priv = dev->dev_private; +--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c ++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c +@@ -118,6 +118,12 @@ static bool radeon_msi_ok(struct radeon_ + if (rdev->flags & RADEON_IS_AGP) + return false; + ++ /* force MSI on */ ++ if (radeon_msi == 1) ++ return true; ++ else if (radeon_msi == 0) ++ return false; ++ + /* Quirks */ + /* HP RS690 only seems to work with MSIs. */ + if ((rdev->pdev->device == 0x791f) && diff --git a/queue-3.0/drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch b/queue-3.0/drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch new file mode 100644 index 00000000000..95a259fa28f --- /dev/null +++ b/queue-3.0/drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch @@ -0,0 +1,38 @@ +From 01e718ec194e30b3e8eb3858c742c13649757efc Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Tue, 1 Nov 2011 14:14:18 -0400 +Subject: drm/radeon/kms: Add MSI quirk for Dell RS690 + +From: Alex Deucher + +commit 01e718ec194e30b3e8eb3858c742c13649757efc upstream. + +Some Dell laptops only seem to work with MSIs. This +looks like a platform/bios bug. + +Fixes: +https://bugs.freedesktop.org/show_bug.cgi?id=37679 + +Signed-off-by: Alex Deucher +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_irq_kms.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c ++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c +@@ -125,6 +125,12 @@ static bool radeon_msi_ok(struct radeon_ + (rdev->pdev->subsystem_device == 0x30c2)) + return true; + ++ /* Dell RS690 only seems to work with MSIs. */ ++ if ((rdev->pdev->device == 0x791f) && ++ (rdev->pdev->subsystem_vendor == 0x1028) && ++ (rdev->pdev->subsystem_device == 0x01fd)) ++ return true; ++ + if (rdev->flags & RADEON_IS_IGP) { + /* APUs work fine with MSIs */ + if (rdev->family >= CHIP_PALM) diff --git a/queue-3.0/drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch b/queue-3.0/drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch new file mode 100644 index 00000000000..f30850e3de6 --- /dev/null +++ b/queue-3.0/drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch @@ -0,0 +1,39 @@ +From b362105f7f5223fa4d2e03ceeea0e51da754ccc6 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Tue, 25 Oct 2011 15:11:08 -0400 +Subject: drm/radeon/kms: Add MSI quirk for HP RS690 + +From: Alex Deucher + +commit b362105f7f5223fa4d2e03ceeea0e51da754ccc6 upstream. + +Some HP laptops only seem to work with MSIs. This +looks like a platform/bios bug. + +Fixes: +https://bugs.freedesktop.org/show_bug.cgi?id=37679 + +Signed-off-by: Alex Deucher +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_irq_kms.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c ++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c +@@ -118,6 +118,13 @@ static bool radeon_msi_ok(struct radeon_ + if (rdev->flags & RADEON_IS_AGP) + return false; + ++ /* Quirks */ ++ /* HP RS690 only seems to work with MSIs. */ ++ if ((rdev->pdev->device == 0x791f) && ++ (rdev->pdev->subsystem_vendor == 0x103c) && ++ (rdev->pdev->subsystem_device == 0x30c2)) ++ return true; ++ + if (rdev->flags & RADEON_IS_IGP) { + /* APUs work fine with MSIs */ + if (rdev->family >= CHIP_PALM) diff --git a/queue-3.0/drm-radeon-kms-properly-set-panel-mode-for-edp.patch b/queue-3.0/drm-radeon-kms-properly-set-panel-mode-for-edp.patch new file mode 100644 index 00000000000..4b0680018e1 --- /dev/null +++ b/queue-3.0/drm-radeon-kms-properly-set-panel-mode-for-edp.patch @@ -0,0 +1,70 @@ +From 00dfb8df5bf8c3afe4c0bb8361133156b06b7a2c Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Mon, 31 Oct 2011 08:54:41 -0400 +Subject: drm/radeon/kms: properly set panel mode for eDP + +From: Alex Deucher + +commit 00dfb8df5bf8c3afe4c0bb8361133156b06b7a2c upstream. + +This should make eDP more reliable. + +Signed-off-by: Alex Deucher +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/atombios_dp.c | 11 +++++++++++ + include/drm/drm_dp_helper.h | 3 +++ + 2 files changed, 14 insertions(+) + +--- a/drivers/gpu/drm/radeon/atombios_dp.c ++++ b/drivers/gpu/drm/radeon/atombios_dp.c +@@ -553,6 +553,7 @@ static void radeon_dp_set_panel_mode(str + { + struct drm_device *dev = encoder->dev; + struct radeon_device *rdev = dev->dev_private; ++ struct radeon_connector *radeon_connector = to_radeon_connector(connector); + int panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE; + + if (!ASIC_IS_DCE4(rdev)) +@@ -560,10 +561,20 @@ static void radeon_dp_set_panel_mode(str + + if (radeon_connector_encoder_is_dp_bridge(connector)) + panel_mode = DP_PANEL_MODE_INTERNAL_DP1_MODE; ++ else if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { ++ u8 tmp = radeon_read_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_CAP); ++ if (tmp & 1) ++ panel_mode = DP_PANEL_MODE_INTERNAL_DP2_MODE; ++ } + + atombios_dig_encoder_setup(encoder, + ATOM_ENCODER_CMD_SETUP_PANEL_MODE, + panel_mode); ++ ++ if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) && ++ (panel_mode == DP_PANEL_MODE_INTERNAL_DP2_MODE)) { ++ radeon_write_dpcd_reg(radeon_connector, DP_EDP_CONFIGURATION_SET, 1); ++ } + } + + void radeon_dp_set_link_config(struct drm_connector *connector, +--- a/include/drm/drm_dp_helper.h ++++ b/include/drm/drm_dp_helper.h +@@ -72,6 +72,7 @@ + + #define DP_MAIN_LINK_CHANNEL_CODING 0x006 + ++#define DP_EDP_CONFIGURATION_CAP 0x00d + #define DP_TRAINING_AUX_RD_INTERVAL 0x00e + + /* link configuration */ +@@ -133,6 +134,8 @@ + #define DP_MAIN_LINK_CHANNEL_CODING_SET 0x108 + # define DP_SET_ANSI_8B10B (1 << 0) + ++#define DP_EDP_CONFIGURATION_SET 0x10a ++ + #define DP_LANE0_1_STATUS 0x202 + #define DP_LANE2_3_STATUS 0x203 + # define DP_LANE_CR_DONE (1 << 0) diff --git a/queue-3.0/drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch b/queue-3.0/drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch new file mode 100644 index 00000000000..98368d9ce5e --- /dev/null +++ b/queue-3.0/drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch @@ -0,0 +1,110 @@ +From 64912e997f0fe13512e4c7b90e4f7c11cb922ab5 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Thu, 3 Nov 2011 11:21:39 -0400 +Subject: drm/radeon/kms: set HPD polarity in hpd_init() + +From: Alex Deucher + +commit 64912e997f0fe13512e4c7b90e4f7c11cb922ab5 upstream. + +Polarity needs to be set accordingly to connector status (connected +or disconnected). Set it up in hpd_init() so first hotplug works +reliably no matter what is the initial set of connector. hpd_init() +also covers resume so HPD will work correctly after resume as well. + +Signed-off-by: Alex Deucher +Cc: Jerome Glisse +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/evergreen.c | 1 + + drivers/gpu/drm/radeon/r100.c | 1 + + drivers/gpu/drm/radeon/r600.c | 19 +++++++++---------- + drivers/gpu/drm/radeon/radeon_connectors.c | 1 - + drivers/gpu/drm/radeon/rs600.c | 1 + + 5 files changed, 12 insertions(+), 11 deletions(-) + +--- a/drivers/gpu/drm/radeon/evergreen.c ++++ b/drivers/gpu/drm/radeon/evergreen.c +@@ -353,6 +353,7 @@ void evergreen_hpd_init(struct radeon_de + default: + break; + } ++ radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); + } + if (rdev->irq.installed) + evergreen_irq_set(rdev); +--- a/drivers/gpu/drm/radeon/r100.c ++++ b/drivers/gpu/drm/radeon/r100.c +@@ -434,6 +434,7 @@ void r100_hpd_init(struct radeon_device + default: + break; + } ++ radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); + } + if (rdev->irq.installed) + r100_irq_set(rdev); +--- a/drivers/gpu/drm/radeon/r600.c ++++ b/drivers/gpu/drm/radeon/r600.c +@@ -762,13 +762,14 @@ void r600_hpd_init(struct radeon_device + struct drm_device *dev = rdev->ddev; + struct drm_connector *connector; + +- if (ASIC_IS_DCE3(rdev)) { +- u32 tmp = DC_HPDx_CONNECTION_TIMER(0x9c4) | DC_HPDx_RX_INT_TIMER(0xfa); +- if (ASIC_IS_DCE32(rdev)) +- tmp |= DC_HPDx_EN; ++ list_for_each_entry(connector, &dev->mode_config.connector_list, head) { ++ struct radeon_connector *radeon_connector = to_radeon_connector(connector); ++ ++ if (ASIC_IS_DCE3(rdev)) { ++ u32 tmp = DC_HPDx_CONNECTION_TIMER(0x9c4) | DC_HPDx_RX_INT_TIMER(0xfa); ++ if (ASIC_IS_DCE32(rdev)) ++ tmp |= DC_HPDx_EN; + +- list_for_each_entry(connector, &dev->mode_config.connector_list, head) { +- struct radeon_connector *radeon_connector = to_radeon_connector(connector); + switch (radeon_connector->hpd.hpd) { + case RADEON_HPD_1: + WREG32(DC_HPD1_CONTROL, tmp); +@@ -798,10 +799,7 @@ void r600_hpd_init(struct radeon_device + default: + break; + } +- } +- } else { +- list_for_each_entry(connector, &dev->mode_config.connector_list, head) { +- struct radeon_connector *radeon_connector = to_radeon_connector(connector); ++ } else { + switch (radeon_connector->hpd.hpd) { + case RADEON_HPD_1: + WREG32(DC_HOT_PLUG_DETECT1_CONTROL, DC_HOT_PLUG_DETECTx_EN); +@@ -819,6 +817,7 @@ void r600_hpd_init(struct radeon_device + break; + } + } ++ radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); + } + if (rdev->irq.installed) + r600_irq_set(rdev); +--- a/drivers/gpu/drm/radeon/radeon_connectors.c ++++ b/drivers/gpu/drm/radeon/radeon_connectors.c +@@ -1779,7 +1779,6 @@ radeon_add_atom_connector(struct drm_dev + connector->polled = DRM_CONNECTOR_POLL_CONNECT; + } else + connector->polled = DRM_CONNECTOR_POLL_HPD; +- radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); + + connector->display_info.subpixel_order = subpixel_order; + drm_sysfs_connector_add(connector); +--- a/drivers/gpu/drm/radeon/rs600.c ++++ b/drivers/gpu/drm/radeon/rs600.c +@@ -287,6 +287,7 @@ void rs600_hpd_init(struct radeon_device + default: + break; + } ++ radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); + } + if (rdev->irq.installed) + rs600_irq_set(rdev); diff --git a/queue-3.0/drm-radeon-kms-split-msi-check-into-a-separate-function.patch b/queue-3.0/drm-radeon-kms-split-msi-check-into-a-separate-function.patch new file mode 100644 index 00000000000..f26411dbd87 --- /dev/null +++ b/queue-3.0/drm-radeon-kms-split-msi-check-into-a-separate-function.patch @@ -0,0 +1,64 @@ +From 8f6c25c59b0c895c68cae59d1b34e9a7b36971bc Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Tue, 25 Oct 2011 14:58:49 -0400 +Subject: drm/radeon/kms: split MSI check into a separate function + +From: Alex Deucher + +commit 8f6c25c59b0c895c68cae59d1b34e9a7b36971bc upstream. + +This makes it easier to add quirks for certain systems. + +Signed-off-by: Alex Deucher +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_irq_kms.c | 29 +++++++++++++++++++++++------ + 1 file changed, 23 insertions(+), 6 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c ++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c +@@ -108,6 +108,27 @@ void radeon_driver_irq_uninstall_kms(str + radeon_irq_set(rdev); + } + ++static bool radeon_msi_ok(struct radeon_device *rdev) ++{ ++ /* RV370/RV380 was first asic with MSI support */ ++ if (rdev->family < CHIP_RV380) ++ return false; ++ ++ /* MSIs don't work on AGP */ ++ if (rdev->flags & RADEON_IS_AGP) ++ return false; ++ ++ if (rdev->flags & RADEON_IS_IGP) { ++ /* APUs work fine with MSIs */ ++ if (rdev->family >= CHIP_PALM) ++ return true; ++ /* lots of IGPs have problems with MSIs */ ++ return false; ++ } ++ ++ return true; ++} ++ + int radeon_irq_kms_init(struct radeon_device *rdev) + { + int i; +@@ -124,12 +145,8 @@ int radeon_irq_kms_init(struct radeon_de + } + /* enable msi */ + rdev->msi_enabled = 0; +- /* MSIs don't seem to work reliably on all IGP +- * chips. Disable MSI on them for now. +- */ +- if ((rdev->family >= CHIP_RV380) && +- ((!(rdev->flags & RADEON_IS_IGP)) || (rdev->family >= CHIP_PALM)) && +- (!(rdev->flags & RADEON_IS_AGP))) { ++ ++ if (radeon_msi_ok(rdev)) { + int ret = pci_enable_msi(rdev->pdev); + if (!ret) { + rdev->msi_enabled = 1; diff --git a/queue-3.0/drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch b/queue-3.0/drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch new file mode 100644 index 00000000000..70e5f61440a --- /dev/null +++ b/queue-3.0/drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch @@ -0,0 +1,31 @@ +From 8ab250d4484b72ccc78e34276c5ffa84c1d41303 Mon Sep 17 00:00:00 2001 +From: Jerome Glisse +Date: Fri, 28 Oct 2011 17:52:34 -0400 +Subject: drm/radeon: set hpd polarity at init time so hotplug detect works + +From: Jerome Glisse + +commit 8ab250d4484b72ccc78e34276c5ffa84c1d41303 upstream. + +Polarity needs to be set accordingly to connector status (connected +or disconnected). Set it up at module init so first hotplug works +reliably no matter what is the initial set of connector. + +Signed-off-by: Jerome Glisse +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_connectors.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/gpu/drm/radeon/radeon_connectors.c ++++ b/drivers/gpu/drm/radeon/radeon_connectors.c +@@ -1779,6 +1779,7 @@ radeon_add_atom_connector(struct drm_dev + connector->polled = DRM_CONNECTOR_POLL_CONNECT; + } else + connector->polled = DRM_CONNECTOR_POLL_HPD; ++ radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd); + + connector->display_info.subpixel_order = subpixel_order; + drm_sysfs_connector_add(connector); diff --git a/queue-3.0/hwmon-coretemp-fix-for-non-smp-builds.patch b/queue-3.0/hwmon-coretemp-fix-for-non-smp-builds.patch new file mode 100644 index 00000000000..0e719c065e2 --- /dev/null +++ b/queue-3.0/hwmon-coretemp-fix-for-non-smp-builds.patch @@ -0,0 +1,44 @@ +From 2aba6cac2a84f3b80e11a680c34d55e7739b474d Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Sun, 6 Nov 2011 20:25:18 +0100 +Subject: hwmon: (coretemp) Fix for non-SMP builds + +From: Jean Delvare + +commit 2aba6cac2a84f3b80e11a680c34d55e7739b474d upstream. + +The definition of TO_ATTR_NO in the non-SMP case is wrong. As the SMP +definition resolves to the correct value, just use this for both +cases. + +Without this fix the temperature attributes are named temp0_* instead +of temp2_*, so libsensors won't pick them. Broken since kernel 3.0. + +Signed-off-by: Jean Delvare +Tested-by: Phil Sutter +Acked-by: Durgadoss R +Acked-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/coretemp.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/hwmon/coretemp.c ++++ b/drivers/hwmon/coretemp.c +@@ -50,14 +50,13 @@ + #ifdef CONFIG_SMP + #define TO_PHYS_ID(cpu) cpu_data(cpu).phys_proc_id + #define TO_CORE_ID(cpu) cpu_data(cpu).cpu_core_id +-#define TO_ATTR_NO(cpu) (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO) + #define for_each_sibling(i, cpu) for_each_cpu(i, cpu_sibling_mask(cpu)) + #else + #define TO_PHYS_ID(cpu) (cpu) + #define TO_CORE_ID(cpu) (cpu) +-#define TO_ATTR_NO(cpu) (cpu) + #define for_each_sibling(i, cpu) for (i = 0; false; ) + #endif ++#define TO_ATTR_NO(cpu) (TO_CORE_ID(cpu) + BASE_SYSFS_ATTR_NO) + + /* + * Per-Core Temperature Data diff --git a/queue-3.0/hwmon-w83627ehf-fix-broken-driver-init.patch b/queue-3.0/hwmon-w83627ehf-fix-broken-driver-init.patch new file mode 100644 index 00000000000..d42f7aa15f2 --- /dev/null +++ b/queue-3.0/hwmon-w83627ehf-fix-broken-driver-init.patch @@ -0,0 +1,49 @@ +From bfa02b0da66965caf46e441270af87edda4fea14 Mon Sep 17 00:00:00 2001 +From: Guenter Roeck +Date: Sun, 6 Nov 2011 20:25:18 +0100 +Subject: hwmon: (w83627ehf) Fix broken driver init + +From: Guenter Roeck + +commit bfa02b0da66965caf46e441270af87edda4fea14 upstream. + +Commit 2265cef2 (hwmon: (w83627ehf) Properly report PECI and AMD-SI +sensor types) results in kernel panic if data->temp_label was not +initialized. +The problem was found with chip W83627DHG-P. + +Add check if data->temp->label was set before use. + +Based on incomplete patch by Alexander Beregalov. + +Reported-by: Alexander Beregalov +Tested-by: Alexander Beregalov +Signed-off-by: Guenter Roeck +Signed-off-by: Jean Delvare +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/w83627ehf.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +--- a/drivers/hwmon/w83627ehf.c ++++ b/drivers/hwmon/w83627ehf.c +@@ -1756,12 +1756,15 @@ static inline void __devinit w83627ehf_i + diode = 0x70; + } + for (i = 0; i < 3; i++) { +- const char *label = data->temp_label[data->temp_src[i]]; ++ const char *label = NULL; ++ ++ if (data->temp_label) ++ label = data->temp_label[data->temp_src[i]]; + + /* Digital source overrides analog type */ +- if (strncmp(label, "PECI", 4) == 0) ++ if (label && strncmp(label, "PECI", 4) == 0) + data->temp_type[i] = 6; +- else if (strncmp(label, "AMD", 3) == 0) ++ else if (label && strncmp(label, "AMD", 3) == 0) + data->temp_type[i] = 5; + else if ((tmp & (0x02 << i))) + data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 3; diff --git a/queue-3.0/hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch b/queue-3.0/hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch new file mode 100644 index 00000000000..f37c861ab51 --- /dev/null +++ b/queue-3.0/hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch @@ -0,0 +1,39 @@ +From 2265cef2751b3441df91f85e0107f9f549e5b711 Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Fri, 4 Nov 2011 12:00:47 +0100 +Subject: hwmon: (w83627ehf) Properly report PECI and AMD-SI sensor types + +From: Jean Delvare + +commit 2265cef2751b3441df91f85e0107f9f549e5b711 upstream. + +When temperature sources are PECI or AMD-SI agents, it makes no sense +to report their type as diode or thermistor. Instead we must report +their digital nature. + +Signed-off-by: Jean Delvare +Acked-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/w83627ehf.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +--- a/drivers/hwmon/w83627ehf.c ++++ b/drivers/hwmon/w83627ehf.c +@@ -1756,7 +1756,14 @@ static inline void __devinit w83627ehf_i + diode = 0x70; + } + for (i = 0; i < 3; i++) { +- if ((tmp & (0x02 << i))) ++ const char *label = data->temp_label[data->temp_src[i]]; ++ ++ /* Digital source overrides analog type */ ++ if (strncmp(label, "PECI", 4) == 0) ++ data->temp_type[i] = 6; ++ else if (strncmp(label, "AMD", 3) == 0) ++ data->temp_type[i] = 5; ++ else if ((tmp & (0x02 << i))) + data->temp_type[i] = (diode & (0x10 << i)) ? 1 : 3; + else + data->temp_type[i] = 4; /* thermistor */ diff --git a/queue-3.0/kbuild-fix-help-text-not-displayed-in-choice-option.patch b/queue-3.0/kbuild-fix-help-text-not-displayed-in-choice-option.patch new file mode 100644 index 00000000000..d4dbd1a6975 --- /dev/null +++ b/queue-3.0/kbuild-fix-help-text-not-displayed-in-choice-option.patch @@ -0,0 +1,60 @@ +From 3f198dfee49d2e9c30583c62b0c79286c78c7b44 Mon Sep 17 00:00:00 2001 +From: Srinivas Kandagatla +Date: Tue, 2 Aug 2011 18:49:52 +0100 +Subject: kbuild: Fix help text not displayed in choice option. + +From: Srinivas Kandagatla + +commit 3f198dfee49d2e9c30583c62b0c79286c78c7b44 upstream. + +Help text under choice menu is never displayed because it does not have +symbol name associated with it, however many kconfigs have help text +under choice, assuming that it will be displayed when user selects help. +for example in Kconfig if we have: +choice + prompt "Choice" + ---help--- + HELP TEXT ... + +config A + bool "A" + +config B + bool "B" + +endchoice + +Without this patch "HELP TEXT" is not displayed when user selects help +option when "Choice" is highlighted from menuconfig or xconfig or +gconfig. + +This patch changes the logic in menu_get_ext_help to display help for +cases which dont have symbol names like choice. + +Signed-off-by: Srinivas Kandagatla +Reviewed-by: Stuart Menefy +Reviewed-by: Arnaud Lacombe +Signed-off-by: Michal Marek +Signed-off-by: Greg Kroah-Hartman + +--- + scripts/kconfig/menu.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/scripts/kconfig/menu.c ++++ b/scripts/kconfig/menu.c +@@ -596,11 +596,10 @@ void menu_get_ext_help(struct menu *menu + struct symbol *sym = menu->sym; + + if (menu_has_help(menu)) { +- if (sym->name) { ++ if (sym->name) + str_printf(help, "%s%s:\n\n", CONFIG_, sym->name); +- str_append(help, _(menu_get_help(menu))); +- str_append(help, "\n"); +- } ++ str_append(help, _(menu_get_help(menu))); ++ str_append(help, "\n"); + } else { + str_append(help, nohelp_text); + } diff --git a/queue-3.0/series b/queue-3.0/series index d995d869d76..908e7ef270e 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -196,3 +196,17 @@ alsa-ua101-fix-crash-when-unplugging.patch alsa-hda-disable-power-widget-control-for-idt-92hd83-93.patch alsa-hda-add-support-for-92hd65-92hd66-family-of-codecs.patch alsa-hda-realtek-skip-invalid-digital-out-pins.patch +drm-radeon-avoid-bouncing-connector-status-btw-disconnected-unknown.patch +drm-radeon-kms-split-msi-check-into-a-separate-function.patch +drm-radeon-kms-add-msi-quirk-for-hp-rs690.patch +drm-radeon-set-hpd-polarity-at-init-time-so-hotplug-detect-works.patch +drm-radeon-kms-properly-set-panel-mode-for-edp.patch +drm-radeon-kms-add-msi-quirk-for-dell-rs690.patch +drm-radeon-kms-add-msi-module-parameter.patch +drm-radeon-kms-set-hpd-polarity-in-hpd_init.patch +kbuild-fix-help-text-not-displayed-in-choice-option.patch +usb-update-last_busy-time-after-autosuspend-fails.patch +cciss-add-small-delay-when-using-pci-power-management-to-reset-for-kump.patch +hwmon-coretemp-fix-for-non-smp-builds.patch +hwmon-w83627ehf-properly-report-peci-and-amd-si-sensor-types.patch +hwmon-w83627ehf-fix-broken-driver-init.patch diff --git a/queue-3.0/usb-update-last_busy-time-after-autosuspend-fails.patch b/queue-3.0/usb-update-last_busy-time-after-autosuspend-fails.patch new file mode 100644 index 00000000000..a0ab04adc60 --- /dev/null +++ b/queue-3.0/usb-update-last_busy-time-after-autosuspend-fails.patch @@ -0,0 +1,50 @@ +From b2c0a863e14676fa5760c6d828fd373288e2f64a Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Fri, 4 Nov 2011 00:52:46 +0100 +Subject: USB: Update last_busy time after autosuspend fails + +From: Alan Stern + +commit b2c0a863e14676fa5760c6d828fd373288e2f64a upstream. + +Originally, the runtime PM core would send an idle notification +whenever a suspend attempt failed. The idle callback routine could +then schedule a delayed suspend for some time later. + +However this behavior was changed by commit +f71648d73c1650b8b4aceb3856bebbde6daa3b86 (PM / Runtime: Remove idle +notification after failing suspend). No notifications were sent, and +there was no clear mechanism to retry failed suspends. + +This caused problems for the usbhid driver, because it fails +autosuspend attempts as long as a key is being held down. A companion +patch changes the PM core's behavior, but we also need to change the +USB core. In particular, this patch (as1493) updates the device's +last_busy time when an autosuspend fails, so that the PM core will +retry the autosuspend in the future when the delay time expires +again. + +Signed-off-by: Alan Stern +Tested-by: Henrik Rydberg +Acked-by: Greg Kroah-Hartman +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/driver.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/usb/core/driver.c ++++ b/drivers/usb/core/driver.c +@@ -1668,6 +1668,11 @@ int usb_runtime_suspend(struct device *d + return -EAGAIN; + + status = usb_suspend_both(udev, PMSG_AUTO_SUSPEND); ++ ++ /* Allow a retry if autosuspend failed temporarily */ ++ if (status == -EAGAIN || status == -EBUSY) ++ usb_mark_last_busy(udev); ++ + /* The PM core reacts badly unless the return code is 0, + * -EAGAIN, or -EBUSY, so always return -EBUSY on an error. + */