From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Mackerras Subject: Re: [STRAWMAN PATCH] KVM: PPC: Add ioctl to specify interrupt controller architecture to emulate Date: Fri, 8 Mar 2013 21:37:55 +1100 Message-ID: <20130308103755.GA8811@iris.ozlabs.ibm.com> References: <20130307032913.GC2385@drongo> <09DD5EF9-1DC8-4B8A-848D-B9FDA5E0C9B7@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, Gleb Natapov , Stuart Yoder , Scott Wood To: Alexander Graf Return-path: Content-Disposition: inline In-Reply-To: <09DD5EF9-1DC8-4B8A-848D-B9FDA5E0C9B7@suse.de> Sender: kvm-ppc-owner@vger.kernel.org List-Id: kvm.vger.kernel.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. 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. I have used the first argument (cap->args[0]) to specify which interrupt controller you want to connect the vcpu to. > I don't have a good feeling for how hard this would be and whether locking would become overly difficult. I think it's fair to restrict the enable_cap to only work when no other vcpu is running. Of course, not requiring a stopped machine would make hotplug easier for user space :). Since it's a per-vcpu ioctl, I'm expecting userspace to enable the capability for each hotplugged vcpu. Paul.