Skip to content

Backport #84 to 6.18-lts: xen/balloon: let the OOM notifier grow an empty domU balloon - #85

Open
edera-rebase-app[bot] wants to merge 1 commit into
edera/6.18-ltsfrom
backport/edera-6.18-lts/pr-84
Open

edera-rebase-app[bot] wants to merge 1 commit into
edera/6.18-ltsfrom
backport/edera-6.18-lts/pr-84

Conversation

@edera-rebase-app

Copy link
Copy Markdown

Backport of #84 from edera/mainline to edera/6.18-lts (8a4c2881a70c), prepared by Claude. Run log.

Merge with Rebase and merge, so edera/6.18-lts stays linear.

Independent checks

Builds: success (x86_64 and arm64 vmlinux with the Edera features built in).

LTS tip before 8a4c2881a70c
LTS tip after 077dbcddc0cf
Commits requested 1
  • New branch fast-forwards the LTS tip.
  • Backported commits are linear.
  • All 1 requested commits backported in order, each with its source's subject and identical +/- lines.

Claude's report

Claude left no report (backport step: success).

Both builds are running; I'll wait for completion notifications.

Since a6aa4eb ("xen/x86: add extra pages to unpopulated-alloc if
available"), a domU built below its maximum hands the rest of its physmap
to the unpopulated allocator at boot, so its balloon stays empty until
the toolstack first resizes it. balloon_oom_notify() only deflates pages
already on the balloon, so a freshly built domU kills a task instead of
growing toward its maximum.

When the balloon is empty, park one 2 MiB block from the unpopulated
allocator on it and deflate that, as dom0's balloon does when it grows.
The allocator allocates memory with its lock held, so the OOM path only
tries the lock, through a new xen_try_alloc_unpopulated_blocks().

Signed-off-by: Kavi <kavi@edera.dev>
(cherry picked from commit ba4e76a)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant