mirror of
https://dev.lirent.ru/Vatrog/vm-automation-signaling.git
synced 2026-06-26 04:36:37 +03:00
fix(discovery): derive the below-4G split robustly from fragmented mtree
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.
This commit is contained in:
+42
@@ -0,0 +1,42 @@
|
||||
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
|
||||
Reference in New Issue
Block a user