[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen master] x86/hvmloader: fix order of PCI vs MTRR initialization



commit cfd52324313f66ca2ad6bfa45bd26387ca52035c
Author:     Roger Pau Monne <roger.pau@xxxxxxxxxx>
AuthorDate: Tue May 27 10:49:13 2025 +0200
Commit:     Roger Pau Monne <roger.pau@xxxxxxxxxx>
CommitDate: Wed May 28 10:23:35 2025 +0200

    x86/hvmloader: fix order of PCI vs MTRR initialization
    
    After some recent change the order of MTRR vs PCI initialization is
    inverted.  MTRR will get initialization ahead of PCI scanning and sizing of
    MMIO regions.  As a result when setting up MTRRs the MMIO window below 4GB
    will always have the same size, and there will be no window above 4GB.
    This results in malformed and incomplete MTRRs being setup.
    
    Fix by making sure PCI is initialized ahead of MTRR, also add a comment to
    notice the ordering dependency.
    
    Fixes: 2c3dffbaa324 ('tools/hvmloader: Replace LAPIC_ID() with 
cpu_to_apicid[]')
    Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
    Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Reviewed-by: Anthoine Bourgeois <anthoine.bourgeois@xxxxxxxxx>
---
 tools/firmware/hvmloader/hvmloader.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tools/firmware/hvmloader/hvmloader.c 
b/tools/firmware/hvmloader/hvmloader.c
index 4e330fc1e2..6d23150fc9 100644
--- a/tools/firmware/hvmloader/hvmloader.c
+++ b/tools/firmware/hvmloader/hvmloader.c
@@ -341,10 +341,16 @@ int main(void)
 
     printf("CPU speed is %u MHz\n", get_cpu_mhz());
 
+    /*
+     * PCI setup must be done before SMP initialization, as the later also does
+     * the MTRR setup and so the size of the PCI MMIO windows must be known at
+     * that point.
+     */
+    pci_setup();
+
     smp_initialise();
 
     apic_setup();
-    pci_setup();
 
     perform_tests();
 
--
generated by git-patchbot for /home/xen/git/xen.git#master



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.