From: Patrick Rudolph <patrick.rudolph@9elements.com>
To: Simon Glass <sjg@chromium.org>, Tom Rini <trini@konsulko.com>,
Patrick Rudolph <patrick.rudolph@9elements.com>
Cc: u-boot@lists.denx.de
Subject: [PATCH 1/5] acpi_table: Fix IORT RC node
Date: Sun, 16 Mar 2025 09:32:52 +0100 [thread overview]
Message-ID: <20250316083300.2692377-1-patrick.rudolph@9elements.com> (raw)
Even though the RC node has the correct size and the ID mappings
are written to the end of the node, the ID 'mapping offset' and
'mapping count' are not written in the IORT RC node header, thus it
looks like that the RC node has no ID mappings.
The Linux kernel doesn't complain about the invalid IORT RC node,
even though the spec says that each RC node must have an ID mapping.
The kernel will fail to use MSI IRQs and fall back to a legacy IRQ
mechanism that's not working either.
Finally it will show strange behaviour around PCI interrupts, making it
hard to trace back to an invalid IORT RC nodes.
Add the missing ID mapping count and mapping offset.
TEST: Fixes IRQ usage of PCI devices on qemu/sbsa-ref.
Fixes: bf5d37662da5 "acpi: acpi_table: Add IORT support"
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
---
lib/acpi/acpi_table.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/acpi/acpi_table.c b/lib/acpi/acpi_table.c
index c0ed24984af..0e0a7cc498f 100644
--- a/lib/acpi/acpi_table.c
+++ b/lib/acpi/acpi_table.c
@@ -646,6 +646,8 @@ int acpi_iort_add_rc(struct acpi_ctx *ctx,
node->type = ACPI_IORT_NODE_PCI_ROOT_COMPLEX;
node->revision = 2;
+ node->mapping_count = num_mappings;
+ node->mapping_offset = sizeof(struct acpi_iort_node) + sizeof(struct acpi_iort_rc);
node->length = sizeof(struct acpi_iort_node);
node->length += sizeof(struct acpi_iort_rc);
--
2.48.1
next reply other threads:[~2025-03-16 8:33 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-16 8:32 Patrick Rudolph [this message]
2025-03-16 8:32 ` [PATCH 2/5] acpi_table: Add asserts in IORT Patrick Rudolph
2025-03-16 8:32 ` [PATCH 3/5] acpi: Clear reserved bits " Patrick Rudolph
2025-03-16 8:32 ` [PATCH 4/5] acpi: Conditionally set mapping_offset " Patrick Rudolph
2025-03-16 8:32 ` [PATCH 5/5] test: acpi: Add IORT tests Patrick Rudolph
2025-04-03 21:20 ` [PATCH 1/5] acpi_table: Fix IORT RC node Tom Rini
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=20250316083300.2692377-1-patrick.rudolph@9elements.com \
--to=patrick.rudolph@9elements.com \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.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