[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [RFC PATCH v3 18/24] xics_kvm: Don't enable KVM_CAP_IRQ_XICS
From: |
Bharata B Rao |
Subject: |
[Qemu-ppc] [RFC PATCH v3 18/24] xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled |
Date: |
Fri, 24 Apr 2015 12:17:40 +0530 |
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.
This change allows CPU hot removal to work for sPAPR.
Signed-off-by: Bharata B Rao <address@hidden>
---
hw/intc/xics_kvm.c | 10 ++++++++++
include/hw/ppc/xics.h | 1 +
2 files changed, 11 insertions(+)
diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c
index c15453f..5b27bf8 100644
--- a/hw/intc/xics_kvm.c
+++ b/hw/intc/xics_kvm.c
@@ -331,6 +331,15 @@ static void xics_kvm_cpu_setup(XICSState *icp, PowerPCCPU
*cpu)
abort();
}
+ /*
+ * If we are reusing a parked vCPU fd corresponding to the CPU
+ * which was hot-removed earlier we don't have to renable
+ * KVM_CAP_IRQ_XICS capability again.
+ */
+ if (ss->cap_irq_xics_enabled) {
+ return;
+ }
+
if (icpkvm->kernel_xics_fd != -1) {
int ret;
@@ -343,6 +352,7 @@ static void xics_kvm_cpu_setup(XICSState *icp, PowerPCCPU
*cpu)
kvm_arch_vcpu_id(cs), strerror(errno));
exit(1);
}
+ ss->cap_irq_xics_enabled = true;
}
}
diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
index a214dd7..355a966 100644
--- a/include/hw/ppc/xics.h
+++ b/include/hw/ppc/xics.h
@@ -109,6 +109,7 @@ struct ICPState {
uint8_t pending_priority;
uint8_t mfrr;
qemu_irq output;
+ bool cap_irq_xics_enabled;
};
#define TYPE_ICS "ics"
--
2.1.0
- [Qemu-ppc] [RFC PATCH v3 08/24] ppc: Prepare CPU socket/core abstraction, (continued)
- [Qemu-ppc] [RFC PATCH v3 08/24] ppc: Prepare CPU socket/core abstraction, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 09/24] spapr: Add CPU hotplug handler, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 10/24] ppc: Update cpu_model in MachineState, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 11/24] ppc: Create sockets and cores for CPUs, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 12/24] spapr: CPU hotplug support, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 13/24] cpus: Add Error argument to cpu_exec_init(), Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 14/24] cpus: Convert cpu_index into a bitmap, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 15/24] ppc: Move cpu_exec_init() call to realize function, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 16/24] qom: Introduce object_has_no_children() API, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 17/24] cpus: Reclaim vCPU objects, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 18/24] xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled,
Bharata B Rao <=
- [Qemu-ppc] [RFC PATCH v3 19/24] xics_kvm: Add cpu_destroy method to XICS, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 20/24] spapr: CPU hot unplug support, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 21/24] spapr: Initialize hotplug memory address space, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 22/24] numa: API to lookup NUMA node by address, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 23/24] spapr: Support ibm, dynamic-reconfiguration-memory, Bharata B Rao, 2015/04/24
- [Qemu-ppc] [RFC PATCH v3 24/24] spapr: Memory hotplug support, Bharata B Rao, 2015/04/24