[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH v4 8/8] xics_kvm: Add cpu_destroy method to XICS
From: |
Bharata B Rao |
Subject: |
Re: [Qemu-ppc] [PATCH v4 8/8] xics_kvm: Add cpu_destroy method to XICS |
Date: |
Fri, 5 Jun 2015 14:45:59 +0530 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Fri, Jun 05, 2015 at 06:09:38PM +1000, Alexey Kardashevskiy wrote:
> On 06/05/2015 02:25 PM, Bharata B Rao wrote:
> >XICS is setup for each CPU during initialization. Provide a routine
> >to undo the same when CPU is unplugged. Also ensure xics reset doesn't set
> >irq for CPUs that are already unplugged.
> >
> >This allows reboot of a VM that has undergone CPU hotplug and unplug
> >to work correctly.
> >
> >Signed-off-by: Bharata B Rao <address@hidden>
> >---
> > hw/intc/xics.c | 14 ++++++++++++++
> > hw/intc/xics_kvm.c | 15 +++++++++++++--
> > include/hw/ppc/xics.h | 2 ++
> > 3 files changed, 29 insertions(+), 2 deletions(-)
> >
> >diff --git a/hw/intc/xics.c b/hw/intc/xics.c
> >index 924b1ae..3f87f82 100644
> >--- a/hw/intc/xics.c
> >+++ b/hw/intc/xics.c
> >@@ -44,6 +44,20 @@ static int get_cpu_index_by_dt_id(int cpu_dt_id)
> > return -1;
> > }
> >
> >+void xics_cpu_destroy(XICSState *icp, PowerPCCPU *cpu)
>
>
> xics_cpu_destroy() is not used by anything, may be push it later with the
> stuff which needs it?
Yeah it is not used in this patchset, will leave to David/agraf
to see if they want this dropped from this series.
>
>
> >+{
> >+ CPUState *cs = CPU(cpu);
> >+ XICSStateClass *info = XICS_COMMON_GET_CLASS(icp);
> >+ ICPState *ss = &icp->ss[cs->cpu_index];
> >+
> >+ assert(cs->cpu_index < icp->nr_servers);
> >+
> >+ ss->output = NULL;
> >+ if (info->cpu_destroy) {
> >+ info->cpu_destroy(icp, cpu);
> >+ }
> >+}
> >+
> > void xics_cpu_setup(XICSState *icp, PowerPCCPU *cpu)
> > {
> > CPUState *cs = CPU(cpu);
> >diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c
> >index d58729c..e35f319 100644
> >--- a/hw/intc/xics_kvm.c
> >+++ b/hw/intc/xics_kvm.c
> >@@ -109,8 +109,10 @@ static void icp_kvm_reset(DeviceState *dev)
> > icp->pending_priority = 0xff;
> > icp->mfrr = 0xff;
> >
> >- /* Make all outputs are deasserted */
> >- qemu_set_irq(icp->output, 0);
> >+ /* Make all outputs are deasserted only if the CPU thread is in use */
> >+ if (icp->output) {
> >+ qemu_set_irq(icp->output, 0);
> >+ }
>
>
> This feels unrelated to what the patch claims that it does. Or
> xics_cpu_destroy() somehow indirectly calls icp_kvm_reset()?
When a VM is rebooted, device_reset of icp device will result in
icp_kvm_reset() which will do qemu_set_irq(). This shouldn't happen for
a CPU that is already removed. So above check ensures that we
don't try to desssert irq for a removed CPU.
Regards,
Bharata.
- [Qemu-ppc] [PATCH v4 4/8] spapr: Reorganize CPU dt generation code, (continued)
[Qemu-ppc] [PATCH v4 6/8] ppc: Update cpu_model in MachineState, Bharata B Rao, 2015/06/05
[Qemu-ppc] [PATCH v4 7/8] xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled, Bharata B Rao, 2015/06/05
[Qemu-ppc] [PATCH v4 8/8] xics_kvm: Add cpu_destroy method to XICS, Bharata B Rao, 2015/06/05