mirror of
https://dev.lirent.ru/Vatrog/vm-automation-signaling.git
synced 2026-06-25 20:36:36 +03:00
3142337e62
host_probe derived the guest's below-4G split (vmie `low`) by taking the first GPA-0 RAM run in `info mtree -f`. When low RAM is fragmented by overlay pages (Hyper-V SynIC) and blackhole holes (smbase/tseg), that first run is a tiny fragment, so the split came out far too small and host_bootstrap could never recover the System DTB — the memctx context was never published. Extract a pure parser, mtree_low_split(): anchor on the system flatview, take `low` from the @file-offset of the high-RAM region at GPA >= 4 GiB (which equals the split by construction), cross-validate against the PCI-hole base, and fail closed when it can't be derived. QMP-reply un-escaping moves to the transport boundary so the parser works on plain text. Unit-tested against a synthetic fragmented flatview including a decoy non-system address space. postinst also hints to restart the daemon after an upgrade (a running instance keeps the old build until restarted). Bump 0.3.6.
43 lines
2.0 KiB
Plaintext
43 lines
2.0 KiB
Plaintext
FlatView #0
|
|
AS "cpu-smm-0", root: mem-container-smram
|
|
Root memory region: mem-container-smram
|
|
0000000000000000-0000000000017fff (prio 0, ram): ram0
|
|
0000000000018000-0000000000018fff (prio 0, ram): synic-0-msg-page
|
|
000000000001c000-000000007fffffff (prio 0, ram): ram0 @000000000001c000
|
|
0000000080000000-0000000081ffffff (prio 0, i/o): vfio-pci-bar3
|
|
0000000100000000-000000017fffffff (prio 0, ram): ram0 @0000000040000000
|
|
|
|
FlatView #1
|
|
AS "I/O", root: io
|
|
Root memory region: io
|
|
0000000000000000-0000000000000007 (prio 0, i/o): dma-chan
|
|
0000000000000060-0000000000000060 (prio 0, i/o): i8042-data
|
|
0000000000000064-0000000000000064 (prio 0, i/o): i8042-cmd
|
|
|
|
FlatView #2
|
|
AS "memory", root: system
|
|
AS "cpu-memory-0", root: system
|
|
Root memory region: system
|
|
0000000000000000-0000000000017fff (prio 0, ram): ram0
|
|
0000000000018000-0000000000018fff (prio 0, ram): synic-0-msg-page
|
|
0000000000019000-0000000000019fff (prio 0, ram): synic-1-msg-page
|
|
000000000001a000-000000000001afff (prio 0, ram): synic-2-msg-page
|
|
000000000001b000-000000000001bfff (prio 0, ram): synic-3-msg-page
|
|
000000000001c000-000000000002ffff (prio 0, ram): ram0 @000000000001c000
|
|
0000000000030000-000000000004ffff (prio 1, i/o): smbase-blackhole
|
|
0000000000050000-00000000000bffff (prio 0, ram): ram0 @0000000000050000
|
|
00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
|
|
00000000000e0000-00000000000fffff (prio 0, rom): system.flash0 @000000000035c000
|
|
0000000000100000-000000007bffffff (prio 0, ram): ram0 @0000000000100000
|
|
000000007c000000-000000007fffffff (prio 1, i/o): tseg-blackhole
|
|
0000000080000000-0000000081ffffff (prio 0, i/o): vfio-pci-bar3
|
|
0000000082000000-0000000082087fff (prio 0, i/o): vfio-pci-bar0
|
|
00000000e0000000-00000000efffffff (prio 0, i/o): pcie-mmcfg-mmio
|
|
00000000fec00000-00000000fec00fff (prio 0, i/o): kvm-ioapic
|
|
00000000ffc00000-00000000ffc83fff (prio 0, romd): system.flash1
|
|
0000000100000000-000000027fffffff (prio 0, ram): ram0 @0000000080000000
|
|
|
|
FlatView #3
|
|
AS "pci_bridge_io", root: pci_bridge_io
|
|
Root memory region: pci_bridge_io
|