Re: Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities]

Avi Kivity
2009-06-17T09:29:02Z

On 06/17/2009 12:18 PM, Mark McLoughlin wrote:
> On Wed, 2009-06-17 at 12:03 +0300, Avi Kivity wrote:
>
>> On 06/17/2009 11:33 AM, Mark McLoughlin wrote:
>>
>>>> I particularly don't like the idea of arcane machine-dependent slot
>>>> allocation knowledge living in libvirt, because it needs to be in Qemu
>>>> anyway for non-libvirt users. No point in having two implementations
>>>> of something tricky and likely to have machine quirks, if one will do.
>>>>
>>> Indeed.
>>>
>> I don't understand this.
>>
>
> Take note of the "arcane machine-dependent slot allocation knowledge"
> bit.
>
> If the algorithm in for management apps is as simple as "query qemu for
> available slots and sequentially allocate slots", then that's perfectly
> fine.
>

That's the thinking.

> If management apps need to hard-code which slots are available on
> different targets and different qemu versions, or restrictions on which
> devices can use which slots, or knowledge that some devices can be
> multi-function, or ... anything like that is just lame.
>

You can't abstract these things away. If you can't put a NIC in slot 4,
and you have 7 slots, then you cannot have 7 NICs. Having qemu allocate
the slot numbers does not absolve management from knowing this
limitation and preventing the user from creating a machine with 7 slots.

Likewise, management will have to know which devices are multi-function,
since that affects their hotpluggability. Ditto if some slot if faster
than others, if you want to make use of this information you have to let
the upper layers know.

It could be done using an elaborate machine description that qemu
exposes to management coupled with a constraint solver that optimizes
the machine layout according to user specifications and hardware
limitations. Or we could take the view that real life is not perfect
(especially where computers are involved), add some machine specific
knowledge, and spend the rest of the summer at the beach.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.