[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] HVM support for e820_host (Was: Bug: Limitation of <=2GB RAM in domU persists with 4.3.0)



On Wed, 4 Sep 2013 10:08:37 -0400, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> wrote:
On Wed, Sep 04, 2013 at 01:18:39AM +0100, Gordan Bobic wrote:
On 09/03/2013 10:30 PM, Konrad Rzeszutek Wilk wrote:
>On Tue, Sep 03, 2013 at 10:24:44PM +0100, Gordan Bobic wrote:
>>On 09/03/2013 10:10 PM, Konrad Rzeszutek Wilk wrote:
>>>On Tue, Sep 03, 2013 at 09:49:40PM +0100, Gordan Bobic wrote:
>>>>I spoke too soon - even with e820_host=0, the same error occurs.
>>>>What did I break? The code in question is this:
>>>>
>>>>if (libxl_defbool_val(d_config->b_info.e820_host)) {
>>>>     ret = libxl__e820_alloc(gc, domid, d_config);
>>>>     if (ret) {
>>>>         LIBXL__LOG_ERRNO(gc->owner, LIBXL__LOG_ERROR,
>>>> "Failed while collecting E820 with: %d (errno:%d)\n",
>>>>                 ret, errno);
>>>>     }
>>>>}
>>>>
>>>>With e820_host=0, that outer black should evaluate to false, should >>>>it not? In libxl_create.c, if I am understanding the code correctly,
>>>>e820_host is defaulted to false, too. What am I missing?
>
>Does your config have 'pci' in it? The patch you sent had this:
>
>+        if (d_config->num_pcidevs)
>+            libxl_defbool_set(&b_info->e820_host, true);
>
>Which means that even if you did not have e820_host it will be automatically
>set if you have PCI devices.

OK - that was embarrasing. Caffeine underflow error. :(
I backed out that block. I don't think e820_host should be implicit
in hvm when PCI devices are passed.

That makes the adjusted patch fragment:
--- xl_cmdimpl.c.orig   2013-09-04 00:42:57.424337503 +0100
+++ xl_cmdimpl.c        2013-09-04 00:43:21.213886356 +0100
@@ -1293,7 +1293,7 @@
                 d_config->num_pcidevs++;
         }
if (d_config->num_pcidevs && c_info->type == LIBXL_DOMAIN_TYPE_PV)

I think you also want to get rid of the c_info->type check?

That would alter the current PV behaviour of implicitly
enabling e820_host with PCI devices passed, would it not?
I was hoping to maintain current behaviours intact, and
only affect what happens when e820_host=1 is set for HVMs.

-            libxl_defbool_set(&b_info->u.pv.e820_host, true);
+            libxl_defbool_set(&b_info->e820_host, true);
     }

     switch (xlu_cfg_get_list(config, "cpuid", &cpuids, 0, 1)) {


This should maintain the old behaviour for backward compatibility
when e820_host is not set. I just tested it and it works (with
e820_host=1 I get the previous error, with e820_host=0, everything
works fine.

I think it might make sense to relax the PV check. That way the only
way e820_host capability gets activated is if a the guest config
has pci=X stanze. But perhaps that _and_ e820_host=1 is what should
be done.

While I think these two checks should be separate in both cases,
I don't know that this won't break something for PV instances. And
I would prefer to not have to also debug that code path at this
point. :)

Or maybe a negative check - if 'pci' stanze is there we automatically
turn on e820_host=1 (right now that is how it works). If the user
has thought 'e820_host=0' and 'pci=xxx' then we would turn the E820
off? That way if something is odd we can turn this off?

I am not disagreeing at all - I just really don't want to change
the current PV behaviour since that will potentially require
extra debugging. Current PV behaviour seems to be that that if
PCI devices are passed, e820_host=1 is always set regardless
of whether it is explicitly enabled or disabled in the config.

And I have no idea what will happen with a PV domain with
PCI devices if e820_host=1 is disabled.

Gordan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.