[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 4 of 4] libxl: Add 'e820_host' option to config file
# HG changeset patch # User Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> # Date 1306242481 14400 # Node ID b7abaa2615c0f0a97369a907aa688e6eddbc7be5 # Parent b9d83e7df956b613b71fa63a82427282d309c9b2 libxl: Add 'e820_host' option to config file. .. which will be removed once the auto-ballooning of guests with PCI devices works. During testing of the patches which provide a host E820 in a PV guest, certain inconsistencies were found with guests. When launching a RHEL5 or SLES11 PV guest with 4GB and a PCI device, the kernel would report 4GB, but have 1.5G "used". What happend was that the P2M that fall within the E820 I/O holes would never be used and was just wasted. The mechanism to go around this is to shrink the size of the guest before launch (say memory=2048, maxmem=4096) and then balloon back to 4096M after start. For PVOPS type kernels it would detect the E820 I/O holes and deflate by the correct amount but would not inflate back to 4GB. Manually inflating makes it work. The fix in the future for guests where the memory amount flows over the PCI hole, is to launch the guest with decreased amount right up to the cusp of where the E820 PCI hole starts. Also increase the 'maxmem' by the delta and then when the guest has launched, balloon up to the delta number. This will require some careful surgery so for right now this parameter will guard against unsuspecting users seeing their PV guests memory "vanish." Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> diff -r b9d83e7df956 -r b7abaa2615c0 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Tue May 24 09:08:01 2011 -0400 +++ b/tools/libxl/xl_cmdimpl.c Tue May 24 09:08:01 2011 -0400 @@ -979,6 +979,16 @@ skip_vfb: if (!xlu_cfg_get_long (config, "pci_power_mgmt", &l)) pci_power_mgmt = l; + /* To be reworked (automatically enabled) once the auto ballooning + * after guest starts is done (with PCI devices passed in). */ + if (!xlu_cfg_get_long (config, "e820_host", &l)) { + if (c_info->hvm) + fprintf(stderr, "Can't do e820_host in HVM mode!"); + else { + if (l) + b_info->u.pv.machine_e820 = true; + } + } if (!xlu_cfg_get_list (config, "pci", &pcis, 0, 0)) { int i; d_config->num_pcidevs = 0; @@ -995,8 +1005,6 @@ skip_vfb: if (!libxl_device_pci_parse_bdf(ctx, pcidev, buf)) d_config->num_pcidevs++; } - if (d_config->num_pcidevs && !c_info->hvm) - b_info->u.pv.machine_e820 = true; } switch (xlu_cfg_get_list(config, "cpuid", &cpuids, 0, 1)) { _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |