From: Salil Mehta via <qemu-devel@nongnu.org>
To: Gavin Shan <gshan@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"qemu-arm@nongnu.org" <qemu-arm@nongnu.org>
Cc: "maz@kernel.org" <maz@kernel.org>,
"jean-philippe@linaro.org" <jean-philippe@linaro.org>,
Jonathan Cameron <jonathan.cameron@huawei.com>,
"lpieralisi@kernel.org" <lpieralisi@kernel.org>,
"peter.maydell@linaro.org" <peter.maydell@linaro.org>,
"richard.henderson@linaro.org" <richard.henderson@linaro.org>,
"imammedo@redhat.com" <imammedo@redhat.com>,
"andrew.jones@linux.dev" <andrew.jones@linux.dev>,
"david@redhat.com" <david@redhat.com>,
"philmd@linaro.org" <philmd@linaro.org>,
"eric.auger@redhat.com" <eric.auger@redhat.com>,
"oliver.upton@linux.dev" <oliver.upton@linux.dev>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"mst@redhat.com" <mst@redhat.com>,
"will@kernel.org" <will@kernel.org>,
"rafael@kernel.org" <rafael@kernel.org>,
"alex.bennee@linaro.org" <alex.bennee@linaro.org>,
"linux@armlinux.org.uk" <linux@armlinux.org.uk>,
"darren@os.amperecomputing.com" <darren@os.amperecomputing.com>,
"ilkka@os.amperecomputing.com" <ilkka@os.amperecomputing.com>,
"vishnu@os.amperecomputing.com" <vishnu@os.amperecomputing.com>,
"karl.heubaum@oracle.com" <karl.heubaum@oracle.com>,
"miguel.luis@oracle.com" <miguel.luis@oracle.com>,
"salil.mehta@opnsrc.net" <salil.mehta@opnsrc.net>,
zhukeqian <zhukeqian1@huawei.com>,
"wangxiongfeng (C)" <wangxiongfeng2@huawei.com>,
"wangyanan (Y)" <wangyanan55@huawei.com>,
"jiakernel2@gmail.com" <jiakernel2@gmail.com>,
"maobibo@loongson.cn" <maobibo@loongson.cn>,
"lixianglai@loongson.cn" <lixianglai@loongson.cn>,
Linuxarm <linuxarm@huawei.com>
Subject: RE: [PATCH V2 08/10] physmem: Add helper function to destroy CPU AddressSpace
Date: Tue, 3 Oct 2023 11:54:26 +0000 [thread overview]
Message-ID: <25f9cedfb0444e92922de609b5e1028a@huawei.com> (raw)
In-Reply-To: <bc5e5558-8899-30d1-e64a-c1012437766e@redhat.com>
Hi Gavin,
> From: Gavin Shan <gshan@redhat.com>
> Sent: Tuesday, October 3, 2023 2:37 AM
> To: Salil Mehta <salil.mehta@huawei.com>; qemu-devel@nongnu.org; qemu-
> arm@nongnu.org
> Cc: maz@kernel.org; jean-philippe@linaro.org; Jonathan Cameron
> <jonathan.cameron@huawei.com>; lpieralisi@kernel.org;
> peter.maydell@linaro.org; richard.henderson@linaro.org;
> imammedo@redhat.com; andrew.jones@linux.dev; david@redhat.com;
> philmd@linaro.org; eric.auger@redhat.com; oliver.upton@linux.dev;
> pbonzini@redhat.com; mst@redhat.com; will@kernel.org; rafael@kernel.org;
> alex.bennee@linaro.org; linux@armlinux.org.uk;
> darren@os.amperecomputing.com; ilkka@os.amperecomputing.com;
> vishnu@os.amperecomputing.com; karl.heubaum@oracle.com;
> miguel.luis@oracle.com; salil.mehta@opnsrc.net; zhukeqian
> <zhukeqian1@huawei.com>; wangxiongfeng (C) <wangxiongfeng2@huawei.com>;
> wangyanan (Y) <wangyanan55@huawei.com>; jiakernel2@gmail.com;
> maobibo@loongson.cn; lixianglai@loongson.cn; Linuxarm <linuxarm@huawei.com>
> Subject: Re: [PATCH V2 08/10] physmem: Add helper function to destroy CPU
> AddressSpace
>
> On 9/30/23 10:19, Salil Mehta wrote:
> > Virtual CPU Hot-unplug leads to unrealization of a CPU object. This also
> > involves destruction of the CPU AddressSpace. Add common function to help
> > destroy the CPU AddressSpace.
> >
> > Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> > ---
> > include/exec/cpu-common.h | 8 ++++++++
> > include/hw/core/cpu.h | 1 +
> > softmmu/physmem.c | 25 +++++++++++++++++++++++++
> > 3 files changed, 34 insertions(+)
> >
> > diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
> > index 41788c0bdd..eb56a228a2 100644
> > --- a/include/exec/cpu-common.h
> > +++ b/include/exec/cpu-common.h
> > @@ -120,6 +120,14 @@ size_t qemu_ram_pagesize_largest(void);
> > */
> > void cpu_address_space_init(CPUState *cpu, int asidx,
> > const char *prefix, MemoryRegion *mr);
> > +/**
> > + * cpu_address_space_destroy:
> > + * @cpu: CPU for which address space needs to be destroyed
> > + * @asidx: integer index of this address space
> > + *
> > + * Note that with KVM only one address space is supported.
> > + */
> > +void cpu_address_space_destroy(CPUState *cpu, int asidx);
> >
> > void cpu_physical_memory_rw(hwaddr addr, void *buf,
> > hwaddr len, bool is_write);
> > diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> > index 648b5b3586..65d2ae4581 100644
> > --- a/include/hw/core/cpu.h
> > +++ b/include/hw/core/cpu.h
> > @@ -355,6 +355,7 @@ struct CPUState {
> > QSIMPLEQ_HEAD(, qemu_work_item) work_list;
> >
> > CPUAddressSpace *cpu_ases;
> > + int cpu_ases_count;
> > int num_ases;
> > AddressSpace *as;
> > MemoryRegion *memory;
>
> @num_ases and @cpu_ases_count are duplicate to each other to some extent.
> The real problem is @cpu_ases is allocated at once and we need to make the
> allocation sparse. In that way, each CPU address space is independent and can be
> destroyed independently. The sparse allocation for the CPU address space can be done
> in cpu_address_space_init() like below:
Well, I think Phil/Richard are pointing to something else here i.e. destroy
at once.
https://lore.kernel.org/qemu-devel/594b2550-9a73-684f-6e54-29401dc6cd7a@linaro.org/
I used reference counter because I was not sure if it is safe to
assume that AddressSpace will always be destroyed at once.
BTW, there is no functional problem with above patch. Just that we
do not have to maintain the reference counter.
You can use below command to check CPU memory address spaces are getting
destroyed properly and get re-created again with CPU hot(un)plug:
Qemu> info mtree
Thanks
Salil.
WARNING: multiple messages have this Message-ID (diff)
From: Salil Mehta <salil.mehta@huawei.com>
To: Gavin Shan <gshan@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"qemu-arm@nongnu.org" <qemu-arm@nongnu.org>
Cc: "maz@kernel.org" <maz@kernel.org>,
"jean-philippe@linaro.org" <jean-philippe@linaro.org>,
Jonathan Cameron <jonathan.cameron@huawei.com>,
"lpieralisi@kernel.org" <lpieralisi@kernel.org>,
"peter.maydell@linaro.org" <peter.maydell@linaro.org>,
"richard.henderson@linaro.org" <richard.henderson@linaro.org>,
"imammedo@redhat.com" <imammedo@redhat.com>,
"andrew.jones@linux.dev" <andrew.jones@linux.dev>,
"david@redhat.com" <david@redhat.com>,
"philmd@linaro.org" <philmd@linaro.org>,
"eric.auger@redhat.com" <eric.auger@redhat.com>,
"oliver.upton@linux.dev" <oliver.upton@linux.dev>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"mst@redhat.com" <mst@redhat.com>,
"will@kernel.org" <will@kernel.org>,
"rafael@kernel.org" <rafael@kernel.org>,
"alex.bennee@linaro.org" <alex.bennee@linaro.org>,
"linux@armlinux.org.uk" <linux@armlinux.org.uk>,
"darren@os.amperecomputing.com" <darren@os.amperecomputing.com>,
"ilkka@os.amperecomputing.com" <ilkka@os.amperecomputing.com>,
"vishnu@os.amperecomputing.com" <vishnu@os.amperecomputing.com>,
"karl.heubaum@oracle.com" <karl.heubaum@oracle.com>,
"miguel.luis@oracle.com" <miguel.luis@oracle.com>,
"salil.mehta@opnsrc.net" <salil.mehta@opnsrc.net>,
zhukeqian <zhukeqian1@huawei.com>,
"wangxiongfeng (C)" <wangxiongfeng2@huawei.com>,
"wangyanan (Y)" <wangyanan55@huawei.com>,
"jiakernel2@gmail.com" <jiakernel2@gmail.com>,
"maobibo@loongson.cn" <maobibo@loongson.cn>,
"lixianglai@loongson.cn" <lixianglai@loongson.cn>,
Linuxarm <linuxarm@huawei.com>
Subject: RE: [PATCH V2 08/10] physmem: Add helper function to destroy CPU AddressSpace
Date: Tue, 3 Oct 2023 11:54:26 +0000 [thread overview]
Message-ID: <25f9cedfb0444e92922de609b5e1028a@huawei.com> (raw)
Message-ID: <20231003115426.x-SJbxFOairVaQ6n0EyHPerErnsK-_khGvowQsSfZmg@z> (raw)
In-Reply-To: <bc5e5558-8899-30d1-e64a-c1012437766e@redhat.com>
Hi Gavin,
> From: Gavin Shan <gshan@redhat.com>
> Sent: Tuesday, October 3, 2023 2:37 AM
> To: Salil Mehta <salil.mehta@huawei.com>; qemu-devel@nongnu.org; qemu-
> arm@nongnu.org
> Cc: maz@kernel.org; jean-philippe@linaro.org; Jonathan Cameron
> <jonathan.cameron@huawei.com>; lpieralisi@kernel.org;
> peter.maydell@linaro.org; richard.henderson@linaro.org;
> imammedo@redhat.com; andrew.jones@linux.dev; david@redhat.com;
> philmd@linaro.org; eric.auger@redhat.com; oliver.upton@linux.dev;
> pbonzini@redhat.com; mst@redhat.com; will@kernel.org; rafael@kernel.org;
> alex.bennee@linaro.org; linux@armlinux.org.uk;
> darren@os.amperecomputing.com; ilkka@os.amperecomputing.com;
> vishnu@os.amperecomputing.com; karl.heubaum@oracle.com;
> miguel.luis@oracle.com; salil.mehta@opnsrc.net; zhukeqian
> <zhukeqian1@huawei.com>; wangxiongfeng (C) <wangxiongfeng2@huawei.com>;
> wangyanan (Y) <wangyanan55@huawei.com>; jiakernel2@gmail.com;
> maobibo@loongson.cn; lixianglai@loongson.cn; Linuxarm <linuxarm@huawei.com>
> Subject: Re: [PATCH V2 08/10] physmem: Add helper function to destroy CPU
> AddressSpace
>
> On 9/30/23 10:19, Salil Mehta wrote:
> > Virtual CPU Hot-unplug leads to unrealization of a CPU object. This also
> > involves destruction of the CPU AddressSpace. Add common function to help
> > destroy the CPU AddressSpace.
> >
> > Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> > ---
> > include/exec/cpu-common.h | 8 ++++++++
> > include/hw/core/cpu.h | 1 +
> > softmmu/physmem.c | 25 +++++++++++++++++++++++++
> > 3 files changed, 34 insertions(+)
> >
> > diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
> > index 41788c0bdd..eb56a228a2 100644
> > --- a/include/exec/cpu-common.h
> > +++ b/include/exec/cpu-common.h
> > @@ -120,6 +120,14 @@ size_t qemu_ram_pagesize_largest(void);
> > */
> > void cpu_address_space_init(CPUState *cpu, int asidx,
> > const char *prefix, MemoryRegion *mr);
> > +/**
> > + * cpu_address_space_destroy:
> > + * @cpu: CPU for which address space needs to be destroyed
> > + * @asidx: integer index of this address space
> > + *
> > + * Note that with KVM only one address space is supported.
> > + */
> > +void cpu_address_space_destroy(CPUState *cpu, int asidx);
> >
> > void cpu_physical_memory_rw(hwaddr addr, void *buf,
> > hwaddr len, bool is_write);
> > diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> > index 648b5b3586..65d2ae4581 100644
> > --- a/include/hw/core/cpu.h
> > +++ b/include/hw/core/cpu.h
> > @@ -355,6 +355,7 @@ struct CPUState {
> > QSIMPLEQ_HEAD(, qemu_work_item) work_list;
> >
> > CPUAddressSpace *cpu_ases;
> > + int cpu_ases_count;
> > int num_ases;
> > AddressSpace *as;
> > MemoryRegion *memory;
>
> @num_ases and @cpu_ases_count are duplicate to each other to some extent.
> The real problem is @cpu_ases is allocated at once and we need to make the
> allocation sparse. In that way, each CPU address space is independent and can be
> destroyed independently. The sparse allocation for the CPU address space can be done
> in cpu_address_space_init() like below:
Well, I think Phil/Richard are pointing to something else here i.e. destroy
at once.
https://lore.kernel.org/qemu-devel/594b2550-9a73-684f-6e54-29401dc6cd7a@linaro.org/
I used reference counter because I was not sure if it is safe to
assume that AddressSpace will always be destroyed at once.
BTW, there is no functional problem with above patch. Just that we
do not have to maintain the reference counter.
You can use below command to check CPU memory address spaces are getting
destroyed properly and get re-created again with CPU hot(un)plug:
Qemu> info mtree
Thanks
Salil.
next prev parent reply other threads:[~2023-10-03 11:55 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-30 0:19 [PATCH V2 00/10] Add architecture agnostic code to support vCPU Hotplug Salil Mehta via
2023-09-30 0:19 ` [PATCH V2 01/10] accel/kvm: Extract common KVM vCPU {creation, parking} code Salil Mehta via
2023-10-02 15:53 ` [PATCH V2 01/10] accel/kvm: Extract common KVM vCPU {creation,parking} code Jonathan Cameron via
2023-10-02 15:53 ` Jonathan Cameron
2023-10-03 11:05 ` Salil Mehta via
2023-10-03 11:05 ` Salil Mehta
2023-10-03 11:51 ` Jonathan Cameron via
2023-10-03 11:51 ` Jonathan Cameron
2023-10-03 12:27 ` Salil Mehta via
2023-10-03 12:27 ` Salil Mehta
2023-10-02 23:17 ` Gavin Shan
2023-10-03 11:22 ` Salil Mehta via
2023-10-03 11:22 ` Salil Mehta
2023-09-30 0:19 ` [PATCH V2 02/10] hw/acpi: Move CPU ctrl-dev MMIO region len macro to common header file Salil Mehta via
2023-10-02 15:54 ` Jonathan Cameron via
2023-10-02 15:54 ` Jonathan Cameron
2023-10-03 11:24 ` Salil Mehta via
2023-10-03 11:24 ` Salil Mehta
2023-10-02 23:19 ` Gavin Shan
2023-10-03 11:24 ` Salil Mehta via
2023-10-03 11:24 ` Salil Mehta
2023-09-30 0:19 ` [PATCH V2 03/10] hw/acpi: Add ACPI CPU hotplug init stub Salil Mehta via
2023-10-02 16:00 ` Jonathan Cameron via
2023-10-02 16:00 ` Jonathan Cameron
2023-10-03 11:27 ` Salil Mehta via
2023-10-03 11:27 ` Salil Mehta
2023-10-02 23:25 ` Gavin Shan
2023-10-03 11:28 ` Salil Mehta via
2023-10-03 11:28 ` Salil Mehta
2023-09-30 0:19 ` [PATCH V2 04/10] hw/acpi: Init GED framework with cpu hotplug events Salil Mehta via
2023-10-02 16:07 ` Jonathan Cameron via
2023-10-02 16:07 ` Jonathan Cameron
2023-10-03 11:29 ` Salil Mehta via
2023-10-03 11:29 ` Salil Mehta
2023-10-02 23:28 ` Gavin Shan
2023-10-03 11:30 ` Salil Mehta via
2023-10-03 11:30 ` Salil Mehta
2023-09-30 0:19 ` [PATCH V2 05/10] hw/acpi: Update CPUs AML with cpu-(ctrl)dev change Salil Mehta via
2023-10-02 16:09 ` Jonathan Cameron via
2023-10-02 16:09 ` Jonathan Cameron
2023-10-03 11:31 ` Salil Mehta via
2023-10-03 11:31 ` Salil Mehta
2023-10-03 0:09 ` Gavin Shan
2023-10-03 11:33 ` Salil Mehta via
2023-10-03 11:33 ` Salil Mehta
2023-09-30 0:19 ` [PATCH V2 06/10] hw/acpi: Update GED _EVT method AML with cpu scan Salil Mehta via
2023-10-02 16:14 ` Jonathan Cameron via
2023-10-02 16:14 ` Jonathan Cameron
2023-10-03 11:43 ` Salil Mehta via
2023-10-03 11:43 ` Salil Mehta
2023-10-03 11:53 ` Jonathan Cameron via
2023-10-03 11:53 ` Jonathan Cameron
2023-10-03 12:13 ` Salil Mehta via
2023-10-03 12:13 ` Salil Mehta
2023-10-03 0:10 ` Gavin Shan
2023-10-03 11:43 ` Salil Mehta via
2023-10-03 11:43 ` Salil Mehta
2023-09-30 0:19 ` [PATCH V2 07/10] hw/acpi: Update ACPI GED framework to support vCPU Hotplug Salil Mehta via
2023-10-02 16:16 ` Jonathan Cameron via
2023-10-02 16:16 ` Jonathan Cameron
2023-10-03 11:44 ` Salil Mehta via
2023-10-03 11:44 ` Salil Mehta
2023-10-03 0:11 ` Gavin Shan
2023-10-03 11:45 ` Salil Mehta via
2023-10-03 11:45 ` Salil Mehta
2023-09-30 0:19 ` [PATCH V2 08/10] physmem: Add helper function to destroy CPU AddressSpace Salil Mehta via
2023-10-02 16:20 ` Jonathan Cameron via
2023-10-02 16:20 ` Jonathan Cameron
2023-10-03 11:46 ` Salil Mehta via
2023-10-03 11:46 ` Salil Mehta
2023-10-03 1:36 ` Gavin Shan
2023-10-03 11:54 ` Salil Mehta via [this message]
2023-10-03 11:54 ` Salil Mehta
2023-10-04 10:48 ` Salil Mehta via
2023-10-04 10:48 ` Salil Mehta
2023-09-30 0:19 ` [PATCH V2 09/10] gdbstub: Add helper function to unregister GDB register space Salil Mehta via
2023-10-03 3:16 ` Gavin Shan
2023-10-03 11:56 ` Salil Mehta via
2023-10-03 11:56 ` Salil Mehta
2023-09-30 0:19 ` [PATCH V2 10/10] target/arm/kvm: Write CPU state back to KVM on reset Salil Mehta via
2023-10-03 3:54 ` Gavin Shan
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=25f9cedfb0444e92922de609b5e1028a@huawei.com \
--to=qemu-devel@nongnu.org \
--cc=alex.bennee@linaro.org \
--cc=andrew.jones@linux.dev \
--cc=darren@os.amperecomputing.com \
--cc=david@redhat.com \
--cc=eric.auger@redhat.com \
--cc=gshan@redhat.com \
--cc=ilkka@os.amperecomputing.com \
--cc=imammedo@redhat.com \
--cc=jean-philippe@linaro.org \
--cc=jiakernel2@gmail.com \
--cc=jonathan.cameron@huawei.com \
--cc=karl.heubaum@oracle.com \
--cc=linux@armlinux.org.uk \
--cc=linuxarm@huawei.com \
--cc=lixianglai@loongson.cn \
--cc=lpieralisi@kernel.org \
--cc=maobibo@loongson.cn \
--cc=maz@kernel.org \
--cc=miguel.luis@oracle.com \
--cc=mst@redhat.com \
--cc=oliver.upton@linux.dev \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=rafael@kernel.org \
--cc=richard.henderson@linaro.org \
--cc=salil.mehta@huawei.com \
--cc=salil.mehta@opnsrc.net \
--cc=vishnu@os.amperecomputing.com \
--cc=wangxiongfeng2@huawei.com \
--cc=wangyanan55@huawei.com \
--cc=will@kernel.org \
--cc=zhukeqian1@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).