In __acpi_map_table(), it suppose all ACPI tables may not exceed 4 pages.
    but nowadays ACPI tables, such as SRAT table, are large enough, On my
    BIOS board, the SRAT table achieves the size of 14428B, although it's
    above 3 pages and within 4pages, but in __acpi_map_table(), it maps pages
    to get the table. suppose the start address is near the end of the first 
page:

              1000B    4096B         4096B          4096B     1140B
               |___|_____________|______________|______________|____|

    although the total page is within 4pages , but it may be in fact across 5
    pages, thus the NUM_FIXMAP_ACPI_PAGES should be at least 5 nowadays. If
    not, xen would wrongly thinks no NUMA configuation could be found as that it
    could not get SRAT table.

diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h
index 30ec0ee..bd616a1 100644
--- a/xen/include/xen/acpi.h
+++ b/xen/include/xen/acpi.h
@@ -43,7 +43,7 @@
  * Fixmap pages to reserve for ACPI boot-time tables (see asm-x86/fixmap.h or
  * asm-arm/config.h)
  */
-#define NUM_FIXMAP_ACPI_PAGES  4
+#define NUM_FIXMAP_ACPI_PAGES  5

 #define BAD_MADT_ENTRY(entry, end) (                                        \
                 (!(entry)) || (unsigned long)(entry) + sizeof(*(entry)) > 
(end) ||  \

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

Reply via email to