xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled
commita45863bda90daa8ec39e5a312b9734fd4665b016
authorBharata B Rao <bharata@linux.vnet.ibm.com>
Thu, 2 Jul 2015 06:23:20 +0000 (2 16:23 +1000)
committerAlexander Graf <agraf@suse.de>
Tue, 7 Jul 2015 15:44:52 +0000 (7 17:44 +0200)
tree47347d0061b7ca92021d3bd91041fcb52e31de28
parent19fb2c36e2475a2c68e7287e0e089d858dd7cc50
xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled

When supporting CPU hot removal by parking the vCPU fd and reusing
it during hotplug again, there can be cases where we try to reenable
KVM_CAP_IRQ_XICS CAP for the vCPU for which it was already enabled.
Introduce a boolean member in ICPState to track this and don't
reenable the CAP if it was already enabled earlier.

Re-enabling this CAP should ideally work, but currently it results in
kernel trying to create and associate ICP with this vCPU and that
fails since there is already an ICP associated with it. Hence this
patch is needed to work around this problem in the kernel.

This change allows CPU hot removal to work for sPAPR.

Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
hw/intc/xics_kvm.c
include/hw/ppc/xics.h