From: Bjorn Helgaas <helgaas@kernel.org>
To: Yunsheng Lin <linyunsheng@huawei.com>
Cc: Paul Menzel <pmenzel@molgen.mpg.de>,
Bjorn Helgaas <bhelgaas@google.com>,
linux-pci@vger.kernel.org
Subject: Re: Linux warns `Unknown NUMA node; performance will be reduced`
Date: Wed, 4 Mar 2026 15:18:47 -0600 [thread overview]
Message-ID: <20260304211847.GA36447@bhelgaas> (raw)
In-Reply-To: <b35698a4-4ac0-4db4-86a0-db794047e7c4@huawei.com>
On Wed, Mar 04, 2026 at 09:34:48AM +0800, Yunsheng Lin wrote:
> On 2026/3/4 5:55, Bjorn Helgaas wrote:
> > [+cc Yunsheng, author of ad5086108b9f,
> > +bcc commenters on https://bugzilla.kernel.org/show_bug.cgi?id=218951,
> > see the email thread at
> > https://lore.kernel.org/all/a154f694-c48b-4b3b-809f-4b74ec86a924@molgen.mpg.de]
> >
> > On Sun, Jun 09, 2024 at 10:31:05AM +0200, Paul Menzel wrote:
> >> Dear Linux folks,
> >>
> >> On the servers below Linux warns:
> >>
> >> Unknown NUMA node; performance will be reduced
> >>
> >> 1. [ 0.000000] DMI: Dell Inc. PowerEdge R730/0H21J3, BIOS 2.13.0
> >> 05/14/2021
> >> 2. [ 0.000000] DMI: Dell Inc. PowerEdge R730/0H21J3, BIOS 2.2.5
> >> 09/06/2016
> >> 3. [ 0.000000] DMI: Dell Inc. PowerEdge R730xd/0WCJNT, BIOS 2.3.4
> >> 11/08/2016
> >> 4. [ 0.000000] DMI: Dell Inc. PowerEdge R910/0KYD3D, BIOS 2.10.0
> >> 08/29/2013
> >> 5. [ 0.000000] DMI: Dell Inc. PowerEdge R930/0T55KM, BIOS 2.8.1
> >> 01/02/2020
> >> 6. [ 0.000000] DMI: Dell Inc. PowerEdge T630/0NT78X, BIOS 2.5.4
> >> 08/17/2017
> >> 7. [ 0.000000] DMI: Dell Inc. PowerEdge T630/0W9WXC, BIOS 1.5.4
> >> 10/04/2015
> >> 8. [ 0.000000] DMI: Dell Inc. PowerEdge T630/0W9WXC, BIOS 2.11.0
> >> 12/23/2019
> >> 9. [ 0.000000] DMI: Dell Inc. PowerEdge T630/0W9WXC, BIOS 2.1.5
> >> 04/13/2016
> >> 10. [ 0.000000] DMI: Supermicro Super Server/X13SAE, BIOS 2.0 10/17/2022
> >
> > Similar reports in the bugzilla for:
> >
> > Host: VMware VM Ubuntu 24.04.1
> > CPU: Intel(R) Xeon(R) Silver 4310 CPU @ 2.10GHz
> > Kernel: 6.11.0-rc6
> >
> > and
> >
> > Lenovo P700 workstation
> > 6.19.5 kernel
> >
> > ad5086108b9f ("PCI: Warn if no host bridge NUMA node info") added this
> > "Unknown NUMA node; performance will be reduced" warning.
> >
> > The problem is that firmware didn't tell us anything about which CPUs
> > are closest to this PCI host bridge, so we can't try to optimize by
> > running the driver on a CPU that's close to the device.
> >
> > The kernel can't figure out this locality information itself, so
> > there's nothing we can really do in the kernel, and there's nothing
> > users can do either other than check for BIOS updates.
> >
> > What if we just downgraded the message to "info"? And/or we could
> > reword this to be less alarming.
>
> If I recalled it correctly, the purpose of the above warning is about
> having some kind of pressure for vendor to update the BIOS and fix
> that, perhaps the warning can be reworded to something like below
> so that users can know where they get the help to fix that?
>
> "Unknown NUMA node; performance will be reduced, please check it with
> the BIOS vendor."
Right. I'm just not sure that kind of pressure on vendors is
effective, and I'm tired of fielding reports of things we can't fix
and likely aren't even problems at all.
In Paul's Dell T630 case, where we have the dmesg in email and the
acpidump in https://bugzilla.kernel.org/show_bug.cgi?id=218951, there
are four host bridges and two supply _PXM and two don't:
ACPI: PCI Root Bridge [UNC1] (domain 0000 [bus ff])
pci_bus 0000:ff: Unknown NUMA node; performance will be reduced
ACPI: PCI Root Bridge [UNC0] (domain 0000 [bus 7f])
pci_bus 0000:7f: Unknown NUMA node; performance will be reduced
ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-7e])
ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 80-fe])
I decoded the acpidump Paul attached; it has _PXM for PCI0 and PCI1.
UNC0 and UNC1 don't have any I/O or memory windows at all, so they
look like they're for internal "devices" that only have config space.
Since Dell *did* supply _PXM for PCI0 and PCI1, my guess is that
there's no real reason to supply it for UNC0 and UNC1.
I think we should do something like the patch below, so the dmesg
would look like this instead -- we log the NUMA node when we know it
and skip it otherwise:
ACPI: PCI Root Bridge [UNC1] (domain 0000 [bus ff])
PCI host bridge to bus 0000:ff
ACPI: PCI Root Bridge [UNC0] (domain 0000 [bus 7f])
PCI host bridge to bus 0000:7f
ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-7e])
PCI host bridge to bus 0000:00 NUMA node 0
ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 80-fe])
PCI host bridge to bus 0000:80 NUMA node 1
Bjorn
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index bccc7a4bdd79..e3e81926a6f3 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -993,9 +993,9 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
LIST_HEAD(resources);
struct resource *res, *next_res;
bool bus_registered = false;
- char addr[64], *fmt;
+ char numa[32], addr[64], *fmt;
const char *name;
- int err;
+ int err, node;
bus = pci_alloc_bus(NULL);
if (!bus)
@@ -1071,13 +1071,17 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
/* Create legacy_io and legacy_mem files for this bus */
pci_create_legacy_files(bus);
+ numa[0] = '\0';
+ if (nr_node_ids > 1) {
+ node = pcibus_to_node(bus);
+ if (node != NUMA_NO_NODE)
+ snprintf(numa, sizeof(numa), " on NUMA node %u", node);
+ }
+
if (parent)
- dev_info(parent, "PCI host bridge to bus %s\n", name);
+ dev_info(parent, "PCI host bridge to bus %s%s\n", name, numa);
else
- pr_info("PCI host bridge to bus %s\n", name);
-
- if (nr_node_ids > 1 && pcibus_to_node(bus) == NUMA_NO_NODE)
- dev_warn(&bus->dev, "Unknown NUMA node; performance will be reduced\n");
+ pr_info("PCI host bridge to bus %s%s\n", name, numa);
/* Check if the boot configuration by FW needs to be preserved */
bridge->preserve_config = pci_preserve_config(bridge);
prev parent reply other threads:[~2026-03-04 21:18 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-09 8:31 Linux warns `Unknown NUMA node; performance will be reduced` Paul Menzel
2024-06-10 19:42 ` Bjorn Helgaas
2024-06-10 20:27 ` Paul Menzel
2024-06-11 3:05 ` Yunsheng Lin
2024-06-11 22:31 ` Bjorn Helgaas
2025-08-05 21:39 ` Paul Menzel
2024-06-11 15:11 ` Bjorn Helgaas
2024-06-18 15:19 ` Paul Menzel
2026-03-03 21:55 ` Bjorn Helgaas
2026-03-04 1:34 ` Yunsheng Lin
2026-03-04 21:18 ` Bjorn Helgaas [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260304211847.GA36447@bhelgaas \
--to=helgaas@kernel.org \
--cc=bhelgaas@google.com \
--cc=linux-pci@vger.kernel.org \
--cc=linyunsheng@huawei.com \
--cc=pmenzel@molgen.mpg.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox