From: Greg Kroah-Hartman Date: Thu, 7 May 2020 20:34:17 +0000 (+0200) Subject: 5.4-stable patches X-Git-Tag: v4.4.223~24 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ac622a70f122e37e74d12d95d30ffc7178635bc9;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: mfd-intel-lpss-use-devm_ioremap_uc-for-mmio.patch revert-software-node-simplify-software_node_release-function.patch --- diff --git a/queue-5.4/mfd-intel-lpss-use-devm_ioremap_uc-for-mmio.patch b/queue-5.4/mfd-intel-lpss-use-devm_ioremap_uc-for-mmio.patch new file mode 100644 index 00000000000..ed03a5afa6d --- /dev/null +++ b/queue-5.4/mfd-intel-lpss-use-devm_ioremap_uc-for-mmio.patch @@ -0,0 +1,49 @@ +From a8ff78f7f773142eb8a8befe5a95dd6858ebd635 Mon Sep 17 00:00:00 2001 +From: Tuowen Zhao +Date: Wed, 16 Oct 2019 15:06:29 -0600 +Subject: mfd: intel-lpss: Use devm_ioremap_uc for MMIO + +From: Tuowen Zhao + +commit a8ff78f7f773142eb8a8befe5a95dd6858ebd635 upstream. + +Some BIOS erroneously specifies write-combining BAR for intel-lpss-pci +in MTRR. This will cause the system to hang during boot. If possible, +this bug could be corrected with a firmware update. + +This patch use devm_ioremap_uc to overwrite/ignore the MTRR settings +by forcing the use of strongly uncachable pages for intel-lpss. + +The BIOS bug is present on Dell XPS 13 7390 2-in-1: + +[ 0.001734] 5 base 4000000000 mask 6000000000 write-combining + +4000000000-7fffffffff : PCI Bus 0000:00 + 4000000000-400fffffff : 0000:00:02.0 (i915) + 4010000000-4010000fff : 0000:00:15.0 (intel-lpss-pci) + +Link: https://bugzilla.kernel.org/show_bug.cgi?id=203485 +Cc: # v4.19+ +Tested-by: AceLan Kao +Signed-off-by: Tuowen Zhao +Acked-by: Mika Westerberg +Acked-by: Andy Shevchenko +Tested-by: Roman Gilg +Signed-off-by: Lee Jones +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mfd/intel-lpss.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mfd/intel-lpss.c ++++ b/drivers/mfd/intel-lpss.c +@@ -384,7 +384,7 @@ int intel_lpss_probe(struct device *dev, + if (!lpss) + return -ENOMEM; + +- lpss->priv = devm_ioremap(dev, info->mem->start + LPSS_PRIV_OFFSET, ++ lpss->priv = devm_ioremap_uc(dev, info->mem->start + LPSS_PRIV_OFFSET, + LPSS_PRIV_SIZE); + if (!lpss->priv) + return -ENOMEM; diff --git a/queue-5.4/revert-software-node-simplify-software_node_release-function.patch b/queue-5.4/revert-software-node-simplify-software_node_release-function.patch new file mode 100644 index 00000000000..b9bd91ad87c --- /dev/null +++ b/queue-5.4/revert-software-node-simplify-software_node_release-function.patch @@ -0,0 +1,92 @@ +From 7589238a8cf37331607c3222a64ac3140b29532d Mon Sep 17 00:00:00 2001 +From: Brendan Higgins +Date: Thu, 27 Feb 2020 16:00:01 -0800 +Subject: Revert "software node: Simplify software_node_release() function" + +From: Brendan Higgins + +commit 7589238a8cf37331607c3222a64ac3140b29532d upstream. + +This reverts commit 3df85a1ae51f6b256982fe9d17c2dc5bfb4cc402. + +The reverted commit says "It's possible to release the node ID +immediately when fwnode_remove_software_node() is called, no need to +wait for software_node_release() with that." However, releasing the node +ID before waiting for software_node_release() to be called causes the +node ID to be released before the kobject and the underlying sysfs +entry; this means there is a period of time where a sysfs entry exists +that is associated with an unallocated node ID. + +Once consequence of this is that there is a race condition where it is +possible to call fwnode_create_software_node() with no parent node +specified (NULL) and have it fail with -EEXIST because the node ID that +was assigned is still associated with a stale sysfs entry that hasn't +been cleaned up yet. + +Although it is difficult to reproduce this race condition under normal +conditions, it can be deterministically reproduced with the following +minconfig on UML: + +CONFIG_KUNIT_DRIVER_PE_TEST=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_OBJECTS=y +CONFIG_DEBUG_OBJECTS_TIMERS=y +CONFIG_DEBUG_KOBJECT_RELEASE=y +CONFIG_KUNIT=y + +Running the tests with this configuration causes the following failure: + + +kobject: 'node0' ((____ptrval____)): kobject_release, parent (____ptrval____) (delayed 400) + ok 1 - pe_test_uints +sysfs: cannot create duplicate filename '/kernel/software_nodes/node0' +CPU: 0 PID: 28 Comm: kunit_try_catch Not tainted 5.6.0-rc3-next-20200227 #14 + +kobject_add_internal failed for node0 with -EEXIST, don't try to register things with the same name in the same directory. +kobject: 'node0' ((____ptrval____)): kobject_release, parent (____ptrval____) (delayed 100) + # pe_test_uint_arrays: ASSERTION FAILED at drivers/base/test/property-entry-test.c:123 + Expected node is not error, but is: -17 + not ok 2 - pe_test_uint_arrays + + +Reported-by: Heidi Fahim +Signed-off-by: Brendan Higgins +Reviewed-by: Heikki Krogerus +Cc: 5.3+ # 5.3+ +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/base/swnode.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +--- a/drivers/base/swnode.c ++++ b/drivers/base/swnode.c +@@ -679,6 +679,13 @@ static void software_node_release(struct + { + struct swnode *swnode = kobj_to_swnode(kobj); + ++ if (swnode->parent) { ++ ida_simple_remove(&swnode->parent->child_ids, swnode->id); ++ list_del(&swnode->entry); ++ } else { ++ ida_simple_remove(&swnode_root_ids, swnode->id); ++ } ++ + if (swnode->allocated) { + property_entries_free(swnode->node->properties); + kfree(swnode->node); +@@ -844,13 +851,6 @@ void fwnode_remove_software_node(struct + if (!swnode) + return; + +- if (swnode->parent) { +- ida_simple_remove(&swnode->parent->child_ids, swnode->id); +- list_del(&swnode->entry); +- } else { +- ida_simple_remove(&swnode_root_ids, swnode->id); +- } +- + kobject_put(&swnode->kobj); + } + EXPORT_SYMBOL_GPL(fwnode_remove_software_node); diff --git a/queue-5.4/series b/queue-5.4/series index 6b6f52299f5..f2de96f8b66 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -30,3 +30,5 @@ net-systemport-suppress-warnings-on-failed-rx-skb-al.patch drm-i915-extend-wadisabledarbfclkgating-to-icl-ehl-tgl.patch sctp-fix-shutdown-ctsn-ack-in-the-peer-restart-case.patch drm-amdgpu-fix-oops-when-pp_funcs-is-unset-in-acpi-event.patch +revert-software-node-simplify-software_node_release-function.patch +mfd-intel-lpss-use-devm_ioremap_uc-for-mmio.patch