From: David Gibson <david@gibson.dropbear.id.au>
To: Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: mdroth@linux.vnet.ibm.com, aik@ozlabs.ru, agraf@suse.de,
qemu-devel@nongnu.org, pbonzini@redhat.com, qemu-ppc@nongnu.org,
tyreld@linux.vnet.ibm.com, nfont@linux.vnet.ibm.com,
imammedo@redhat.com, afaerber@suse.de
Subject: Re: [Qemu-devel] [PATCH v5 06/10] xics_kvm: Add cpu_destroy method to XICS
Date: Tue, 1 Dec 2015 12:01:36 +1100 [thread overview]
Message-ID: <20151201010136.GE31343@voom.redhat.com> (raw)
In-Reply-To: <1448024079-20808-7-git-send-email-bharata@linux.vnet.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 3996 bytes --]
On Fri, Nov 20, 2015 at 06:24:35PM +0530, Bharata B Rao wrote:
> XICS is setup for each CPU during initialization. Provide a routine
> to undo the same when CPU is 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>
> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/intc/xics.c | 12 ++++++++++++
> hw/intc/xics_kvm.c | 13 +++++++++++--
> include/hw/ppc/xics.h | 2 ++
> 3 files changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/hw/intc/xics.c b/hw/intc/xics.c
> index 9ff5796..e1161b2 100644
> --- a/hw/intc/xics.c
> +++ b/hw/intc/xics.c
> @@ -44,6 +44,18 @@ static int get_cpu_index_by_dt_id(int cpu_dt_id)
> return -1;
> }
>
> +void xics_cpu_destroy(XICSState *icp, PowerPCCPU *cpu)
> +{
> + CPUState *cs = CPU(cpu);
> + XICSStateClass *info = XICS_COMMON_GET_CLASS(icp);
> +
> + assert(cs->cpu_index < icp->nr_servers);
> +
> + 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..cb96f69 100644
> --- a/hw/intc/xics_kvm.c
> +++ b/hw/intc/xics_kvm.c
> @@ -331,6 +331,8 @@ static void xics_kvm_cpu_setup(XICSState *icp, PowerPCCPU *cpu)
> abort();
> }
>
> + ss->cs = cs;
> +
Actually, it probably makes more sense to move the management of
ss->cs to the base xics code. There's nothing really kvm specific
about it.
> /*
> * If we are reusing a parked vCPU fd corresponding to the CPU
> * which was hot-removed earlier we don't have to renable
> @@ -343,8 +345,6 @@ static void xics_kvm_cpu_setup(XICSState *icp, PowerPCCPU *cpu)
> if (icpkvm->kernel_xics_fd != -1) {
> int ret;
>
> - ss->cs = cs;
> -
> ret = kvm_vcpu_enable_cap(cs, KVM_CAP_IRQ_XICS, 0,
> icpkvm->kernel_xics_fd, kvm_arch_vcpu_id(cs));
> if (ret < 0) {
> @@ -356,6 +356,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 +494,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__ */
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-12-01 1:42 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-20 12:54 [Qemu-devel] [PATCH v5 00/10] sPAPR CPU hotplug Bharata B Rao
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 01/10] vl: Don't allow CPU toplogies with partially filled cores Bharata B Rao
2015-12-01 0:37 ` David Gibson
2015-12-02 3:04 ` Bharata B Rao
2015-12-02 13:52 ` Igor Mammedov
2015-12-02 14:14 ` Eduardo Habkost
2015-12-02 14:38 ` Bharata B Rao
2015-12-02 15:19 ` Eduardo Habkost
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 02/10] exec: Remove cpu from cpus list during cpu_exec_exit() Bharata B Rao
2015-12-01 0:44 ` David Gibson
2015-12-02 3:47 ` Bharata B Rao
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 03/10] exec: Do vmstate unregistration from cpu_exec_exit() Bharata B Rao
2015-12-01 0:46 ` David Gibson
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 04/10] cpu: Reclaim vCPU objects Bharata B Rao
2015-11-30 7:30 ` Alexey Kardashevskiy
2015-12-02 3:50 ` Bharata B Rao
2015-12-01 0:55 ` David Gibson
2015-12-02 5:28 ` Bharata B Rao
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 05/10] cpu: Add a sync version of cpu_remove() Bharata B Rao
2015-12-01 0:57 ` David Gibson
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 06/10] xics_kvm: Add cpu_destroy method to XICS Bharata B Rao
2015-12-01 1:01 ` David Gibson [this message]
2015-12-02 5:45 ` Bharata B Rao
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 07/10] spapr: Enable CPU hotplug for pseries-2.5 and add CPU DRC DT entries Bharata B Rao
2015-12-01 1:06 ` David Gibson
2015-12-02 5:47 ` Bharata B Rao
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 08/10] spapr: CPU hotplug support Bharata B Rao
2015-12-01 1:30 ` David Gibson
2015-12-01 4:48 ` Bharata B Rao
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 09/10] spapr: CPU hot unplug support Bharata B Rao
2015-12-01 1:34 ` David Gibson
2015-12-02 5:49 ` Bharata B Rao
2015-11-20 12:54 ` [Qemu-devel] [PATCH v5 10/10] target-ppc: Enable CPU hotplug for POWER8 CPU family Bharata B Rao
2015-11-23 11:54 ` [Qemu-devel] [PATCH v5 00/10] sPAPR CPU hotplug Peter Krempa
2015-11-23 13:04 ` Christian Borntraeger
2015-12-01 1:43 ` 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=20151201010136.GE31343@voom.redhat.com \
--to=david@gibson.dropbear.id.au \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=bharata@linux.vnet.ibm.com \
--cc=imammedo@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=nfont@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--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.