On 08/22/2010 11:03 PM, Anthony Liguori wrote:
On 08/22/2010 02:44 PM, Avi Kivity wrote:
No more MI diamond and all devices have DeviceStates.
Coincidentally, it matches more closely how hardware works..
Well, I agree, but I honestly lost the context. How does this relate
to the APIC and cpu hotplug?
My original assertion was that the local APIC is not a DeviceState,
but rather it's a CPU feature.
If you look at some of the magic that apic.c has to do in the IO
callbacks, it should be clear that it's special.
It's special in that it is connected to a cpu core. So's the RTL8139
device, on one hand connected to a PCI bus, on the other hand connected
to a PHY (netdev in qemu).
In the not too distant future, I'd like to move apic.c to
target-i386. There should be no need to explicitly instantiate it
when you instantiate a CPU.
But then there's a need explicitly not to instantiate it when using -isapc.
BTW, this gets a bit funky with KVM. If we declare that the lapic is
part of the CPU, then in an ideal world we would have interfaces for
the I/O APIC as part of the KVM interface so we could implement the
I/O APIC in userspace with the lapic implemented in the kernel.
We discussed that once (or rather, twice), but the conclusion was it was
too much work for the gain, especially as we'd have to keep supporting
the old interface forever.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.