[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <B74D54765E346E448CD6C7B7B0334C258D95543F@G08CNEXMBSHAD01.g08.fujitsu.local>
Date: Mon, 22 Oct 2018 05:29:51 +0000
From: "Fan, Chao" <fanc.fnst@...fujitsu.com>
To: Baoquan He <bhe@...hat.com>
CC: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"x86@...nel.org" <x86@...nel.org>,
"linux-efi@...r.kernel.org" <linux-efi@...r.kernel.org>,
"linux-acpi@...r.kernel.org" <linux-acpi@...r.kernel.org>,
"bp@...en8.de" <bp@...en8.de>,
"tglx@...utronix.de" <tglx@...utronix.de>,
"mingo@...hat.com" <mingo@...hat.com>,
"hpa@...or.com" <hpa@...or.com>,
"keescook@...omium.org" <keescook@...omium.org>,
"msys.mizuma@...il.com" <msys.mizuma@...il.com>,
"Indoh, Takao" <indou.takao@...itsu.com>,
"Cao, Jin" <caoj.fnst@...fujitsu.com>
Subject: Re: [PATCH v9 6/8] x86/boot: Dig out SRAT table from RSDP and find
immovable memory
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
>>
>>
>>
>
>
Powered by blists - more mailing lists