From: Greg Kroah-Hartman Date: Sun, 8 Jun 2014 01:50:24 +0000 (-0700) Subject: 3.14-stable patches X-Git-Tag: v3.14.7~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dea1bb1c408a225d03e342fd0fe4aebc8098a4c8;p=thirdparty%2Fkernel%2Fstable-queue.git 3.14-stable patches added patches: documentation-fix-docbooks-...-building.patch drm-gf119-disp-fix-nasty-bug-which-can-clobber-sor0-s-clock-setup.patch drm-radeon-also-try-gart-for-cpu-accessed-buffers.patch drm-radeon-fix-register-typo-on-si.patch drm-radeon-handle-non-vga-class-pci-devices-with-atrm.patch drm-radeon-pm-don-t-allow-debugfs-sysfs-access-when-px-card-is-off-v2.patch hwmon-ntc_thermistor-fix-dependencies.patch hwmon-ntc_thermistor-fix-of-device-id-mapping.patch scsi-scsi_transport_sas-move-bsg-destructor-into-sas_rphy_remove.patch --- diff --git a/queue-3.14/documentation-fix-docbooks-...-building.patch b/queue-3.14/documentation-fix-docbooks-...-building.patch new file mode 100644 index 00000000000..a35137bc9a9 --- /dev/null +++ b/queue-3.14/documentation-fix-docbooks-...-building.patch @@ -0,0 +1,44 @@ +From e60cbeedc48d80689c249ab5dcc3c31ad0452dea Mon Sep 17 00:00:00 2001 +From: Johannes Berg +Date: Thu, 22 May 2014 11:54:23 -0700 +Subject: Documentation: fix DOCBOOKS=... building + +From: Johannes Berg + +commit e60cbeedc48d80689c249ab5dcc3c31ad0452dea upstream. + +Prior to commit 4266129964b8 ("[media] DocBook: Move all media docbook +stuff into its own directory") it was possible to build only a single +(or more) book(s) by calling, for example + + make htmldocs DOCBOOKS=80211.xml + +This now fails: + + cp: target `.../Documentation/DocBook//media_api' is not a directory + +Ignore errors from that copy to make this possible again. + +Fixes: 4266129964b8 ("[media] DocBook: Move all media docbook stuff into its own directory") +Signed-off-by: Johannes Berg +Acked-by: Randy Dunlap +Cc: Mauro Carvalho Chehab +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + Documentation/DocBook/media/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/Documentation/DocBook/media/Makefile ++++ b/Documentation/DocBook/media/Makefile +@@ -195,7 +195,7 @@ DVB_DOCUMENTED = \ + # + + install_media_images = \ +- $(Q)cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api ++ $(Q)-cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api + + $(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 + $(Q)base64 -d $< >$@ diff --git a/queue-3.14/drm-gf119-disp-fix-nasty-bug-which-can-clobber-sor0-s-clock-setup.patch b/queue-3.14/drm-gf119-disp-fix-nasty-bug-which-can-clobber-sor0-s-clock-setup.patch new file mode 100644 index 00000000000..e2e6f26342c --- /dev/null +++ b/queue-3.14/drm-gf119-disp-fix-nasty-bug-which-can-clobber-sor0-s-clock-setup.patch @@ -0,0 +1,30 @@ +From 0f1d360b2ee3a2a0f510d3f1bcd3f5ebe5d41265 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs +Date: Tue, 20 May 2014 16:13:54 +1000 +Subject: drm/gf119-/disp: fix nasty bug which can clobber SOR0's clock setup + +From: Ben Skeggs + +commit 0f1d360b2ee3a2a0f510d3f1bcd3f5ebe5d41265 upstream. + +Fixes a LVDS bleed issue on Lenovo W530 that can occur under a +number of circumstances. + +Signed-off-by: Ben Skeggs +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c ++++ b/drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c +@@ -732,7 +732,7 @@ exec_clkcmp(struct nv50_disp_priv *priv, + } + + if (outp == 8) +- return false; ++ return conf; + + data = exec_lookup(priv, head, outp, ctrl, dcb, &ver, &hdr, &cnt, &len, &info1); + if (data == 0x0000) diff --git a/queue-3.14/drm-radeon-also-try-gart-for-cpu-accessed-buffers.patch b/queue-3.14/drm-radeon-also-try-gart-for-cpu-accessed-buffers.patch new file mode 100644 index 00000000000..4cbdd9a350d --- /dev/null +++ b/queue-3.14/drm-radeon-also-try-gart-for-cpu-accessed-buffers.patch @@ -0,0 +1,72 @@ +From 544092596e8ac269f70e70961b5e9381909c9b1e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= +Date: Mon, 5 May 2014 18:40:12 +0200 +Subject: drm/radeon: also try GART for CPU accessed buffers +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: =?UTF-8?q?Christian=20K=C3=B6nig?= + +commit 544092596e8ac269f70e70961b5e9381909c9b1e upstream. + +Placing them exclusively into VRAM might not work all the time. + +Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=78297 + +Signed-off-by: Christian König +Reviewed-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_object.c | 38 +++++++++++++++++++-------------- + 1 file changed, 23 insertions(+), 15 deletions(-) + +--- a/drivers/gpu/drm/radeon/radeon_object.c ++++ b/drivers/gpu/drm/radeon/radeon_object.c +@@ -586,22 +586,30 @@ int radeon_bo_fault_reserve_notify(struc + rbo = container_of(bo, struct radeon_bo, tbo); + radeon_bo_check_tiling(rbo, 0, 0); + rdev = rbo->rdev; +- if (bo->mem.mem_type == TTM_PL_VRAM) { +- size = bo->mem.num_pages << PAGE_SHIFT; +- offset = bo->mem.start << PAGE_SHIFT; +- if ((offset + size) > rdev->mc.visible_vram_size) { +- /* hurrah the memory is not visible ! */ +- radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_VRAM); +- rbo->placement.lpfn = rdev->mc.visible_vram_size >> PAGE_SHIFT; +- r = ttm_bo_validate(bo, &rbo->placement, false, false); +- if (unlikely(r != 0)) +- return r; +- offset = bo->mem.start << PAGE_SHIFT; +- /* this should not happen */ +- if ((offset + size) > rdev->mc.visible_vram_size) +- return -EINVAL; +- } ++ if (bo->mem.mem_type != TTM_PL_VRAM) ++ return 0; ++ ++ size = bo->mem.num_pages << PAGE_SHIFT; ++ offset = bo->mem.start << PAGE_SHIFT; ++ if ((offset + size) <= rdev->mc.visible_vram_size) ++ return 0; ++ ++ /* hurrah the memory is not visible ! */ ++ radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_VRAM); ++ rbo->placement.lpfn = rdev->mc.visible_vram_size >> PAGE_SHIFT; ++ r = ttm_bo_validate(bo, &rbo->placement, false, false); ++ if (unlikely(r == -ENOMEM)) { ++ radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_GTT); ++ return ttm_bo_validate(bo, &rbo->placement, false, false); ++ } else if (unlikely(r != 0)) { ++ return r; + } ++ ++ offset = bo->mem.start << PAGE_SHIFT; ++ /* this should never happen */ ++ if ((offset + size) > rdev->mc.visible_vram_size) ++ return -EINVAL; ++ + return 0; + } + diff --git a/queue-3.14/drm-radeon-fix-register-typo-on-si.patch b/queue-3.14/drm-radeon-fix-register-typo-on-si.patch new file mode 100644 index 00000000000..213c77fabda --- /dev/null +++ b/queue-3.14/drm-radeon-fix-register-typo-on-si.patch @@ -0,0 +1,35 @@ +From 4955bb073f1be6dd884b5d10041ba4bade6495bf Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Mon, 5 May 2014 16:40:42 -0400 +Subject: drm/radeon: fix register typo on si +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Alex Deucher + +commit 4955bb073f1be6dd884b5d10041ba4bade6495bf upstream. + +Probably a copy paste typo. + +Signed-off-by: Alex Deucher +Signed-off-by: Christian König +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/sid.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/radeon/sid.h ++++ b/drivers/gpu/drm/radeon/sid.h +@@ -107,8 +107,8 @@ + #define SPLL_CHG_STATUS (1 << 1) + #define SPLL_CNTL_MODE 0x618 + #define SPLL_SW_DIR_CONTROL (1 << 0) +-# define SPLL_REFCLK_SEL(x) ((x) << 8) +-# define SPLL_REFCLK_SEL_MASK 0xFF00 ++# define SPLL_REFCLK_SEL(x) ((x) << 26) ++# define SPLL_REFCLK_SEL_MASK (3 << 26) + + #define CG_SPLL_SPREAD_SPECTRUM 0x620 + #define SSEN (1 << 0) diff --git a/queue-3.14/drm-radeon-handle-non-vga-class-pci-devices-with-atrm.patch b/queue-3.14/drm-radeon-handle-non-vga-class-pci-devices-with-atrm.patch new file mode 100644 index 00000000000..a5bd9079291 --- /dev/null +++ b/queue-3.14/drm-radeon-handle-non-vga-class-pci-devices-with-atrm.patch @@ -0,0 +1,49 @@ +From d8ade3526b2aa0505132c404c05a38b73ea15490 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Thu, 8 May 2014 20:04:03 -0400 +Subject: drm/radeon: handle non-VGA class pci devices with ATRM +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Alex Deucher + +commit d8ade3526b2aa0505132c404c05a38b73ea15490 upstream. + +Newer PX systems have non-VGA pci class dGPUs. Update +the ATRM fetch method to handle those cases. + +bug: +https://bugzilla.kernel.org/show_bug.cgi?id=75401 + +Signed-off-by: Alex Deucher +Signed-off-by: Christian König +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_bios.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +--- a/drivers/gpu/drm/radeon/radeon_bios.c ++++ b/drivers/gpu/drm/radeon/radeon_bios.c +@@ -196,6 +196,20 @@ static bool radeon_atrm_get_bios(struct + } + } + ++ if (!found) { ++ while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_OTHER << 8, pdev)) != NULL) { ++ dhandle = ACPI_HANDLE(&pdev->dev); ++ if (!dhandle) ++ continue; ++ ++ status = acpi_get_handle(dhandle, "ATRM", &atrm_handle); ++ if (!ACPI_FAILURE(status)) { ++ found = true; ++ break; ++ } ++ } ++ } ++ + if (!found) + return false; + diff --git a/queue-3.14/drm-radeon-pm-don-t-allow-debugfs-sysfs-access-when-px-card-is-off-v2.patch b/queue-3.14/drm-radeon-pm-don-t-allow-debugfs-sysfs-access-when-px-card-is-off-v2.patch new file mode 100644 index 00000000000..4785b90480b --- /dev/null +++ b/queue-3.14/drm-radeon-pm-don-t-allow-debugfs-sysfs-access-when-px-card-is-off-v2.patch @@ -0,0 +1,131 @@ +From 4f2f203976964e267dc477de6648bdb3acd2b74b Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Mon, 19 May 2014 19:21:29 -0400 +Subject: drm/radeon/pm: don't allow debugfs/sysfs access when PX card is off (v2) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Alex Deucher + +commit 4f2f203976964e267dc477de6648bdb3acd2b74b upstream. + +When the PX card is off don't try and access it. Avoid hw access +to the card while it's off (e.g., reading back invalid temperature). + +v2: be less strict + +bug: +https://bugzilla.kernel.org/show_bug.cgi?id=76321 + +Signed-off-by: Alex Deucher +Signed-off-by: Christian König +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/radeon_pm.c | 42 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 41 insertions(+), 1 deletion(-) + +--- a/drivers/gpu/drm/radeon/radeon_pm.c ++++ b/drivers/gpu/drm/radeon/radeon_pm.c +@@ -361,6 +361,11 @@ static ssize_t radeon_set_pm_profile(str + struct drm_device *ddev = dev_get_drvdata(dev); + struct radeon_device *rdev = ddev->dev_private; + ++ /* Can't set profile when the card is off */ ++ if ((rdev->flags & RADEON_IS_PX) && ++ (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) ++ return -EINVAL; ++ + mutex_lock(&rdev->pm.mutex); + if (rdev->pm.pm_method == PM_METHOD_PROFILE) { + if (strncmp("default", buf, strlen("default")) == 0) +@@ -409,6 +414,13 @@ static ssize_t radeon_set_pm_method(stru + struct drm_device *ddev = dev_get_drvdata(dev); + struct radeon_device *rdev = ddev->dev_private; + ++ /* Can't set method when the card is off */ ++ if ((rdev->flags & RADEON_IS_PX) && ++ (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) { ++ count = -EINVAL; ++ goto fail; ++ } ++ + /* we don't support the legacy modes with dpm */ + if (rdev->pm.pm_method == PM_METHOD_DPM) { + count = -EINVAL; +@@ -446,6 +458,10 @@ static ssize_t radeon_get_dpm_state(stru + struct radeon_device *rdev = ddev->dev_private; + enum radeon_pm_state_type pm = rdev->pm.dpm.user_state; + ++ if ((rdev->flags & RADEON_IS_PX) && ++ (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) ++ return snprintf(buf, PAGE_SIZE, "off\n"); ++ + return snprintf(buf, PAGE_SIZE, "%s\n", + (pm == POWER_STATE_TYPE_BATTERY) ? "battery" : + (pm == POWER_STATE_TYPE_BALANCED) ? "balanced" : "performance"); +@@ -459,6 +475,11 @@ static ssize_t radeon_set_dpm_state(stru + struct drm_device *ddev = dev_get_drvdata(dev); + struct radeon_device *rdev = ddev->dev_private; + ++ /* Can't set dpm state when the card is off */ ++ if ((rdev->flags & RADEON_IS_PX) && ++ (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) ++ return -EINVAL; ++ + mutex_lock(&rdev->pm.mutex); + if (strncmp("battery", buf, strlen("battery")) == 0) + rdev->pm.dpm.user_state = POWER_STATE_TYPE_BATTERY; +@@ -485,6 +506,10 @@ static ssize_t radeon_get_dpm_forced_per + struct radeon_device *rdev = ddev->dev_private; + enum radeon_dpm_forced_level level = rdev->pm.dpm.forced_level; + ++ if ((rdev->flags & RADEON_IS_PX) && ++ (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) ++ return snprintf(buf, PAGE_SIZE, "off\n"); ++ + return snprintf(buf, PAGE_SIZE, "%s\n", + (level == RADEON_DPM_FORCED_LEVEL_AUTO) ? "auto" : + (level == RADEON_DPM_FORCED_LEVEL_LOW) ? "low" : "high"); +@@ -500,6 +525,11 @@ static ssize_t radeon_set_dpm_forced_per + enum radeon_dpm_forced_level level; + int ret = 0; + ++ /* Can't force performance level when the card is off */ ++ if ((rdev->flags & RADEON_IS_PX) && ++ (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) ++ return -EINVAL; ++ + mutex_lock(&rdev->pm.mutex); + if (strncmp("low", buf, strlen("low")) == 0) { + level = RADEON_DPM_FORCED_LEVEL_LOW; +@@ -538,8 +568,14 @@ static ssize_t radeon_hwmon_show_temp(st + char *buf) + { + struct radeon_device *rdev = dev_get_drvdata(dev); ++ struct drm_device *ddev = rdev->ddev; + int temp; + ++ /* Can't get temperature when the card is off */ ++ if ((rdev->flags & RADEON_IS_PX) && ++ (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) ++ return -EINVAL; ++ + if (rdev->asic->pm.get_temperature) + temp = radeon_get_temperature(rdev); + else +@@ -1591,8 +1627,12 @@ static int radeon_debugfs_pm_info(struct + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct radeon_device *rdev = dev->dev_private; ++ struct drm_device *ddev = rdev->ddev; + +- if (rdev->pm.dpm_enabled) { ++ if ((rdev->flags & RADEON_IS_PX) && ++ (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) { ++ seq_printf(m, "PX asic powered off\n"); ++ } else if (rdev->pm.dpm_enabled) { + mutex_lock(&rdev->pm.mutex); + if (rdev->asic->dpm.debugfs_print_current_performance_level) + radeon_dpm_debugfs_print_current_performance_level(rdev, m); diff --git a/queue-3.14/hwmon-ntc_thermistor-fix-dependencies.patch b/queue-3.14/hwmon-ntc_thermistor-fix-dependencies.patch new file mode 100644 index 00000000000..520577d0247 --- /dev/null +++ b/queue-3.14/hwmon-ntc_thermistor-fix-dependencies.patch @@ -0,0 +1,66 @@ +From 59cf4243e557aa64ab2ef51280454aa1f3828e14 Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Sun, 25 May 2014 17:23:08 +0200 +Subject: hwmon: (ntc_thermistor) Fix dependencies + +From: Jean Delvare + +commit 59cf4243e557aa64ab2ef51280454aa1f3828e14 upstream. + +In commit 9e8269de, support was added for ntc_thermistor devices being +declared in the device tree and implemented on top of IIO. With that +change, a dependency was added to the ntc_thermistor driver: + + depends on (!OF && !IIO) || (OF && IIO) + +This construct has the drawback that the driver can no longer be +selected when OF is set and IIO isn't, nor when IIO is set and OF is +not. This is a regression for the original users of the driver. + +As the new code depends on IIO and is useless without OF, include it +only if both are enabled, and set the dependencies accordingly. This +is clearer, more simple and more correct. + +Signed-off-by: Jean Delvare +Fixes: 9e8269de hwmon: (ntc_thermistor) Add DT with IIO support to NTC thermistor driver +Reviewed-by: Guenter Roeck +Cc: Naveen Krishna Chatradhi +Cc: Doug Anderson +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/Kconfig | 2 +- + drivers/hwmon/ntc_thermistor.c | 4 +++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/hwmon/Kconfig ++++ b/drivers/hwmon/Kconfig +@@ -971,7 +971,7 @@ config SENSORS_NCT6775 + + config SENSORS_NTC_THERMISTOR + tristate "NTC thermistor support" +- depends on (!OF && !IIO) || (OF && IIO) ++ depends on !OF || IIO=n || IIO + help + This driver supports NTC thermistors sensor reading and its + interpretation. The driver can also monitor the temperature and +--- a/drivers/hwmon/ntc_thermistor.c ++++ b/drivers/hwmon/ntc_thermistor.c +@@ -141,7 +141,7 @@ struct ntc_data { + char name[PLATFORM_NAME_SIZE]; + }; + +-#ifdef CONFIG_OF ++#if defined(CONFIG_OF) && IS_ENABLED(CONFIG_IIO) + static int ntc_adc_iio_read(struct ntc_thermistor_platform_data *pdata) + { + struct iio_channel *channel = pdata->chan; +@@ -223,6 +223,8 @@ ntc_thermistor_parse_dt(struct platform_ + return NULL; + } + ++#define ntc_match NULL ++ + static void ntc_iio_channel_release(struct ntc_thermistor_platform_data *pdata) + { } + #endif diff --git a/queue-3.14/hwmon-ntc_thermistor-fix-of-device-id-mapping.patch b/queue-3.14/hwmon-ntc_thermistor-fix-of-device-id-mapping.patch new file mode 100644 index 00000000000..a3059b1b0d5 --- /dev/null +++ b/queue-3.14/hwmon-ntc_thermistor-fix-of-device-id-mapping.patch @@ -0,0 +1,63 @@ +From ead82d6792ef5c600d535bca6ec50a4da14ff7c7 Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Sun, 25 May 2014 17:23:08 +0200 +Subject: hwmon: (ntc_thermistor) Fix OF device ID mapping + +From: Jean Delvare + +commit ead82d6792ef5c600d535bca6ec50a4da14ff7c7 upstream. + +The mapping from OF device IDs to platform device IDs is wrong. +TYPE_NCPXXWB473 is 0, TYPE_NCPXXWL333 is 1, so +ntc_thermistor_id[TYPE_NCPXXWB473] is { "ncp15wb473", TYPE_NCPXXWB473 } +while +ntc_thermistor_id[TYPE_NCPXXWL333] is { "ncp18wb473", TYPE_NCPXXWB473 }. + +So the name is wrong for all but the "ntc,ncp15wb473" entry, and the +type is wrong for the "ntc,ncp15wl333" entry. + +So map the entries by index, it is neither elegant nor robust but at +least it is correct. + +Signed-off-by: Jean Delvare +Fixes: 9e8269de hwmon: (ntc_thermistor) Add DT with IIO support to NTC thermistor driver +Reviewed-by: Guenter Roeck +Cc: Naveen Krishna Chatradhi +Cc: Doug Anderson +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/ntc_thermistor.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +--- a/drivers/hwmon/ntc_thermistor.c ++++ b/drivers/hwmon/ntc_thermistor.c +@@ -44,6 +44,7 @@ struct ntc_compensation { + unsigned int ohm; + }; + ++/* Order matters, ntc_match references the entries by index */ + static const struct platform_device_id ntc_thermistor_id[] = { + { "ncp15wb473", TYPE_NCPXXWB473 }, + { "ncp18wb473", TYPE_NCPXXWB473 }, +@@ -163,15 +164,15 @@ static int ntc_adc_iio_read(struct ntc_t + + static const struct of_device_id ntc_match[] = { + { .compatible = "ntc,ncp15wb473", +- .data = &ntc_thermistor_id[TYPE_NCPXXWB473] }, ++ .data = &ntc_thermistor_id[0] }, + { .compatible = "ntc,ncp18wb473", +- .data = &ntc_thermistor_id[TYPE_NCPXXWB473] }, ++ .data = &ntc_thermistor_id[1] }, + { .compatible = "ntc,ncp21wb473", +- .data = &ntc_thermistor_id[TYPE_NCPXXWB473] }, ++ .data = &ntc_thermistor_id[2] }, + { .compatible = "ntc,ncp03wb473", +- .data = &ntc_thermistor_id[TYPE_NCPXXWB473] }, ++ .data = &ntc_thermistor_id[3] }, + { .compatible = "ntc,ncp15wl333", +- .data = &ntc_thermistor_id[TYPE_NCPXXWL333] }, ++ .data = &ntc_thermistor_id[4] }, + { }, + }; + MODULE_DEVICE_TABLE(of, ntc_match); diff --git a/queue-3.14/scsi-scsi_transport_sas-move-bsg-destructor-into-sas_rphy_remove.patch b/queue-3.14/scsi-scsi_transport_sas-move-bsg-destructor-into-sas_rphy_remove.patch new file mode 100644 index 00000000000..965a098d545 --- /dev/null +++ b/queue-3.14/scsi-scsi_transport_sas-move-bsg-destructor-into-sas_rphy_remove.patch @@ -0,0 +1,75 @@ +From 6aa6caff30f5dcb9e55b03b9710c30b83750cae5 Mon Sep 17 00:00:00 2001 +From: Joe Lawrence +Date: Thu, 22 May 2014 17:30:54 -0400 +Subject: SCSI: scsi_transport_sas: move bsg destructor into sas_rphy_remove + +From: Joe Lawrence + +commit 6aa6caff30f5dcb9e55b03b9710c30b83750cae5 upstream. + +The recent change in sysfs, bcdde7e221a8750f9b62b6d0bd31b72ea4ad9309 +"sysfs: make __sysfs_remove_dir() recursive" revealed an asymmetric +rphy device creation/deletion sequence in scsi_transport_sas: + + modprobe mpt2sas + sas_rphy_add + device_add A rphy->dev + device_add B sas_device transport class + device_add C sas_end_device transport class + device_add D bsg class + + rmmod mpt2sas + sas_rphy_delete + sas_rphy_remove + device_del B + device_del C + device_del A + sysfs_remove_group recursive sysfs dir removal + sas_rphy_free + device_del D warning + + where device A is the parent of B, C, and D. + +When sas_rphy_free tries to unregister the bsg request queue (device D +above), the ensuing sysfs cleanup discovers that its sysfs group has +already been removed and emits a warning, "sysfs group... not found for +kobject 'end_device-X:0'". + +Since bsg creation is a side effect of sas_rphy_add, move its +complementary removal call into sas_rphy_remove. This imposes the +following tear-down order for the devices above: D, B, C, A. + +Note the sas_device and sas_end_device transport class devices (B and C +above) are created and destroyed both via the list match traversal in +attribute_container_device_trigger, so the order in which they are +handled is fixed. This is fine as long as they are deleted before their +parent device. + +Signed-off-by: Joe Lawrence +Acked-by: Dan Williams +Signed-off-by: James Bottomley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/scsi_transport_sas.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/scsi/scsi_transport_sas.c ++++ b/drivers/scsi/scsi_transport_sas.c +@@ -1621,8 +1621,6 @@ void sas_rphy_free(struct sas_rphy *rphy + list_del(&rphy->list); + mutex_unlock(&sas_host->lock); + +- sas_bsg_remove(shost, rphy); +- + transport_destroy_device(dev); + + put_device(dev); +@@ -1681,6 +1679,7 @@ sas_rphy_remove(struct sas_rphy *rphy) + } + + sas_rphy_unlink(rphy); ++ sas_bsg_remove(NULL, rphy); + transport_remove_device(dev); + device_del(dev); + } diff --git a/queue-3.14/series b/queue-3.14/series index f9fe2366397..a739c4bbbf7 100644 --- a/queue-3.14/series +++ b/queue-3.14/series @@ -5,3 +5,12 @@ perf-prevent-false-warning-in-perf_swevent_add.patch perf-limit-perf_event_attr-sample_period-to-63-bits.patch perf-fix-race-in-removing-an-event.patch mm-memory-failure.c-fix-memory-leak-by-race-between-poison-and-unpoison.patch +documentation-fix-docbooks-...-building.patch +hwmon-ntc_thermistor-fix-dependencies.patch +hwmon-ntc_thermistor-fix-of-device-id-mapping.patch +drm-gf119-disp-fix-nasty-bug-which-can-clobber-sor0-s-clock-setup.patch +drm-radeon-fix-register-typo-on-si.patch +drm-radeon-also-try-gart-for-cpu-accessed-buffers.patch +drm-radeon-handle-non-vga-class-pci-devices-with-atrm.patch +drm-radeon-pm-don-t-allow-debugfs-sysfs-access-when-px-card-is-off-v2.patch +scsi-scsi_transport_sas-move-bsg-destructor-into-sas_rphy_remove.patch