From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
"Wei Liu" <wl@xen.org>, "Roger Pau Monné" <roger.pau@citrix.com>,
"Ian Jackson" <iwj@xenproject.org>
Subject: [PATCH v2 1/6][4.16?] x86/x2APIC: defer probe until after IOMMU ACPI table parsing
Date: Fri, 5 Nov 2021 13:32:18 +0100 [thread overview]
Message-ID: <43d8cc88-aae0-5a82-7b4b-756dd54dd223@suse.com> (raw)
In-Reply-To: <d88cfda3-54e4-2323-f536-547879380815@suse.com>
While commit 46c4061cd2bf ("x86/IOMMU: mark IOMMU / intremap not in use
when ACPI tables are missing") deals with apic_x2apic_probe() as called
from x2apic_bsp_setup(), the check_x2apic_preenabled() path is similarly
affected: The call needs to occur after acpi_iommu_init(), such that
iommu_intremap getting disabled there can be properly taken into account
by apic_x2apic_probe().
Note that, for the time being (further cleanup patches following),
reversing the order of the calls to generic_apic_probe() and
acpi_boot_init() is not an option:
- acpi_process_madt() calls clustered_apic_check() and hence relies on
genapic to have got filled before,
- generic_bigsmp_probe() (called from acpi_process_madt()) needs to
occur after generic_apic_probe(),
- acpi_parse_madt() (called from acpi_process_madt()) calls
acpi_madt_oem_check(), which wants to be after generic_apic_probe().
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Based on code inspection only - I have no affected system and hence no
way to actually test the case.
---
v2: Don't move generic_apic_probe() invocation, instead pull out
acpi_iommu_init() from acpi_boot_init().
---
4.16: While investigating the issue addressed by the referenced commit,
a variant of that problem was identified when firmware pre-enables
x2APIC mode. Whether that's something sane firmware would do when
at the same time IOMMU(s) is/are disabled is unclear, so this may
be a purely academical consideration. Working around the problem
also ought to be as simple as passing "iommu=no-intremap" on the
command line. Considering the fragility of the code (as further
demonstrated by v1 having been completely wrong), it may therefore
be advisable to defer this change until after branching.
Nevertheless it will then be a backporting candidate, so
considering to take it right away can't simply be put off.
--- a/xen/arch/x86/acpi/boot.c
+++ b/xen/arch/x86/acpi/boot.c
@@ -757,8 +757,6 @@ int __init acpi_boot_init(void)
acpi_mmcfg_init();
- acpi_iommu_init();
-
erst_init();
acpi_hest_init();
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1699,6 +1699,13 @@ void __init noreturn __start_xen(unsigne
dmi_scan_machine();
+ /*
+ * IOMMU-related ACPI table parsing has to happen before APIC probing, for
+ * check_x2apic_preenabled() to be able to observe respective findings, in
+ * particular iommu_intremap having got turned off.
+ */
+ acpi_iommu_init();
+
generic_apic_probe();
mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
next prev parent reply other threads:[~2021-11-05 12:32 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-05 12:30 [PATCH v2 0/6] x86: ACPI / APIC / IOMMU interaction Jan Beulich
2021-11-05 12:32 ` Jan Beulich [this message]
2021-11-05 15:38 ` [PATCH v2 1/6][4.16?] x86/x2APIC: defer probe until after IOMMU ACPI table parsing Roger Pau Monné
2021-11-05 15:47 ` Ian Jackson
2021-11-08 7:44 ` Jan Beulich
2021-11-08 15:04 ` Ian Jackson
2021-11-08 15:13 ` Jan Beulich
2021-11-16 15:19 ` [PATCH v2 1/6][4.16?] x86/x2APIC: defer probe until after IOMMU ACPI table parsing [and 2 more messages] Ian Jackson
2021-11-08 7:40 ` [PATCH v2 1/6][4.16?] x86/x2APIC: defer probe until after IOMMU ACPI table parsing Jan Beulich
2021-11-08 9:36 ` Roger Pau Monné
2021-11-08 9:54 ` Jan Beulich
2021-11-05 12:34 ` [PATCH v2 2/6] x86/APIC: drop clustered_apic_check() hook Jan Beulich
2021-11-08 11:02 ` Roger Pau Monné
2021-11-08 11:17 ` Jan Beulich
2021-11-05 12:34 ` [PATCH v2 3/6] x86/APIC: drop {acpi_madt,mps}_oem_check() hooks Jan Beulich
2021-11-05 12:34 ` [PATCH v2 4/6] x86/APIC: drop probe_default() Jan Beulich
2021-11-05 12:35 ` [PATCH v2 5/6] x86/APIC: rename cmdline_apic Jan Beulich
2021-11-05 12:35 ` [PATCH v2 6/6] x86/ACPI: drop dead interpreter-related code Jan Beulich
2021-11-08 11:40 ` [PATCH v2.1 1/6][4.16?] x86/x2APIC: defer probe until after IOMMU ACPI table parsing Jan Beulich
2021-11-08 11:54 ` Roger Pau Monné
2021-11-15 12:06 ` Jan Beulich
2021-11-15 14:31 ` [PATCH v2.2 " Jan Beulich
2021-11-15 15:07 ` Roger Pau Monné
2021-11-15 16:10 ` Jan Beulich
2021-11-16 11:44 ` Roger Pau Monné
2021-11-16 12:09 ` [PATCH v2 0/6] x86: ACPI / APIC / IOMMU interaction Andrew Cooper
2021-11-16 14:20 ` Jan Beulich
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=43d8cc88-aae0-5a82-7b4b-756dd54dd223@suse.com \
--to=jbeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=iwj@xenproject.org \
--cc=roger.pau@citrix.com \
--cc=wl@xen.org \
--cc=xen-devel@lists.xenproject.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;
as well as URLs for NNTP newsgroup(s).