On Sun, Oct 21, 2018 at 10:34:58AM +0800, Baoquan He wrote: >On 10/17/18 at 06:20pm, Chao Fan wrote: >> + if (!cmdline_find_option_bool("movable_node") || >> + cmdline_find_option_arg("acpi", "off", 3)) >> + return; >> + >> + table_header = get_acpi_srat_table(); >> + if (!table_header) >> + return; >> + >> + table_end = (unsigned long)table_header + table_header->length; >> + >> + table = (struct acpi_subtable_header *) >> + ((unsigned long)table_header + sizeof(struct acpi_table_srat)); >> + >> + while (((unsigned long)table) + >> + sizeof(struct acpi_subtable_header) < table_end) { >> + if (table->type == ACPI_SRAT_TYPE_MEMORY_AFFINITY) { >> + ma = (struct acpi_srat_mem_affinity *)table; >> + if (!(ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE)) { >> + immovable_mem[i].start = ma->base_address; >> + immovable_mem[i].size = ma->length; >> + i++; >> + } >> + >> + if (i >= MAX_NUMNODES*2) > No warning message printed in this case? I will add. BTW, what message is appropriate? I can't figure out in what condition, i >= MAX_NUMNODES*2. Thanks, Chao Fan >> + break; >> + } >> + table = (struct acpi_subtable_header *) >> + ((unsigned long)table + table->length); >> + } >> + num_immovable_mem = i; >> +} >> diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/misc.h >> index 40378408d980..70c403e1444c 100644 >> --- a/arch/x86/boot/compressed/misc.h >> +++ b/arch/x86/boot/compressed/misc.h >> @@ -121,3 +121,13 @@ static inline void console_init(void) >> void set_sev_encryption_mask(void); >> >> #endif >> + >> +/* acpitb.c */ >> +#ifdef CONFIG_RANDOMIZE_BASE >> +int num_immovable_mem; >> +#ifdef CONFIG_MEMORY_HOTREMOVE >> +/* Store the amount of immovable memory regions */ >> +#define ACPI_MAX_TABLES 128 >> +void get_immovable_mem(void); >> +#endif >> +#endif >> -- >> 2.17.2 >> >> >> > >