Re: [RFC PATCH 1/6] kvm: add device control API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/18/2013 06:21:59 AM, Gleb Natapov wrote:
Copying Christoffer since ARM has in kernel irq chip too.

On Wed, Feb 13, 2013 at 11:49:15PM -0600, Scott Wood wrote:
> Currently, devices that are emulated inside KVM are configured in a
> hardcoded manner based on an assumption that any given architecture
> only has one way to do it. If there's any need to access device state,
> it is done through inflexible one-purpose-only IOCTLs (e.g.
> KVM_GET/SET_LAPIC).  Defining new IOCTLs for every little thing is
> cumbersome and depletes a limited numberspace.
>
> This API provides a mechanism to instantiate a device of a certain
> type, returning an ID that can be used to set/get attributes of the
> device.  Attributes may include configuration parameters (e.g.
> register base address), device state, operational commands, etc.  It
> is similar to the ONE_REG API, except that it acts on devices rather
> than vcpus.
You are not only provide different way to create in kernel irq chip you also use an alternate way to trigger interrupt lines. Before going into
interface specifics lets think about whether it is really worth it?

Which "it" do you mean here?

The ability to set/get attributes is needed. Sorry, but "get or set one blob of data, up to 512 bytes, for the entire irqchip" is just not good enough -- assuming you don't want us to start sticking pointers and commands in *that* data. :-)

If you mean the way to inject interrupts, it's simpler this way. Why go out of our way to inject common glue code into a communication path between hw/kvm/mpic.c in QEMU and arch/powerpc/kvm/mpic.c in KVM? Or rather, why make that common glue be specific to this one function when we could reuse the same communication glue used for other things, such as device state?

And that's just for regular interrupts. MSIs are vastly simpler on MPIC than what x86 does.

x86 obviously support old way and will have to for some, very long, time.

Sure.

ARM vGIC code, that is ready to go upstream, uses old way too. So it will
be 2 archs against one.

I wasn't aware that that's how it worked. :-P

I was trying to be considerate by not making the entire thing gratuitously PPC or MPIC specific, as some others seem inclined to do (e.g. see irqfd and APIC). We already had a discussion on ARM's "set address" ioctl and rather than extend *that* interface, they preferred to just stick something ARM-specific in ASAP with the understanding that it would be replaced (or more accurately, kept around as a thin wrapper around the new stuff) later.

Christoffer do you think the proposed way it
better for your needs. Are you willing to make vGIC use it?

Scott, what other devices are you planning to support with this
interface?

At the moment I do not have plans for other devices, though what does it hurt for the capability to be there?

-Scott
--
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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux