|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] hvmloader: indicate firmware tables as ACPI NVS in e820
On 28.08.2020 02:13, Igor Druzhinin wrote:
> Guest kernel does need to know in some cases where the tables are located
> to treat these regions properly. One example is kexec process where
> the first kernel needs to pass firmware region locations to the second
> kernel which is now a requirement after 02a3e3cdb7f12 ("x86/boot: Parse SRAT
> table and count immovable memory regions").
>
> The memory that hvmloader allocates in the reserved region mostly contains
> these useful tables and could be safely indicated as ACPI without the need
> to designate a sub-region specially for that. Making it non-reclaimable
> (ACPI NVS) would avoid potential reuse of this memory by the guest.
> Swtiching from Reserved to ACPI NVS type for this memory would also mean
> its content is preserved across S4 (which is true for any ACPI type according
> to the spec).
Marking the range as ACPI is certainly fine, but why did you choose NVS?
There's nothing non-volatile there afaict. And the part of the last
sentence in parentheses suggests to me that the "normal" ACPI type is as
suitable for the purpose you're after.
> --- a/tools/firmware/hvmloader/e820.c
> +++ b/tools/firmware/hvmloader/e820.c
> @@ -155,6 +155,8 @@ int build_e820_table(struct e820entry *e820,
> {
> unsigned int nr = 0, i, j;
> uint32_t low_mem_end = hvm_info->low_mem_pgend << PAGE_SHIFT;
> + uint32_t firmware_mem_end =
> + RESERVED_MEMORY_DYNAMIC_START + (mem_mfns_allocated() << PAGE_SHIFT);
Here and elsewhere - please avoid uint32_t and friends when a plain
C type (unsigned int or unsigned long in this case) will do.
> @@ -210,8 +223,8 @@ int build_e820_table(struct e820entry *e820,
> {
> uint32_t igd_opregion_base = igd_opregion_pgbase << PAGE_SHIFT;
>
> - e820[nr].addr = RESERVED_MEMBASE;
> - e820[nr].size = (uint32_t) igd_opregion_base - RESERVED_MEMBASE;
> + e820[nr].addr = firmware_mem_end;
> + e820[nr].size = (uint32_t) igd_opregion_base - firmware_mem_end;
Any chance I could talk you into also dropping the pointless cast
at this occasion?
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |