From: Manuel Quintero Fonseca <sakunix@yahoo.com>
To: rafael@kernel.org
Cc: lenb@kernel.org, linux-acpi@vger.kernel.org,
skhan@linuxfoundation.org,
Manuel Quintero Fonseca <sakunix@yahoo.com>
Subject: [PATCH v2] ACPI: resource: Add quirk for Dell PMC memory region overlap
Date: Mon, 11 May 2026 13:46:46 -0700 [thread overview]
Message-ID: <20260511204646.4863-1-sakunix@yahoo.com> (raw)
In-Reply-To: 20260511204646.4863-1-sakunix.ref@yahoo.com
On Dell OptiPlex 3080 systems, specifically during the initialization
of the intel_pmc_core driver, the kernel reports a resource sanity
check conflict. The issue was identified via dmesg logs showing:
resource sanity check: requesting [mem 0xfdffe800-0xfe0007ff], which
spans more than PNP0C02:03 [mem 0xfdb00000-0xfdffffff]
And subsequently:
resource sanity check: requesting [mem 0xfdffe800-0xfe0007ff], which
spans more than Reserved [mem 0xfe000000-0xfe010fff]
Investigation of /proc/iomem and ACPI tables on this specific model
revealed that the BIOS defines reserved regions (as a PNP0C02 resource
and an E820 reserved entry) that overlap with the Power Management
Controller (PMC) register space.
This overlap is harmless for system stability but produces persistent
warnings in dmesg. This patch introduces a quirk to:
1. Filter out the conflicting fixed memory resources in
drivers/acpi/resource.c.
2. Skip the iomem sanity check for the specific problematic range in
kernel/resource.c.
This ensures a clean boot log on these Dell units and allows the
Intel PMC driver to bind correctly without resource conflicts.
Signed-off-by: Manuel Quintero Fonseca <sakunix@yahoo.com>
---
v2:
- Add DMI matching to restrict the quirk to Dell systems.
- Include <linux/dmi.h> to fix compilation errors.
- Expand commit description with specific hardware (Dell OptiPlex 3080).
- Include dmesg logs showing the resource conflict.
- Reformat description to 75 characters per line.
drivers/acpi/resource.c | 32 ++++++++++++++++++++++++++++++++
kernel/resource.c | 9 +++++++++
2 files changed, 41 insertions(+)
diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
index bc8050d8a6f5..464195e30080 100644
--- a/drivers/acpi/resource.c
+++ b/drivers/acpi/resource.c
@@ -50,6 +50,20 @@ static inline bool is_gsi(struct acpi_resource_extended_irq *ext_irq)
}
#endif
+/*
+ * List of Dell systems requiring memory resource quirks due to BIOS
+ * reservations overlapping with Intel PMC register space.
+ */
+static const struct dmi_system_id dell_memory_quirks[] = {
+ {
+ .ident = "Dell Inc.",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ },
+ },
+ { }
+};
+
static bool acpi_dev_resource_len_valid(u64 start, u64 end, u64 len, bool io)
{
u64 reslen = end - start + 1;
@@ -110,6 +124,24 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
struct acpi_resource_memory32 *memory32;
struct acpi_resource_fixed_memory32 *fixed_memory32;
+ /*
+ * Quirk for Dell systems: ignore BIOS memory reservations that overlap
+ * with Intel PMC resources. Restricted via DMI to avoid impact on
+ * other manufacturers.
+ */
+ if (dmi_check_system(dell_memory_quirks)) {
+ u32 addr = 0;
+
+ if (ares->type == ACPI_RESOURCE_TYPE_FIXED_MEMORY32)
+ addr = ares->data.fixed_memory32.address;
+ else if (ares->type == ACPI_RESOURCE_TYPE_MEMORY32)
+ addr = ares->data.memory32.minimum;
+
+ if (addr == 0xfdb00000 ||
+ (addr >= 0xfe000000 && addr <= 0xfe000fff))
+ return false;
+ }
+
switch (ares->type) {
case ACPI_RESOURCE_TYPE_MEMORY24:
memory24 = &ares->data.memory24;
diff --git a/kernel/resource.c b/kernel/resource.c
index bb966699da31..16c82d9ea14f 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -30,6 +30,7 @@
#include <linux/string.h>
#include <linux/vmalloc.h>
#include <asm/io.h>
+#include <linux/dmi.h>
struct resource ioport_resource = {
@@ -1857,6 +1858,14 @@ int iomem_map_sanity_check(resource_size_t addr, unsigned long size)
*/
if (p->flags & IORESOURCE_BUSY)
continue;
+ /*
+ * Only apply this quirk on Dell systems to avoid false
+ * positives elsewhere.
+ */
+ if (dmi_match(DMI_SYS_VENDOR, "Dell Inc.")) {
+ if (p->start == 0xfe000000 && p->end == 0xfe010fff)
+ continue;
+ }
pr_warn("resource sanity check: requesting [mem %pa-%pa], which spans more than %s %pR\n",
&addr, &end, p->name, p);
--
2.47.3
next parent reply other threads:[~2026-05-11 20:47 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260511204646.4863-1-sakunix.ref@yahoo.com>
2026-05-11 20:46 ` Manuel Quintero Fonseca [this message]
[not found] <20260427205130.5609-1-sakunix.ref@yahoo.com>
2026-04-27 20:51 ` [PATCH v2] ACPI: resource: Add quirk for Dell PMC memory region overlap Manuel Quintero Fonseca
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=20260511204646.4863-1-sakunix@yahoo.com \
--to=sakunix@yahoo.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=skhan@linuxfoundation.org \
/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