From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Bharata B Rao <bharata@linux.vnet.ibm.com>, qemu-devel@nongnu.org
Cc: thuth@redhat.com, mdroth@linux.vnet.ibm.com, agraf@suse.de,
qemu-ppc@nongnu.org, tyreld@linux.vnet.ibm.com,
nfont@linux.vnet.ibm.com, david@gibson.dropbear.id.au
Subject: Re: [Qemu-devel] [PATCH v4 8/8] xics_kvm: Add cpu_destroy method to XICS
Date: Fri, 05 Jun 2015 18:09:38 +1000 [thread overview]
Message-ID: <55715942.2090201@ozlabs.ru> (raw)
In-Reply-To: <1433478358-993-9-git-send-email-bharata@linux.vnet.ibm.com>
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 <bharata@linux.vnet.ibm.com>
> ---
> 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?
> +{
> + 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()?
>
> icp_set_kvm_state(icp, 1);
> }
> @@ -356,6 +358,14 @@ static void xics_kvm_cpu_setup(XICSState *icp, PowerPCCPU *cpu)
> }
> }
>
> +static void xics_kvm_cpu_destroy(XICSState *icp, PowerPCCPU *cpu)
> +{
> + CPUState *cs = CPU(cpu);
> + ICPState *ss = &icp->ss[cs->cpu_index];
> +
> + ss->cs = NULL;
> +}
> +
> static void xics_kvm_set_nr_irqs(XICSState *icp, uint32_t nr_irqs, Error **errp)
> {
> icp->nr_irqs = icp->ics->nr_irqs = nr_irqs;
> @@ -486,6 +496,7 @@ static void xics_kvm_class_init(ObjectClass *oc, void *data)
>
> dc->realize = xics_kvm_realize;
> xsc->cpu_setup = xics_kvm_cpu_setup;
> + xsc->cpu_destroy = xics_kvm_cpu_destroy;
> xsc->set_nr_irqs = xics_kvm_set_nr_irqs;
> xsc->set_nr_servers = xics_kvm_set_nr_servers;
> }
> diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
> index 355a966..2faad48 100644
> --- a/include/hw/ppc/xics.h
> +++ b/include/hw/ppc/xics.h
> @@ -68,6 +68,7 @@ struct XICSStateClass {
> DeviceClass parent_class;
>
> void (*cpu_setup)(XICSState *icp, PowerPCCPU *cpu);
> + void (*cpu_destroy)(XICSState *icp, PowerPCCPU *cpu);
> void (*set_nr_irqs)(XICSState *icp, uint32_t nr_irqs, Error **errp);
> void (*set_nr_servers)(XICSState *icp, uint32_t nr_servers, Error **errp);
> };
> @@ -166,5 +167,6 @@ int xics_alloc_block(XICSState *icp, int src, int num, bool lsi, bool align);
> void xics_free(XICSState *icp, int irq, int num);
>
> void xics_cpu_setup(XICSState *icp, PowerPCCPU *cpu);
> +void xics_cpu_destroy(XICSState *icp, PowerPCCPU *cpu);
>
> #endif /* __XICS_H__ */
>
--
Alexey
next prev parent reply other threads:[~2015-06-05 8:09 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-05 4:25 [Qemu-devel] [PATCH v4 0/8] sPAPR CPU hotplug pre-requisites Bharata B Rao
2015-06-05 4:25 ` [Qemu-devel] [PATCH v4 1/8] spapr: Consider max_cpus during xics initialization Bharata B Rao
2015-06-05 5:30 ` Alexey Kardashevskiy
2015-06-05 7:07 ` Bharata B Rao
2015-06-05 8:01 ` Alexey Kardashevskiy
2015-06-15 6:55 ` David Gibson
2015-06-05 4:25 ` [Qemu-devel] [PATCH v4 2/8] spapr: Support ibm, lrdr-capacity device tree property Bharata B Rao
2015-06-15 6:56 ` David Gibson
2015-06-05 4:25 ` [Qemu-devel] [PATCH v4 3/8] cpus: Add a macro to walk CPUs in reverse Bharata B Rao
2015-06-05 14:39 ` Andreas Färber
2015-06-15 6:41 ` David Gibson
2015-06-05 4:25 ` [Qemu-devel] [PATCH v4 4/8] spapr: Reorganize CPU dt generation code Bharata B Rao
2015-06-05 6:09 ` Alexey Kardashevskiy
2015-06-05 7:06 ` Bharata B Rao
2015-06-05 7:55 ` Alexey Kardashevskiy
2015-06-15 6:57 ` David Gibson
2015-06-05 4:25 ` [Qemu-devel] [PATCH v4 5/8] spapr: Consolidate cpu init code into a routine Bharata B Rao
2015-06-15 6:59 ` David Gibson
2015-06-15 8:15 ` Thomas Huth
2015-06-16 5:40 ` David Gibson
2015-06-16 6:36 ` Thomas Huth
2015-06-17 4:43 ` David Gibson
2015-06-05 4:25 ` [Qemu-devel] [PATCH v4 6/8] ppc: Update cpu_model in MachineState Bharata B Rao
2015-06-05 4:25 ` [Qemu-devel] [PATCH v4 7/8] xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled Bharata B Rao
2015-06-15 6:59 ` David Gibson
2015-06-05 4:25 ` [Qemu-devel] [PATCH v4 8/8] xics_kvm: Add cpu_destroy method to XICS Bharata B Rao
2015-06-05 8:09 ` Alexey Kardashevskiy [this message]
2015-06-05 9:15 ` Bharata B Rao
2015-06-15 7:00 ` David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55715942.2090201@ozlabs.ru \
--to=aik@ozlabs.ru \
--cc=agraf@suse.de \
--cc=bharata@linux.vnet.ibm.com \
--cc=david@gibson.dropbear.id.au \
--cc=mdroth@linux.vnet.ibm.com \
--cc=nfont@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=thuth@redhat.com \
--cc=tyreld@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.