|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [XEN][RFC PATCH V2 15/17] xl: support spawn/destroy on multiple device model
On 08/24/2012 03:09 PM, Ian Campbell wrote: On Fri, 2012-08-24 at 14:51 +0100, Julien Grall wrote: When you told feature, it's only for libxl or even for Xen ? In case of libxl, if 'device_models' options is not specified we used only one QEMU. So there is compatibility with previous configuration file. In case of Xen, it's hard to have a compatibility. We can still spawn only one QEMU, but ioreq handling will not send an io request if no device models registered it. There is no more default QEMU. + * PCI device number. Before 3, we have IDE, ISA, SouthBridge and + * XEN PCI. Theses devices will be emulate in each QEMU, but only + * one QEMU (the one which emulates default device) will register + * these devices through Xen PCI hypercall. + */ + static unsigned int bdf = 3;Do you mean const rather than static?No static. With QEMU disaggregation, the toolstack allocate BDF incrementaly. QEMU is unable to know if a BDF is already allocated in another QEMU.This is broken if the toolstack is building multiple domains, since the bdf will be preserved across each of them. You need to put this in some sort of data structure specific to this particular iteration of the builder code. We must surely have something suitable close to hand in this function. libxl__domain_build_state perhaps? Will be fix in the next patch version. A static variable in a library is almost always a mistake.Isn't this baking in some implementation detail from the current qemu version? What happens if it changes?I don't have another way for the moment. I would be happy, if someone have a good solution.Could we at least make the assignments of the 3 prior BDFs explicit on the command line too? I don't understand your question. Theses 3 priors BDFs can't be modify via QEMU command line (or I don't know how).
That means:
- first QEMU can allocate ROM after ram_size + 0
- second after ram_size + 32 mo
- ...
It's a hack to avoid modification in QEMU memory allocator
(find_ram_offset exec.c in QEMU).
Aren't we already modifying qemu quite substantially to implement this functionality anyway? so why are we trying to avoid it in this one corner? Especially at the cost of doing something which on the face of it looks quite strange! It's not possible to made it in QEMU, otherwise QEMU need to be spawn one by one. Indeed, the next QEMU need to know what is the last 'address' used by the previous QEMU. I made a modification in this way, but it was abandoned. Indeed, it required XenStore. Isn't space for the ROMs allocated by SeaBIOS as part of enumerating the PCI bus anyway? Or is this a different per-ROM allocation? It's the rom allocated via pci_add_option_rom in QEMU. QEMU seems to store ROM in memory and then SeaBIOS will copy it, in the right place. -- Julien _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |