On 4/7/20 12:02 PM, Jim Fehlig wrote:
Hi All,
[...]
e820_host is a bit trickier. For this setting, which is PV-specific,
the man
page says:
Selects whether to expose the host e820 (memory map) to the guest via the
virtual e820. When this option is false (0) the guest pseudo-physical
address space consists of a single contiguous RAM region. When this option
is specified the virtual e820 instead reflects the host e820 and contains
the same PCI holes. The total amount of RAM represented by the memory map
is always the same, this option configures only how it is laid out.
Exposing the host e820 to the guest gives the guest kernel the opportunity
to set aside the required part of its pseudo-physical address space in order
to provide address space to map passedthrough PCI devices. It is guest
Operating System dependent whether this option is required, specifically it
is required when using a mainline Linux ("pvops") kernel. This option
defaults to true (1) if any PCI passthrough devices are configured and
false (0) otherwise. If you do not configure any passthrough devices at
domain creation time but expect to hotplug devices later then you should
set this option. Conversely if your particular guest kernel does not
require this behavior then it is safe to allow this to be enabled but
you may wish to disable it anyway.
I'm tempted to unconditionally enable this setting. It is required for pvops
kernels and apparently harmless for other PV kernels. I asked one of the Xen
devs about any downsides to always enabling e820_host, to which he replied
"Scattered memory blocks inside the guest, possibly leading to slightly higher
overhead. But nothing really severe afaics.".
I dug a bit deeper to find the xen.git commits that introduced e820_host:
414979ba85 and f92337d949. The latter, from May 2011, claims the setting can be
removed "once the auto-ballooning of guests with PCI devices works"
https://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=f92337d9494efbab0918...
I think this is further evidence that we should unconditionally enable e820_host
in libvirt and avoid exposing a Xen setting that might be removed in the future.
Regards,
Jim