kernel/resource.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
A warning is raised when __request_region() detects a conflict with a
resource whose resource.desc is IORES_DESC_DEVICE_PRIVATE_MEMORY.
But this warning is only valid for iomem_resources.
The hmem device resource uses resource.desc as the numa node id, which can
cause spurious warnings.
This change fixes this by restricting the warning to only iomem_resource.
This also adds a missing new line to the warning message.
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
---
kernel/resource.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/kernel/resource.c b/kernel/resource.c
index 8d3e6ed0bdc1..f9bb5481501a 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -1279,8 +1279,9 @@ static int __request_region_locked(struct resource *res, struct resource *parent
* become unavailable to other users. Conflicts are
* not expected. Warn to aid debugging if encountered.
*/
- if (conflict->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY) {
- pr_warn("Unaddressable device %s %pR conflicts with %pR",
+ if (parent == &iomem_resource &&
+ conflict->desc == IORES_DESC_DEVICE_PRIVATE_MEMORY) {
+ pr_warn("Unaddressable device %s %pR conflicts with %pR\n",
conflict->name, conflict, res);
}
if (conflict != parent) {
--
2.34.1
On Sat, 19 Jul 2025 20:26:04 +0900 Akinobu Mita <akinobu.mita@gmail.com> wrote: > A warning is raised when __request_region() detects a conflict with a > resource whose resource.desc is IORES_DESC_DEVICE_PRIVATE_MEMORY. > > But this warning is only valid for iomem_resources. > The hmem device resource uses resource.desc as the numa node id, which can > cause spurious warnings. > > This change fixes this by restricting the warning to only iomem_resource. > This also adds a missing new line to the warning message. What are the circumstance which cause this warning? Are real world users hitting this? If so, should we backport this fix into earlier kernels?
2025年7月20日(日) 8:31 Andrew Morton <akpm@linux-foundation.org>: > > On Sat, 19 Jul 2025 20:26:04 +0900 Akinobu Mita <akinobu.mita@gmail.com> wrote: > > > A warning is raised when __request_region() detects a conflict with a > > resource whose resource.desc is IORES_DESC_DEVICE_PRIVATE_MEMORY. > > > > But this warning is only valid for iomem_resources. > > The hmem device resource uses resource.desc as the numa node id, which can > > cause spurious warnings. > > > > This change fixes this by restricting the warning to only iomem_resource. > > This also adds a missing new line to the warning message. > > What are the circumstance which cause this warning? Are real world > users hitting this? If so, should we backport this fix into earlier > kernels? This warning actually appeared on a machine with multiple cxl memory expanders. One of the NUMA node id is 6, which is the same as the value of IORES_DESC_DEVICE_PRIVATE_MEMORY. In this environment it was just a spurious warning, but when I saw the warning I suspected a real problem so it's better to fix it. Fixes: b926b7f3baec ("mm/resource: Move HMM pr_debug() deeper into resource code")
Akinobu Mita wrote: > 2025年7月20日(日) 8:31 Andrew Morton <akpm@linux-foundation.org>: > > > > On Sat, 19 Jul 2025 20:26:04 +0900 Akinobu Mita <akinobu.mita@gmail.com> wrote: > > > > > A warning is raised when __request_region() detects a conflict with a > > > resource whose resource.desc is IORES_DESC_DEVICE_PRIVATE_MEMORY. > > > > > > But this warning is only valid for iomem_resources. > > > The hmem device resource uses resource.desc as the numa node id, which can > > > cause spurious warnings. > > > > > > This change fixes this by restricting the warning to only iomem_resource. > > > This also adds a missing new line to the warning message. > > > > What are the circumstance which cause this warning? Are real world > > users hitting this? If so, should we backport this fix into earlier > > kernels? > > This warning actually appeared on a machine with multiple cxl memory expanders. > One of the NUMA node id is 6, which is the same as the value of > IORES_DESC_DEVICE_PRIVATE_MEMORY. > > In this environment it was just a spurious warning, but when I saw the warning > I suspected a real problem so it's better to fix it. > > Fixes: b926b7f3baec ("mm/resource: Move HMM pr_debug() deeper into > resource code") This should be: Fixes: 7dab174e2e27 ("dax/hmem: Move hmem device registration to dax_hmem.ko") ...as that is the change that violates the assumptions of __request_region(). You can add: Reviewed-by: Dan Williams <dan.j.williams@intel.com>
© 2016 - 2025 Red Hat, Inc.