[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190121094214.GC15754@localhost.localdomain>
Date: Mon, 21 Jan 2019 17:42:14 +0800
From: Chao Fan <fanc.fnst@...fujitsu.com>
To: Borislav Petkov <bp@...en8.de>
CC: <linux-kernel@...r.kernel.org>, <x86@...nel.org>,
<tglx@...utronix.de>, <mingo@...hat.com>, <hpa@...or.com>,
<keescook@...omium.org>, <bhe@...hat.com>, <msys.mizuma@...il.com>,
<indou.takao@...fujitsu.com>, <caoj.fnst@...fujitsu.com>
Subject: Re: [PATCH v15 5/6] x86/boot: Parse SRAT address from RSDP and store
immovable memory
On Mon, Jan 21, 2019 at 05:33:48PM +0800, Chao Fan wrote:
>On Wed, Jan 16, 2019 at 12:01:58PM +0100, Borislav Petkov wrote:
>>On Mon, Jan 07, 2019 at 11:22:42AM +0800, Chao Fan wrote:
>[...]
>>> +
>>> +/* Determine RSDP, based on acpi_os_get_root_pointer(). */
>>> +static acpi_physical_address get_rsdp_addr(void)
>>> +{
>>> + acpi_physical_address pa;
>>> +
>>> + pa = get_acpi_rsdp();
>>> +
>>> + if (!pa)
>>> + pa = efi_get_rsdp_addr();
>>> +
>>> + if (!pa)
>>> + pa = bios_get_rsdp_addr();
>>> +
>>> + return pa;
>>> +}
>
>Hi Boris,
>
>Talking in Kairui's thread may mislead you, let me clarify:
>I mean I am going to change get_rsdp_addr(). Since I see ACPI code:
>
>>acpi_physical_address __init acpi_os_get_root_pointer(void)
>>{
>> acpi_physical_address pa;
>>
>>#ifdef CONFIG_KEXEC
>> if (acpi_rsdp)
>> return acpi_rsdp;
>>#endif
>> pa = acpi_arch_get_root_pointer();
>> if (pa)
>> return pa;
>
>So we need to parse boot_params->acpi_rsdp_addr also between KEXEC and
>EFI:
>
>static acpi_physical_address get_rsdp_addr(void)
>{
> acpi_physical_address pa;
>
> pa = get_acpi_rsdp();
>
> if (!pa)
>/* This line will be added in next version.*/
> pa = boot_params->acpi_rsdp_addr;
>
> if (!pa)
> pa = efi_get_rsdp_addr();
>
> if (!pa)
> pa = bios_get_rsdp_addr();
>
>/* If no acpi_rsdp_addr found in boot_params, fill in it here. */
>
> return pa;
>}
Or I clear this function as:
static acpi_physical_address get_rsdp_addr(void)
{
acpi_physical_address pa;
pa = get_acpi_rsdp();
if (!pa)
pa = boot_params->acpi_rsdp_addr;
if (!pa)
pa = efi_get_rsdp_addr();
if (!pa)
pa = bios_get_rsdp_addr();
if (pa && !boot_params->acpi_rsdp_addr)
boot_params->acpi_rsdp_addr = pa;
return pa;
}
This version may look better, it does not need a bool.
Thanks,
Chao Fan
>
>Then you said I shall fill the boot_params->acpi_rsdp_addr, so in my
>understanding, if there is no acpi_rsdp_addr found in boot_params,
>we can parse RSDP by EFI/BIOS then fill it, other wise if it's found
>int boot_params, we need't to fill it.
>
>Thanks,
>Chao Fan
Powered by blists - more mailing lists