On 01/18/2011 08:28 AM, Jan Kiszka wrote:
On 2011-01-12 11:31, Jan Kiszka wrote:
Am 12.01.2011 11:22, Avi Kivity wrote:
On 01/11/2011 03:54 PM, Anthony Liguori wrote:
Right, we should introduce a KVMBus that KVM devices are created on.
The devices can get at KVMState through the BusState.
There is no kvm bus in a PC (I looked). We're bending the device model
here because a device is implemented in the kernel and not in
userspace. An implementation detail is magnified beyond all proportions.
An ioapic that is implemented by kvm lives in exactly the same place
that the qemu ioapic lives in. An assigned pci device lives on the PCI
bus, not a KVMBus. If we need a pointer to KVMState, then we must find
it elsewhere, not through creating imaginary buses that don't exist.
Exactly.
So we can either "infect" the whole device tree with kvm (or maybe a
more generic accelerator structure that also deals with Xen) or we need
to pull the reference inside the device's init function from some global
service (kvm_get_state).
Note that this topic is still waiting for good suggestions, specifically
from those who believe in kvm_state references :). This is not only
blocking kvmstate merge but will affect KVM irqchips as well.
It boils down to how we reasonably pass a kvm_state reference from
machine init code to a sysbus device. I'm probably biased, but I don't
see any way that does not work against the idea of confining access to
kvm_state or breaks device instantiation from the command line or a
config file.
A KVM device should sit on a KVM specific bus that hangs off of sysbus.
It can get to kvm_state through that bus.
That bus doesn't get instantiated through qdev so requiring a pointer
argument should not be an issue.
Regards,
Anthony Liguori
Jan
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html