From: Jan Beulich <jbeulich@suse.com>
To: "Roger Pau Monné" <roger@xenproject.org>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Teddy Astie <teddy.astie@vates.tech>,
Marek Marczykowski <marmarek@invisiblethingslab.com>
Subject: Re: [PATCH 11/15] x86/PVH: try to map initrd directly into Dom0
Date: Fri, 16 Oct 2026 10:52:08 +0200 [thread overview]
Message-ID: <508b601b-0b95-4edf-a433-8fef03420c9e@suse.com> (raw)
In-Reply-To: <atEADbxD4mL_bXy6@Mac.lan>
On 15.10.2026 18:32, Roger Pau Monné wrote:
> On Mon, Oct 12, 2026 at 10:25:11AM +0200, Jan Beulich wrote:
>> Our present handling of initrd is problematic in particular when the
>> initrd is huge, and when at the same time "dom0_mem=" isn't in use to
>> significantly shrink Dom0's memory (from the default). In that case,
>> insufficient memory may exist for pvh_populate_p2m() to succeed (because
>> initrd memory can be freed only after copying).
>>
>> Make an attempt to map the blob (including headroom) into Dom0 instead,
>
> I would use "dom0 p2m" instead of plain p2m, it's clearer IMO.
Can do, sure.
>> thus also saving the copying operation. With __start_xen() having arranged
>> for a larger than necessary blob, that mapping can typically be done with
>> superpage mappings.
>>
>> Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> Is there a need to prune (scrub) the headroom space?
>
> We already populate the p2m with memory allocated with MEMF_no_scrub,
> so there's no reason to scrub the headroom unless we also remove the
> MEMF_no_scrub for p2m population.
Oh, I hadn't noticed that. Away goes the remark.
>> Why does find_memory() go upwards, while find_kernel_memory() goes
>> downwards? And why do we use the lowest part of the region found by
>> find_memory() rather than the highest part?
>
> find_memory() should probably start downwards from 4G.
I've added a todo item; maybe I can get this done in another patch in v2.
(Further remarks will be addressed separately.)
>> + /*
>> + * As we promise to place below 4G whatever fits there, make a first pass
>> + * limiting permitted addresses. If we can't fit it there, fall back to
>> + * placing above 4G.
>> + */
>> + for ( paddr_t limit = GB(4); ; )
>> + {
>> + paddr_t start;
>> +
>> + *blob_start = find_initrd_memory(d, elf, &try, align, limit);
>> + if ( *blob_start != INVALID_PADDR )
>> + break;
>> +
>> + if ( align == PAGE_SIZE )
>> + {
>> + if ( !(limit + 1) )
>> + return;
>> +
>> + limit = -1;
>> + align = 1UL << L3_PAGETABLE_SHIFT;
>
> Aren't you possibly asking for an alignment better than what's
> required by the actual initrd memory? Maybe it's using 2M pages yet
> you request 1G alignment here.
Yes and no: I may request too much here, but the very first condition in
find_initrd_memory() deals with that. When trying different variants of
coding this up, doing it this way seemed like the best way.
Jan
next prev parent reply other threads:[~2026-10-16 8:52 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 8:17 [PATCH 00/15] x86: PVH Dom0 loading rework Jan Beulich
2026-10-12 8:19 ` [PATCH 01/15] x86/EFI: guard against oversized modules Jan Beulich
2026-10-12 10:12 ` George Dunlap
2026-10-12 8:19 ` [PATCH 02/15] x86/PV: make better use of assign_pages() Jan Beulich
2026-10-12 10:16 ` George Dunlap
2026-10-12 8:20 ` [PATCH 03/15] x86/setup: break out E820_RAM accumulation Jan Beulich
2026-10-12 10:20 ` George Dunlap
2026-10-12 10:23 ` Jan Beulich
2026-10-12 11:24 ` George Dunlap
2026-10-13 11:05 ` Roger Pau Monné
2026-10-13 11:39 ` Jan Beulich
2026-10-12 8:20 ` [PATCH 04/15] x86/setup: special treatment of initrd for PVH Dom0 Jan Beulich
2026-10-12 11:23 ` George Dunlap
2026-10-12 11:51 ` Jan Beulich
2026-10-12 18:58 ` George Dunlap
2026-10-12 8:21 ` [PATCH 05/15] x86/PVH: split pvh_load_kernel() Jan Beulich
2026-10-13 6:45 ` Teddy Astie
2026-10-12 8:21 ` [PATCH 06/15] x86/PVH: keep a copy of Dom0's initial E820 map Jan Beulich
2026-10-13 6:57 ` Teddy Astie
2026-10-13 7:56 ` Jan Beulich
2026-10-13 13:48 ` Roger Pau Monné
2026-10-13 14:53 ` Jan Beulich
2026-10-13 15:08 ` Roger Pau Monné
2026-10-12 8:22 ` [PATCH 07/15] x86/PVH: lift E820 alignment requirement Jan Beulich
2026-10-13 14:59 ` Roger Pau Monné
2026-10-13 15:13 ` Jan Beulich
2026-10-12 8:23 ` [PATCH 08/15] x86/PVH: split pvh_setup_acpi() Jan Beulich
2026-10-13 15:52 ` Roger Pau Monné
2026-10-13 16:04 ` Jan Beulich
2026-10-14 9:31 ` Roger Pau Monné
2026-10-14 9:42 ` Jan Beulich
2026-10-15 15:05 ` Roger Pau Monné
2026-10-12 8:24 ` [PATCH 09/15] x86/PVH: split pvh_setup_vmx_realmode_helpers() Jan Beulich
2026-10-14 9:38 ` Roger Pau Monné
2026-10-14 9:49 ` Jan Beulich
2026-10-12 8:24 ` [PATCH 10/15] x86/PVH: convert find_memory() to using a rangeset Jan Beulich
2026-10-15 15:20 ` Roger Pau Monné
2026-10-16 8:43 ` Jan Beulich
2026-10-12 8:25 ` [PATCH 11/15] x86/PVH: try to map initrd directly into Dom0 Jan Beulich
2026-10-15 16:32 ` Roger Pau Monné
2026-10-16 8:52 ` Jan Beulich [this message]
2026-10-15 17:41 ` Roger Pau Monné
2026-10-16 8:58 ` Jan Beulich
2026-10-16 9:01 ` Roger Pau Monné
2026-10-16 9:12 ` Jan Beulich
2026-10-12 8:25 ` [PATCH 12/15] x86/PVH: heed the kernel in pvh_steal_ram() Jan Beulich
2026-10-16 7:16 ` Roger Pau Monné
2026-10-12 8:26 ` [PATCH 13/15] x86/PVH: prefer smaller E820 regions for stealing from Jan Beulich
2026-10-12 8:26 ` [PATCH 14/15] x86/PVH: log Dom0's E820 map earlier Jan Beulich
2026-10-16 7:24 ` Roger Pau Monné
2026-10-16 9:01 ` Jan Beulich
2026-10-12 8:26 ` [PATCH 15/15] x86/PVH: simplify writing of Dom0's RSDP Jan Beulich
2026-10-16 7:34 ` Roger Pau Monné
2026-10-16 9:04 ` Jan Beulich
2026-10-12 8:29 ` [PATCH 00/15] x86: PVH Dom0 loading rework Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=508b601b-0b95-4edf-a433-8fef03420c9e@suse.com \
--to=jbeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=marmarek@invisiblethingslab.com \
--cc=roger@xenproject.org \
--cc=teddy.astie@vates.tech \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.