Skip to content

Backport #72 to 6.18-lts: 9p/xen: grant each ring page by its own frame - #73

Merged
clupuishere merged 1 commit into
edera/6.18-ltsfrom
backport/edera-6.18-lts/pr-72
Nov 4, 2026
Merged

clupuishere merged 1 commit into
edera/6.18-ltsfrom
backport/edera-6.18-lts/pr-72

Conversation

@edera-rebase-app

Copy link
Copy Markdown

Backport of #72 from edera/mainline to edera/6.18-lts (f20f61dd3909), 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 f20f61dd3909
LTS tip after 4594ea2d7b0c
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).

Waiting for the builds to report back.

The data pages of a ring are granted as the first page's frame plus the
page index. That holds for auto-translated guests, whose grant frames are
pseudo-physical. A PV guest grants machine frames, and alloc_pages_exact()
only promises pseudo-physical contiguity. When the pages are not
machine-contiguous the backend maps the frames that follow the first one.
Some of those are other pages of the guest, so requests read as garbage,
and some cannot be granted at all, so the mapping fails.

A freshly built PV guest is usually machine-contiguous within a 2 MiB
block, which hid this. A PV guest restored from a snapshot gets its frames
one page at a time, so its first request on ring 0 after the restore
arrives as a malformed frame and the mount hangs.

Look up the frame of each page instead.

Signed-off-by: Kavi Daula <kavi@edera.dev>
(cherry picked from commit 8115eea)
@clupuishere
clupuishere merged commit aab8db4 into edera/6.18-lts Nov 4, 2026
1 check passed
@github-actions
github-actions Bot deleted the backport/edera-6.18-lts/pr-72 branch November 4, 2026 17:38
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.

2 participants