[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] acpi: enlarge NUM_FIXMAP_ACPI_PAGES to support larger scale boards
commit 02dc2aa7bf54602cf2d752a2af9fa38cee870fc8 Author: Zhang Bo <oscar.zhangbo@xxxxxxxxxx> AuthorDate: Wed May 31 08:40:44 2017 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed May 31 08:40:44 2017 +0200 acpi: enlarge NUM_FIXMAP_ACPI_PAGES to support larger scale boards In acpi_tb_verify_table()->__acpi_map_table(), it suppose all ACPI tables may not exceed 4 pages, the tables includes SRAT/APIC/ERST etc. Please note that the table DSDT is not mapped through acpi_tb_verify_table(), thus we don't care its size although it's usually the largest table among all the ACPI tables. Then the biggest table we concern is SRAT. As we know, the size of SRAT if affected by both CPU number and memory slot number, each CPU costs 24B, and each memory slot costs 40B. Please note: even when SRAT table is within 4 pages, eg. 14128B, 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 840B |___|_____________|______________|______________|____| although the total page is within 4 pages , but it may be in fact across 5 pages, as shown above. Thus the NUM_FIXMAP_ACPI_PAGES should be much larger nowadays. If not, xen would wrongly thinks no NUMA configuration could be found as that it could not get SRAT table. Thus, we make NUM_FIXMAP_ACPI_PAGES much larger, to 64(256KB). it's calculated for that the theoretical largest CPU number on main Linux distros is about 8192, and memory slots number should be within 1000, that's 24B*8192+40B*1000 = 236608B. Meanwhile, because IOREMAP_VIRT_* region is 16GB, thus I think extending it to 256KB is safe enough. Of course, there's much more work to do to support large scale boards of that many(8192) CPUs and 1000 memory slots. We just make life easier for boards with serveral hundreds of CPUs and serveral TBs of memory. Signed-off-by: Zhang Bo <oscar.zhangbo@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> --- xen/include/xen/acpi.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h index 30ec0ee..9409350 100644 --- a/xen/include/xen/acpi.h +++ b/xen/include/xen/acpi.h @@ -41,9 +41,9 @@ /* * Fixmap pages to reserve for ACPI boot-time tables (see asm-x86/fixmap.h or - * asm-arm/config.h) + * asm-arm/config.h, 64 pages(256KB) is large enough for most cases.) */ -#define NUM_FIXMAP_ACPI_PAGES 4 +#define NUM_FIXMAP_ACPI_PAGES 64 #define BAD_MADT_ENTRY(entry, end) ( \ (!(entry)) || (unsigned long)(entry) + sizeof(*(entry)) > (end) || \ -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |