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

Re: [Xen-devel] [PATCH v2 5/5] libxl, hvmloader: Don't relocate memory for MMIO hole



On Thu, 20 Jun 2013, George Dunlap wrote:
> On 19/06/13 18:18, Stefano Stabellini wrote:
> > On Tue, 18 Jun 2013, George Dunlap wrote:
> > > +    const char *s;
> > > +    bool allow_memory_relocate = 1;
> > Arguably the default should be 0, given that the default device model is
> > qemu-xen that cannot cope with memory relocation.
> 
> OK, so time to think a bit harder about this. This will only matter if someone
> is using this hvmloader with a non-libxl toolstack which includes xend, or a
> home-grown one.
> 
> * If we default to 1, then:
>  - VMs running qemu-traditional will be have exactly as before
>  - VMs running qemu-xen will have the risk of crashing mysteriously.
>  - If qemu-xen is the default, then there is a work-around: run
> qemu-traditional

If we are talking about xend, then there is no point in thinking about
qemu-xen, given that xend cannot use it.


> * If we default to 0, then:
>  - VMs running qemu-xen will be fine
>  - VMs running qemu-traditional may have strange problems; we haven't tested
> relocating things into 64-bit with qemu-tradiational.

This is not true, hvmloader even before your changes relocates bar above
64-bit. It just does it in a more limited way.


>  - There is no work-around available; if the device either can't be relocated,
> or the OS / qemu can't handle the relocation, then the user is just hosed.

Given that we are talking about xend, we are forced to run
qemu-xen-traditional, so there is no workaround.


> Furthermore, I think xm defaults to qemu-traditional, right?  Does xm even
> know how to drive qemu-xen?  If it does default to qemu-traditional,
> defaulting to 0 will pretty much guarantee a whole slew of currently-working
> configurations will be affected (perhaps break, perhaps not).
> 
> Overall I think defaulting to 1 is probably the lowest-risk option.

Defaulting to 1 makes sure that the behaviour of xend remains the same.
OK.


> > > +    s = xenstore_read(HVM_XS_ALLOW_MEMORY_RELOCATE, NULL);
> > > +    if ( s )
> > > +        allow_memory_relocate = (bool)strtoll(s, NULL, 0);
> > > +    printf("Relocating guest memory for lowmem MMIO space %s\n",
> > > +           allow_memory_relocate?"enabled":"disabled");
> > It doesn't take a strtoll to parse a boolean.
> 
> As discussed in v1, strtoll is the only "XtoY" function available in
> hvmloader. :-)  The only other option would be to explicitly compare for "1"
> or "0" (or do some half-baked *s-'0' thing).

What's wrong with testing for '0' or '1'?


> This does make me think though -- what is the semantics of casting to a bool?
> Is it !!, or will it essentially clip off the high bits?  (e.g., would "2"
> become "1", or "0"?)

I think that is !!


> > >       /* Program PCI-ISA bridge with appropriate link routes. */
> > >       isa_irq = 0;
> > >       for ( link = 0; link < 4; link++ )
> > > @@ -209,14 +220,38 @@ void pci_setup(void)
> > >           pci_writew(devfn, PCI_COMMAND, cmd);
> > >       }
> > >   -    while ( (mmio_total > (pci_mem_end - pci_mem_start)) &&
> > > -            ((pci_mem_start << 1) != 0) )
> > > +    /*
> > > +     * At the moment qemu-xen can't deal with relocated memory regions.
> > > +     * It's too close to the release to make a proper fix; for now,
> > > +     * only allow the MMIO hole to grow large enough to move guest memory
> > > +     * if we're running qemu-traditional.  Items that don't fit will be
> > > +     * relocated into the 64-bit address space.
> > I would avoid mentioning release issues in a comment within the code.
> 
> I guess it depends on whether we intend to keep this change or to get rid of
> it once the 4.4. window opens. If we intend to get rid of it, then I think the
> comment should stay; if for some reason someone comes along later and and
> wants to know, "Can I change this?" Knowing that it was only meant to be a
> temporary measure is important information.
> 
> Really, I'm of the opinion that if KVM is using SeaBIOS's pci routines, we
> should just move do the same.  No sense in duplicating the effort for
> something like this.

I would never make any changes with the assumption that they are going
to be reverted. There is nothing more lasting than a temporary
workaround. The comment should stay and explain why we are using it, but
mentioning the release (what release? when was it?) is pointless.

_______________________________________________
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®.