On 14.03.2013, at 01:14, Scott Wood wrote:

> On 03/08/2013 05:04:30 AM, Alexander Graf wrote:
>> Am 08.03.2013 um 11:37 schrieb Paul Mackerras <pau...@samba.org>:
>> > On Thu, Mar 07, 2013 at 03:00:52PM +0100, Alexander Graf wrote:
>> >>
>> >> Could you please (in a quick and drafty way) try and see if setting the 
>> >> IRQ arch (using enable_cap) after the vcpu got created would work for you?
>> >>
>> >> That enable_cap would then have to loop through all devices and notify 
>> >> irq controllers that a new cpu got spawned.
>> >> All vcpu local payloads would have to get allocated and initialized 
>> >> outside of vcpu_create too then.
>> >
>> > So, the first thing I noticed is that KVM_ENABLE_CAP is a vcpu ioctl,
>> > not a vm ioctl.  Apparently qemu calls it once for every vcpu when it
>> > calls it on ppc targets.  That means that it doesn't have to loop
>> > through all vcpus; it just needs to connect up the one it's called
>> > for, which simplifies things.
>> That's the point, yes :). And if for some weird reason one vcpu isn't 
>> connected to the interrupt controller (or to a different one), we can model 
>> that too ;).
>> > I'm coding it up now and porting my XICS emulation to the kvm device
>> > API proposed by Scott.  It looks like it's going to be OK.
>> Awesome! Scott is going to prototype whether using fds as tokens makes 
>> sense. But even if we change it to an fd model, there should be very little 
>> work to do to move xics to it too if it's already modeled for create_device.
> 
> It looks like the fd approach will be workable.  

Very nice :).

> Paul, do you want to post what you have in terms of the capability approach, 
> so I can base an fd version of the device control patchset on it, or should I 
> fd-ize the current patchset without it, and then rework mpic on top of the 
> capability stuff once you've posted your device-control-using patchset?
> 
>> > I have
>> > used the first argument (cap->args[0]) to specify which interrupt
>> > controller you want to connect the vcpu to.
>> Ah, nice idea. So you basically make the vcpu connection explicit. Perfect! 
>> Then just pass the interrupt controller pin id in cap->args[1] so we don't 
>> need to guess which vcpu we're talking about and all is well :). No implicit 
>> assumptions left in the kernel.
> 
> Is the IRQ architecture now implicit based on what sort of irqchip you point 
> at, or is there a separate capability for each IRQ architecture?  The latter 
> may make more sense -- you can test for specific architectures, provide 
> architecture-specific arguments, some architectures may not require pointing 
> at a device (e.g. the "LAPIC in kernel, IO-APIC in userspace" model), etc.

I tend to be quite indifferent whether we should make it implicit or explicit. 
But so far, explicit usually ended up more flexible and a better interface. So 
yes, let's go with different CAPs for different interrupt controllers. However, 
let's make sure the parameters stay compatible for now.


Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to