Re: [Qemu-devel] KVM call minutes for Feb 8

Anthony Liguori
2011-02-13T15:39:04Z

On 02/10/2011 04:29 AM, Avi Kivity wrote:
> On 02/10/2011 09:47 AM, Anthony Liguori wrote:
>>
>> So very concretely, I'm suggesting we do the following to target-i386:
>>
>> 1) make the i440fx device have an embedded ide controller, piix3, and
>> usb controller that get initialized automatically. The piix3 embeds
>> the PCI-to-ISA bridge along with all of the default ISA devices (rtc,
>> serial, etc.).
>
> This I like.
>
>>
>> 2) get rid of the entire concept of machines. Creating a i440fx is
>> essentially equivalent to creating a bare machine.
>
> No, it's not. The 440fx does not include an IOAPIC, for example.
> There may be other optional components, or differences in wiring, that
> make two machines with i440fx not identical.

The IOAPIC is basically the only other component and I view it as part
of the CPU interface to the chipset.

But still, if we're creating a machine from scratch:

qemu -device i440fx,id=nb -device piix3,id=sb,chipset=nb -device
ioapic,id=ioapic,chipset=sb -device cpu,ioapic=ioapic,northbridge=nb

Is not all that unreasonable and presents a fully functioning PC.

>>
>> 4) model the CPUs as devices that take a pointer to a host
>> controller, for x86, the normal case would be giving it a pointer to
>> i440fx.
>>
>
> Surely the connection is via a bus? An x86 cpu talks to the bus, and
> there happens to be an 440fx north bridge at the end of it. It could
> also be a Q35 or something else.

I see being on a bus as really just taking a pointer to an interface.
So yes, the i440fx would implement a PentiumCpuInterface or something
like that and the CPU would take a pointer to a PentiumCpuInterface[1].

This is part of why having proper polymorphism is important. We need it
in order to be able to express concepts like interfaces.

[1] This is just a Random Bad Name. Don't read anything into it.

Regards,

Anthony Liguori