From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567017747; cv=none; d=zoho.com; s=zohoarc; b=W4Tr2EttEZX3keePCqIJWyN5E/afNjEtbEtZU/5U0rSTCx4hSpQ53EFOQ9XsmwPVIOWKwDdYntmHhBFiS/u29qPAdRj+lv33Ep0++0SC0mIOQXm3iOMr9QnNXNGB2wq/vai8RPfPzP18Ygteh4S50SqrMq5c7zbEnnOg0aEcVNQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567017747; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=gFFVq0myHuMx8lvaioGP6dG/ji+Jo15SyRzrZhUy/mw=; b=R4U3MaM2N3/1Fcnumsj2cvYYbIBTR2vJRZzBe31c33tl4pLYe+uzzHpPTGwvS9BFpM4iHPtWxE8EDgljShATdBH5iqQYlK2A+WjZhZEcreDqYlPJrCrfO/1JY7YooH//cfTuUIn7QHZaZjYHUuKLHWLTauZgxqWxN9RlOlTSjho= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567017747109419.2741788469011; Wed, 28 Aug 2019 11:42:27 -0700 (PDT) Received: from localhost ([::1]:39756 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32tk-0003LH-Jj for importer@patchew.org; Wed, 28 Aug 2019 14:42:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33192) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32rx-0001oJ-QV for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32rw-0003JD-4s for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:33 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52844) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32rv-0003Im-Vc for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:32 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 321B17F746; Wed, 28 Aug 2019 18:40:31 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id B2849600CD; Wed, 28 Aug 2019 18:40:30 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:15 -0300 Message-Id: <20190828184026.5840-2-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.71]); Wed, 28 Aug 2019 18:40:31 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 01/12] includes: remove stale [smp|max]_cpus externs X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Like Xu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Alex Benn=C3=A9e Commit a5e0b3311 removed these in favour of querying machine properties. Remove the extern declarations as well. Signed-off-by: Alex Benn=C3=A9e Cc: Like Xu Message-Id: <20190711130546.18578-1-alex.bennee@linaro.org> Reviewed-by: Richard Henderson Reviewed-by: Like Xu Fixes: a5e0b331193a ("vl.c: Replace smp global variables with smp machine p= roperties") Signed-off-by: Eduardo Habkost --- include/sysemu/sysemu.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index d2c38f611a..44f18eb739 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -42,8 +42,6 @@ extern const char *keyboard_layout; extern int win2k_install_hack; extern int alt_grab; extern int ctrl_grab; -extern int smp_cpus; -extern unsigned int max_cpus; extern int cursor_hide; extern int graphic_rotate; extern int no_quit; --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567017769; cv=none; d=zoho.com; s=zohoarc; b=Nqq4AuWMQmK7V7sqOIbFBXO7ByGiF3KDQuPPF8k6XMsQILFI4y7d974Fr0gH4EvJvhG9HDEafS6XQahZBOs6qyI1v3OZov+AKLo2wX1PhwFe6WM23PdXtf5Thcw8ceLrCqVPlIkmuhxsp1nQ7in6Q654oR6yJYw6r1wTT8PTzdM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567017769; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=bzRZEXyt8qsP0lVZY686v2eq1hSBOUmlk0iCcu3Ww6I=; b=bl3xI1mBGoXhEAn1523T1fLSArnjQNYSaTw3ShTiKJOmxUAnvHu3EVEFrN8LV/kdbXFkmAhgwNA/mPE9VAarR9a/5MFFv5elrtzHHFcY/kOSmvKHyx6OdO2FCEKDpeJ9oKb4GRRxq5/P7TfW3wP3G6EHVIN7xUg+/xmtyktEGTU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567017769836532.5005154562543; Wed, 28 Aug 2019 11:42:49 -0700 (PDT) Received: from localhost ([::1]:39760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32u8-0003sK-7J for importer@patchew.org; Wed, 28 Aug 2019 14:42:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33249) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32s5-0001yM-QV for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32s2-0003ON-30 for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:60696) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32s1-0003No-Qf for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:38 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id F2C6F859FB; Wed, 28 Aug 2019 18:40:36 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id C292419D7A; Wed, 28 Aug 2019 18:40:35 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:16 -0300 Message-Id: <20190828184026.5840-3-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 28 Aug 2019 18:40:37 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 02/12] hw/arm: simplify arm_load_dtb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew Jeffery , Liu Jingqi , Tao Xu , Alistair Francis , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Tao Xu In struct arm_boot_info, kernel_filename, initrd_filename and kernel_cmdline are copied from from MachineState. This patch add MachineState as a parameter into arm_load_dtb() and move the copy chunk of kernel_filename, initrd_filename and kernel_cmdline into arm_load_kernel(). Reviewed-by: Igor Mammedov Reviewed-by: Liu Jingqi Suggested-by: Igor Mammedov Signed-off-by: Tao Xu Message-Id: <20190809065731.9097-2-tao3.xu@intel.com> Reviewed-by: Alistair Francis Acked-by: Andrew Jeffery Acked-by: C=C3=A9dric Le Goater [ehabkost: include hw/boards.h again to fix build failures] Signed-off-by: Eduardo Habkost --- include/hw/arm/boot.h | 4 ++-- hw/arm/aspeed.c | 5 +---- hw/arm/boot.c | 15 +++++++++------ hw/arm/collie.c | 8 +------- hw/arm/cubieboard.c | 5 +---- hw/arm/exynos4_boards.c | 7 ++----- hw/arm/highbank.c | 8 +------- hw/arm/imx25_pdk.c | 5 +---- hw/arm/integratorcp.c | 8 +------- hw/arm/kzm.c | 5 +---- hw/arm/mainstone.c | 5 +---- hw/arm/mcimx6ul-evk.c | 5 +---- hw/arm/mcimx7d-sabre.c | 5 +---- hw/arm/musicpal.c | 8 +------- hw/arm/nseries.c | 5 +---- hw/arm/omap_sx1.c | 5 +---- hw/arm/palm.c | 10 ++-------- hw/arm/raspi.c | 6 +----- hw/arm/realview.c | 5 +---- hw/arm/sabrelite.c | 5 +---- hw/arm/sbsa-ref.c | 3 +-- hw/arm/spitz.c | 5 +---- hw/arm/tosa.c | 8 +------- hw/arm/versatilepb.c | 5 +---- hw/arm/vexpress.c | 5 +---- hw/arm/virt.c | 8 +++----- hw/arm/xilinx_zynq.c | 8 +------- hw/arm/xlnx-versal-virt.c | 7 ++----- hw/arm/xlnx-zcu102.c | 5 +---- hw/arm/z2.c | 8 +------- 30 files changed, 44 insertions(+), 147 deletions(-) diff --git a/include/hw/arm/boot.h b/include/hw/arm/boot.h index 5714dea1a2..7f4d0ca7cd 100644 --- a/include/hw/arm/boot.h +++ b/include/hw/arm/boot.h @@ -131,7 +131,7 @@ struct arm_boot_info { * before sysbus-fdt arm_register_platform_bus_fdt_creator. Indeed the * machine init done notifiers are called in registration reverse order. */ -void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info); +void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info *= info); =20 AddressSpace *arm_boot_address_space(ARMCPU *cpu, const struct arm_boot_info *info); @@ -158,7 +158,7 @@ AddressSpace *arm_boot_address_space(ARMCPU *cpu, * Note: Must not be called unless have_dtb(binfo) is true. */ int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, - hwaddr addr_limit, AddressSpace *as); + hwaddr addr_limit, AddressSpace *as, MachineState *ms); =20 /* Write a secure board setup routine with a dummy handler for SMCs */ void arm_write_secure_board_setup_dummy_smc(ARMCPU *cpu, diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 7a2e885e0b..13e208c78c 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -242,9 +242,6 @@ static void aspeed_board_init(MachineState *machine, write_boot_rom(drive0, FIRMWARE_ADDR, fl->size, &error_abort); } =20 - aspeed_board_binfo.kernel_filename =3D machine->kernel_filename; - aspeed_board_binfo.initrd_filename =3D machine->initrd_filename; - aspeed_board_binfo.kernel_cmdline =3D machine->kernel_cmdline; aspeed_board_binfo.ram_size =3D ram_size; aspeed_board_binfo.loader_start =3D sc->info->memmap[ASPEED_SDRAM]; aspeed_board_binfo.nb_cpus =3D bmc->soc.num_cpus; @@ -253,7 +250,7 @@ static void aspeed_board_init(MachineState *machine, cfg->i2c_init(bmc); } =20 - arm_load_kernel(ARM_CPU(first_cpu), &aspeed_board_binfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &aspeed_board_binfo); } =20 static void palmetto_bmc_i2c_init(AspeedBoardState *bmc) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index eff89ab80e..b46eaefa2d 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -17,6 +17,7 @@ #include "sysemu/kvm.h" #include "sysemu/sysemu.h" #include "sysemu/numa.h" +#include "hw/boards.h" #include "sysemu/reset.h" #include "hw/loader.h" #include "elf.h" @@ -523,7 +524,7 @@ static void fdt_add_psci_node(void *fdt) } =20 int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, - hwaddr addr_limit, AddressSpace *as) + hwaddr addr_limit, AddressSpace *as, MachineState *ms) { void *fdt =3D NULL; int size, rc, n =3D 0; @@ -626,9 +627,9 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_inf= o *binfo, qemu_fdt_add_subnode(fdt, "/chosen"); } =20 - if (binfo->kernel_cmdline && *binfo->kernel_cmdline) { + if (ms->kernel_cmdline && *ms->kernel_cmdline) { rc =3D qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", - binfo->kernel_cmdline); + ms->kernel_cmdline); if (rc < 0) { fprintf(stderr, "couldn't set /chosen/bootargs\n"); goto fail; @@ -1260,7 +1261,7 @@ static void arm_setup_firmware_boot(ARMCPU *cpu, stru= ct arm_boot_info *info) */ } =20 -void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info) +void arm_load_kernel(ARMCPU *cpu, MachineState *ms, struct arm_boot_info *= info) { CPUState *cs; AddressSpace *as =3D arm_boot_address_space(cpu, info); @@ -1281,7 +1282,9 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_inf= o *info) * doesn't support secure. */ assert(!(info->secure_board_setup && kvm_enabled())); - + info->kernel_filename =3D ms->kernel_filename; + info->kernel_cmdline =3D ms->kernel_cmdline; + info->initrd_filename =3D ms->initrd_filename; info->dtb_filename =3D qemu_opt_get(qemu_get_machine_opts(), "dtb"); info->dtb_limit =3D 0; =20 @@ -1293,7 +1296,7 @@ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_inf= o *info) } =20 if (!info->skip_dtb_autoload && have_dtb(info)) { - if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as) < 0) { + if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as, ms) <= 0) { exit(1); } } diff --git a/hw/arm/collie.c b/hw/arm/collie.c index 219643c633..b1288ccea8 100644 --- a/hw/arm/collie.c +++ b/hw/arm/collie.c @@ -25,9 +25,6 @@ static struct arm_boot_info collie_binfo =3D { =20 static void collie_init(MachineState *machine) { - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; StrongARMState *s; DriveInfo *dinfo; MemoryRegion *sysmem =3D get_system_memory(); @@ -46,11 +43,8 @@ static void collie_init(MachineState *machine) =20 sysbus_create_simple("scoop", 0x40800000, NULL); =20 - collie_binfo.kernel_filename =3D kernel_filename; - collie_binfo.kernel_cmdline =3D kernel_cmdline; - collie_binfo.initrd_filename =3D initrd_filename; collie_binfo.board_id =3D 0x208; - arm_load_kernel(s->cpu, &collie_binfo); + arm_load_kernel(s->cpu, machine, &collie_binfo); } =20 static void collie_machine_init(MachineClass *mc) diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c index 38e0ca0f53..1bef3cb9af 100644 --- a/hw/arm/cubieboard.c +++ b/hw/arm/cubieboard.c @@ -73,10 +73,7 @@ static void cubieboard_init(MachineState *machine) /* TODO create and connect IDE devices for ide_drive_get() */ =20 cubieboard_binfo.ram_size =3D machine->ram_size; - cubieboard_binfo.kernel_filename =3D machine->kernel_filename; - cubieboard_binfo.kernel_cmdline =3D machine->kernel_cmdline; - cubieboard_binfo.initrd_filename =3D machine->initrd_filename; - arm_load_kernel(&s->a10->cpu, &cubieboard_binfo); + arm_load_kernel(&s->a10->cpu, machine, &cubieboard_binfo); } =20 static void cubieboard_machine_init(MachineClass *mc) diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index f69358a5ba..be21f50387 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -122,9 +122,6 @@ exynos4_boards_init_common(MachineState *machine, exynos4_board_binfo.board_id =3D exynos4_board_id[board_type]; exynos4_board_binfo.smp_bootreg_addr =3D exynos4_board_smp_bootreg_addr[board_type]; - exynos4_board_binfo.kernel_filename =3D machine->kernel_filename; - exynos4_board_binfo.initrd_filename =3D machine->initrd_filename; - exynos4_board_binfo.kernel_cmdline =3D machine->kernel_cmdline; exynos4_board_binfo.gic_cpu_if_addr =3D EXYNOS4210_SMP_PRIVATE_BASE_ADDR + 0x100; =20 @@ -143,7 +140,7 @@ static void nuri_init(MachineState *machine) { exynos4_boards_init_common(machine, EXYNOS4_BOARD_NURI); =20 - arm_load_kernel(ARM_CPU(first_cpu), &exynos4_board_binfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &exynos4_board_binfo); } =20 static void smdkc210_init(MachineState *machine) @@ -153,7 +150,7 @@ static void smdkc210_init(MachineState *machine) =20 lan9215_init(SMDK_LAN9118_BASE_ADDR, qemu_irq_invert(s->soc.irq_table[exynos4210_get_irq(37, 1)])); - arm_load_kernel(ARM_CPU(first_cpu), &exynos4_board_binfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &exynos4_board_binfo); } =20 static void nuri_class_init(ObjectClass *oc, void *data) diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c index 362e5ba044..f1724d6929 100644 --- a/hw/arm/highbank.c +++ b/hw/arm/highbank.c @@ -236,9 +236,6 @@ enum cxmachines { static void calxeda_init(MachineState *machine, enum cxmachines machine_id) { ram_addr_t ram_size =3D machine->ram_size; - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; DeviceState *dev =3D NULL; SysBusDevice *busdev; qemu_irq pic[128]; @@ -390,9 +387,6 @@ static void calxeda_init(MachineState *machine, enum cx= machines machine_id) /* TODO create and connect IDE devices for ide_drive_get() */ =20 highbank_binfo.ram_size =3D ram_size; - highbank_binfo.kernel_filename =3D kernel_filename; - highbank_binfo.kernel_cmdline =3D kernel_cmdline; - highbank_binfo.initrd_filename =3D initrd_filename; /* highbank requires a dtb in order to boot, and the dtb will override * the board ID. The following value is ignored, so set it to -1 to be * clear that the value is meaningless. @@ -412,7 +406,7 @@ static void calxeda_init(MachineState *machine, enum cx= machines machine_id) "may not boot."); } =20 - arm_load_kernel(ARM_CPU(first_cpu), &highbank_binfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &highbank_binfo); } =20 static void highbank_init(MachineState *machine) diff --git a/hw/arm/imx25_pdk.c b/hw/arm/imx25_pdk.c index 5d673e47bc..c76fc2bd94 100644 --- a/hw/arm/imx25_pdk.c +++ b/hw/arm/imx25_pdk.c @@ -116,9 +116,6 @@ static void imx25_pdk_init(MachineState *machine) } =20 imx25_pdk_binfo.ram_size =3D machine->ram_size; - imx25_pdk_binfo.kernel_filename =3D machine->kernel_filename; - imx25_pdk_binfo.kernel_cmdline =3D machine->kernel_cmdline; - imx25_pdk_binfo.initrd_filename =3D machine->initrd_filename; imx25_pdk_binfo.loader_start =3D FSL_IMX25_SDRAM0_ADDR; imx25_pdk_binfo.board_id =3D 1771, imx25_pdk_binfo.nb_cpus =3D 1; @@ -129,7 +126,7 @@ static void imx25_pdk_init(MachineState *machine) * fail. */ if (!qtest_enabled()) { - arm_load_kernel(&s->soc.cpu, &imx25_pdk_binfo); + arm_load_kernel(&s->soc.cpu, machine, &imx25_pdk_binfo); } } =20 diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 200568b42a..524970840d 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -582,9 +582,6 @@ static struct arm_boot_info integrator_binfo =3D { static void integratorcp_init(MachineState *machine) { ram_addr_t ram_size =3D machine->ram_size; - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; Object *cpuobj; ARMCPU *cpu; MemoryRegion *address_space_mem =3D get_system_memory(); @@ -654,10 +651,7 @@ static void integratorcp_init(MachineState *machine) sysbus_create_simple("pl110", 0xc0000000, pic[22]); =20 integrator_binfo.ram_size =3D ram_size; - integrator_binfo.kernel_filename =3D kernel_filename; - integrator_binfo.kernel_cmdline =3D kernel_cmdline; - integrator_binfo.initrd_filename =3D initrd_filename; - arm_load_kernel(cpu, &integrator_binfo); + arm_load_kernel(cpu, machine, &integrator_binfo); } =20 static void integratorcp_machine_init(MachineClass *mc) diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c index 2f052e1f8c..1d5ef289d5 100644 --- a/hw/arm/kzm.c +++ b/hw/arm/kzm.c @@ -127,13 +127,10 @@ static void kzm_init(MachineState *machine) } =20 kzm_binfo.ram_size =3D machine->ram_size; - kzm_binfo.kernel_filename =3D machine->kernel_filename; - kzm_binfo.kernel_cmdline =3D machine->kernel_cmdline; - kzm_binfo.initrd_filename =3D machine->initrd_filename; kzm_binfo.nb_cpus =3D 1; =20 if (!qtest_enabled()) { - arm_load_kernel(&s->soc.cpu, &kzm_binfo); + arm_load_kernel(&s->soc.cpu, machine, &kzm_binfo); } } =20 diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c index 1bad1aea76..b01ce3ce08 100644 --- a/hw/arm/mainstone.c +++ b/hw/arm/mainstone.c @@ -176,11 +176,8 @@ static void mainstone_common_init(MemoryRegion *addres= s_space_mem, smc91c111_init(&nd_table[0], MST_ETH_PHYS, qdev_get_gpio_in(mst_irq, ETHERNET_IRQ)); =20 - mainstone_binfo.kernel_filename =3D machine->kernel_filename; - mainstone_binfo.kernel_cmdline =3D machine->kernel_cmdline; - mainstone_binfo.initrd_filename =3D machine->initrd_filename; mainstone_binfo.board_id =3D arm_id; - arm_load_kernel(mpu->cpu, &mainstone_binfo); + arm_load_kernel(mpu->cpu, machine, &mainstone_binfo); } =20 static void mainstone_init(MachineState *machine) diff --git a/hw/arm/mcimx6ul-evk.c b/hw/arm/mcimx6ul-evk.c index 0276875f02..e90b393a44 100644 --- a/hw/arm/mcimx6ul-evk.c +++ b/hw/arm/mcimx6ul-evk.c @@ -40,9 +40,6 @@ static void mcimx6ul_evk_init(MachineState *machine) .loader_start =3D FSL_IMX6UL_MMDC_ADDR, .board_id =3D -1, .ram_size =3D machine->ram_size, - .kernel_filename =3D machine->kernel_filename, - .kernel_cmdline =3D machine->kernel_cmdline, - .initrd_filename =3D machine->initrd_filename, .nb_cpus =3D machine->smp.cpus, }; =20 @@ -72,7 +69,7 @@ static void mcimx6ul_evk_init(MachineState *machine) } =20 if (!qtest_enabled()) { - arm_load_kernel(&s->soc.cpu, &boot_info); + arm_load_kernel(&s->soc.cpu, machine, &boot_info); } } =20 diff --git a/hw/arm/mcimx7d-sabre.c b/hw/arm/mcimx7d-sabre.c index 97b8bb788a..2df2223611 100644 --- a/hw/arm/mcimx7d-sabre.c +++ b/hw/arm/mcimx7d-sabre.c @@ -43,9 +43,6 @@ static void mcimx7d_sabre_init(MachineState *machine) .loader_start =3D FSL_IMX7_MMDC_ADDR, .board_id =3D -1, .ram_size =3D machine->ram_size, - .kernel_filename =3D machine->kernel_filename, - .kernel_cmdline =3D machine->kernel_cmdline, - .initrd_filename =3D machine->initrd_filename, .nb_cpus =3D machine->smp.cpus, }; =20 @@ -75,7 +72,7 @@ static void mcimx7d_sabre_init(MachineState *machine) } =20 if (!qtest_enabled()) { - arm_load_kernel(&s->soc.cpu[0], &boot_info); + arm_load_kernel(&s->soc.cpu[0], machine, &boot_info); } } =20 diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 8ae4751d75..246cbb1336 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1573,9 +1573,6 @@ static struct arm_boot_info musicpal_binfo =3D { =20 static void musicpal_init(MachineState *machine) { - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; ARMCPU *cpu; qemu_irq pic[32]; DeviceState *dev; @@ -1704,10 +1701,7 @@ static void musicpal_init(MachineState *machine) sysbus_connect_irq(s, 0, pic[MP_AUDIO_IRQ]); =20 musicpal_binfo.ram_size =3D MP_RAM_DEFAULT_SIZE; - musicpal_binfo.kernel_filename =3D kernel_filename; - musicpal_binfo.kernel_cmdline =3D kernel_cmdline; - musicpal_binfo.initrd_filename =3D initrd_filename; - arm_load_kernel(cpu, &musicpal_binfo); + arm_load_kernel(cpu, machine, &musicpal_binfo); } =20 static void musicpal_machine_init(MachineClass *mc) diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c index a6c4085337..a36971d39a 100644 --- a/hw/arm/nseries.c +++ b/hw/arm/nseries.c @@ -1361,10 +1361,7 @@ static void n8x0_init(MachineState *machine, =20 if (machine->kernel_filename) { /* Or at the linux loader. */ - binfo->kernel_filename =3D machine->kernel_filename; - binfo->kernel_cmdline =3D machine->kernel_cmdline; - binfo->initrd_filename =3D machine->initrd_filename; - arm_load_kernel(s->mpu->cpu, binfo); + arm_load_kernel(s->mpu->cpu, machine, binfo); =20 qemu_register_reset(n8x0_boot_init, s); } diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c index 75a05c36b0..c071197be7 100644 --- a/hw/arm/omap_sx1.c +++ b/hw/arm/omap_sx1.c @@ -195,10 +195,7 @@ static void sx1_init(MachineState *machine, const int = version) } =20 /* Load the kernel. */ - sx1_binfo.kernel_filename =3D machine->kernel_filename; - sx1_binfo.kernel_cmdline =3D machine->kernel_cmdline; - sx1_binfo.initrd_filename =3D machine->initrd_filename; - arm_load_kernel(mpu->cpu, &sx1_binfo); + arm_load_kernel(mpu->cpu, machine, &sx1_binfo); =20 /* TODO: fix next line */ //~ qemu_console_resize(ds, 640, 480); diff --git a/hw/arm/palm.c b/hw/arm/palm.c index bea47b917d..02a3a82b9b 100644 --- a/hw/arm/palm.c +++ b/hw/arm/palm.c @@ -187,9 +187,6 @@ static struct arm_boot_info palmte_binfo =3D { =20 static void palmte_init(MachineState *machine) { - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; MemoryRegion *address_space_mem =3D get_system_memory(); struct omap_mpu_state_s *mpu; int flash_size =3D 0x00800000; @@ -249,16 +246,13 @@ static void palmte_init(MachineState *machine) } } =20 - if (!rom_loaded && !kernel_filename && !qtest_enabled()) { + if (!rom_loaded && !machine->kernel_filename && !qtest_enabled()) { fprintf(stderr, "Kernel or ROM image must be specified\n"); exit(1); } =20 /* Load the kernel. */ - palmte_binfo.kernel_filename =3D kernel_filename; - palmte_binfo.kernel_cmdline =3D kernel_cmdline; - palmte_binfo.initrd_filename =3D initrd_filename; - arm_load_kernel(mpu->cpu, &palmte_binfo); + arm_load_kernel(mpu->cpu, machine, &palmte_binfo); } =20 static void palmte_machine_init(MachineClass *mc) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 5b2620acb4..74c062d05e 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -157,13 +157,9 @@ static void setup_boot(MachineState *machine, int vers= ion, size_t ram_size) =20 binfo.entry =3D firmware_addr; binfo.firmware_loaded =3D true; - } else { - binfo.kernel_filename =3D machine->kernel_filename; - binfo.kernel_cmdline =3D machine->kernel_cmdline; - binfo.initrd_filename =3D machine->initrd_filename; } =20 - arm_load_kernel(ARM_CPU(first_cpu), &binfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &binfo); } =20 static void raspi_init(MachineState *machine, int version) diff --git a/hw/arm/realview.c b/hw/arm/realview.c index b108a9ab26..8fcdf75a2b 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -351,13 +351,10 @@ static void realview_init(MachineState *machine, memory_region_add_subregion(sysmem, SMP_BOOT_ADDR, ram_hack); =20 realview_binfo.ram_size =3D ram_size; - realview_binfo.kernel_filename =3D machine->kernel_filename; - realview_binfo.kernel_cmdline =3D machine->kernel_cmdline; - realview_binfo.initrd_filename =3D machine->initrd_filename; realview_binfo.nb_cpus =3D smp_cpus; realview_binfo.board_id =3D realview_board_id[board_type]; realview_binfo.loader_start =3D (board_type =3D=3D BOARD_PB_A8 ? 0x700= 00000 : 0); - arm_load_kernel(ARM_CPU(first_cpu), &realview_binfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &realview_binfo); } =20 static void realview_eb_init(MachineState *machine) diff --git a/hw/arm/sabrelite.c b/hw/arm/sabrelite.c index a6185c169e..96cc455c5c 100644 --- a/hw/arm/sabrelite.c +++ b/hw/arm/sabrelite.c @@ -103,16 +103,13 @@ static void sabrelite_init(MachineState *machine) } =20 sabrelite_binfo.ram_size =3D machine->ram_size; - sabrelite_binfo.kernel_filename =3D machine->kernel_filename; - sabrelite_binfo.kernel_cmdline =3D machine->kernel_cmdline; - sabrelite_binfo.initrd_filename =3D machine->initrd_filename; sabrelite_binfo.nb_cpus =3D machine->smp.cpus; sabrelite_binfo.secure_boot =3D true; sabrelite_binfo.write_secondary_boot =3D sabrelite_write_secondary; sabrelite_binfo.secondary_cpu_reset_hook =3D sabrelite_reset_secondary; =20 if (!qtest_enabled()) { - arm_load_kernel(&s->soc.cpu[0], &sabrelite_binfo); + arm_load_kernel(&s->soc.cpu[0], machine, &sabrelite_binfo); } } =20 diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index e98e9a5170..1c1a2b662d 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -711,13 +711,12 @@ static void sbsa_ref_init(MachineState *machine) create_pcie(sms, pic); =20 sms->bootinfo.ram_size =3D machine->ram_size; - sms->bootinfo.kernel_filename =3D machine->kernel_filename; sms->bootinfo.nb_cpus =3D smp_cpus; sms->bootinfo.board_id =3D -1; sms->bootinfo.loader_start =3D sbsa_ref_memmap[SBSA_MEM].base; sms->bootinfo.get_dtb =3D sbsa_ref_dtb; sms->bootinfo.firmware_loaded =3D firmware_loaded; - arm_load_kernel(ARM_CPU(first_cpu), &sms->bootinfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &sms->bootinfo); } =20 static uint64_t sbsa_ref_cpu_mp_affinity(SBSAMachineState *sms, int idx) diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c index 59348123b5..25bd0f5d9d 100644 --- a/hw/arm/spitz.c +++ b/hw/arm/spitz.c @@ -954,11 +954,8 @@ static void spitz_common_init(MachineState *machine, /* A 4.0 GB microdrive is permanently sitting in CF slot 0. */ spitz_microdrive_attach(mpu, 0); =20 - spitz_binfo.kernel_filename =3D machine->kernel_filename; - spitz_binfo.kernel_cmdline =3D machine->kernel_cmdline; - spitz_binfo.initrd_filename =3D machine->initrd_filename; spitz_binfo.board_id =3D arm_id; - arm_load_kernel(mpu->cpu, &spitz_binfo); + arm_load_kernel(mpu->cpu, machine, &spitz_binfo); sl_bootparam_write(SL_PXA_PARAM_BASE); } =20 diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c index e9627e356e..4d95a1f3e2 100644 --- a/hw/arm/tosa.c +++ b/hw/arm/tosa.c @@ -218,9 +218,6 @@ static struct arm_boot_info tosa_binfo =3D { =20 static void tosa_init(MachineState *machine) { - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; MemoryRegion *address_space_mem =3D get_system_memory(); MemoryRegion *rom =3D g_new(MemoryRegion, 1); PXA2xxState *mpu; @@ -245,11 +242,8 @@ static void tosa_init(MachineState *machine) =20 tosa_tg_init(mpu); =20 - tosa_binfo.kernel_filename =3D kernel_filename; - tosa_binfo.kernel_cmdline =3D kernel_cmdline; - tosa_binfo.initrd_filename =3D initrd_filename; tosa_binfo.board_id =3D 0x208; - arm_load_kernel(mpu->cpu, &tosa_binfo); + arm_load_kernel(mpu->cpu, machine, &tosa_binfo); sl_bootparam_write(SL_PXA_PARAM_BASE); } =20 diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index e25561705f..e86af01537 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -375,11 +375,8 @@ static void versatile_init(MachineState *machine, int = board_id) } =20 versatile_binfo.ram_size =3D machine->ram_size; - versatile_binfo.kernel_filename =3D machine->kernel_filename; - versatile_binfo.kernel_cmdline =3D machine->kernel_cmdline; - versatile_binfo.initrd_filename =3D machine->initrd_filename; versatile_binfo.board_id =3D board_id; - arm_load_kernel(cpu, &versatile_binfo); + arm_load_kernel(cpu, machine, &versatile_binfo); } =20 static void vpb_init(MachineState *machine) diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 5d932c27c0..4673a88a8d 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -707,9 +707,6 @@ static void vexpress_common_init(MachineState *machine) } =20 daughterboard->bootinfo.ram_size =3D machine->ram_size; - daughterboard->bootinfo.kernel_filename =3D machine->kernel_filename; - daughterboard->bootinfo.kernel_cmdline =3D machine->kernel_cmdline; - daughterboard->bootinfo.initrd_filename =3D machine->initrd_filename; daughterboard->bootinfo.nb_cpus =3D machine->smp.cpus; daughterboard->bootinfo.board_id =3D VEXPRESS_BOARD_ID; daughterboard->bootinfo.loader_start =3D daughterboard->loader_start; @@ -719,7 +716,7 @@ static void vexpress_common_init(MachineState *machine) daughterboard->bootinfo.modify_dtb =3D vexpress_modify_dtb; /* When booting Linux we should be in secure state if the CPU has one.= */ daughterboard->bootinfo.secure_boot =3D vms->secure; - arm_load_kernel(ARM_CPU(first_cpu), &daughterboard->bootinfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &daughterboard->bootinfo); } =20 static bool vexpress_get_secure(Object *obj, Error **errp) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 0d1629ccb3..3796aa70f8 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1368,6 +1368,7 @@ void virt_machine_done(Notifier *notifier, void *data) { VirtMachineState *vms =3D container_of(notifier, VirtMachineState, machine_done); + MachineState *ms =3D MACHINE(vms); ARMCPU *cpu =3D ARM_CPU(first_cpu); struct arm_boot_info *info =3D &vms->bootinfo; AddressSpace *as =3D arm_boot_address_space(cpu, info); @@ -1385,7 +1386,7 @@ void virt_machine_done(Notifier *notifier, void *data) vms->memmap[VIRT_PLATFORM_BUS].size, vms->irqmap[VIRT_PLATFORM_BUS]); } - if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as) < 0) { + if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as, ms) < 0) { exit(1); } =20 @@ -1711,16 +1712,13 @@ static void machvirt_init(MachineState *machine) create_platform_bus(vms, pic); =20 vms->bootinfo.ram_size =3D machine->ram_size; - vms->bootinfo.kernel_filename =3D machine->kernel_filename; - vms->bootinfo.kernel_cmdline =3D machine->kernel_cmdline; - vms->bootinfo.initrd_filename =3D machine->initrd_filename; vms->bootinfo.nb_cpus =3D smp_cpus; vms->bootinfo.board_id =3D -1; vms->bootinfo.loader_start =3D vms->memmap[VIRT_MEM].base; vms->bootinfo.get_dtb =3D machvirt_dtb; vms->bootinfo.skip_dtb_autoload =3D true; vms->bootinfo.firmware_loaded =3D firmware_loaded; - arm_load_kernel(ARM_CPU(first_cpu), &vms->bootinfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &vms->bootinfo); =20 vms->machine_done.notify =3D virt_machine_done; qemu_add_machine_init_done_notifier(&vms->machine_done); diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 89da34808b..c14774e542 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -158,9 +158,6 @@ static inline void zynq_init_spi_flashes(uint32_t base_= addr, qemu_irq irq, static void zynq_init(MachineState *machine) { ram_addr_t ram_size =3D machine->ram_size; - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; ARMCPU *cpu; MemoryRegion *address_space_mem =3D get_system_memory(); MemoryRegion *ext_ram =3D g_new(MemoryRegion, 1); @@ -303,16 +300,13 @@ static void zynq_init(MachineState *machine) sysbus_mmio_map(busdev, 0, 0xF8007000); =20 zynq_binfo.ram_size =3D ram_size; - zynq_binfo.kernel_filename =3D kernel_filename; - zynq_binfo.kernel_cmdline =3D kernel_cmdline; - zynq_binfo.initrd_filename =3D initrd_filename; zynq_binfo.nb_cpus =3D 1; zynq_binfo.board_id =3D 0xd32; zynq_binfo.loader_start =3D 0; zynq_binfo.board_setup_addr =3D BOARD_SETUP_ADDR; zynq_binfo.write_board_setup =3D zynq_write_board_setup; =20 - arm_load_kernel(ARM_CPU(first_cpu), &zynq_binfo); + arm_load_kernel(ARM_CPU(first_cpu), machine, &zynq_binfo); } =20 static void zynq_machine_init(MachineClass *mc) diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index f95fde2309..462493c467 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -441,14 +441,11 @@ static void versal_virt_init(MachineState *machine) 0, &s->soc.fpd.apu.mr, 0); =20 s->binfo.ram_size =3D machine->ram_size; - s->binfo.kernel_filename =3D machine->kernel_filename; - s->binfo.kernel_cmdline =3D machine->kernel_cmdline; - s->binfo.initrd_filename =3D machine->initrd_filename; s->binfo.loader_start =3D 0x0; s->binfo.get_dtb =3D versal_virt_get_dtb; s->binfo.modify_dtb =3D versal_virt_modify_dtb; if (machine->kernel_filename) { - arm_load_kernel(s->soc.fpd.apu.cpu[0], &s->binfo); + arm_load_kernel(s->soc.fpd.apu.cpu[0], machine, &s->binfo); } else { AddressSpace *as =3D arm_boot_address_space(s->soc.fpd.apu.cpu[0], &s->binfo); @@ -457,7 +454,7 @@ static void versal_virt_init(MachineState *machine) s->binfo.loader_start =3D 0x1000; s->binfo.dtb_limit =3D 0x1000000; if (arm_load_dtb(s->binfo.loader_start, - &s->binfo, s->binfo.dtb_limit, as) < 0) { + &s->binfo, s->binfo.dtb_limit, as, machine) < 0) { exit(EXIT_FAILURE); } } diff --git a/hw/arm/xlnx-zcu102.c b/hw/arm/xlnx-zcu102.c index 044d3394c0..53cfe7c1f1 100644 --- a/hw/arm/xlnx-zcu102.c +++ b/hw/arm/xlnx-zcu102.c @@ -171,11 +171,8 @@ static void xlnx_zcu102_init(MachineState *machine) /* TODO create and connect IDE devices for ide_drive_get() */ =20 xlnx_zcu102_binfo.ram_size =3D ram_size; - xlnx_zcu102_binfo.kernel_filename =3D machine->kernel_filename; - xlnx_zcu102_binfo.kernel_cmdline =3D machine->kernel_cmdline; - xlnx_zcu102_binfo.initrd_filename =3D machine->initrd_filename; xlnx_zcu102_binfo.loader_start =3D 0; - arm_load_kernel(s->soc.boot_cpu_ptr, &xlnx_zcu102_binfo); + arm_load_kernel(s->soc.boot_cpu_ptr, machine, &xlnx_zcu102_binfo); } =20 static void xlnx_zcu102_machine_instance_init(Object *obj) diff --git a/hw/arm/z2.c b/hw/arm/z2.c index 3923b87e4c..34794fe3ae 100644 --- a/hw/arm/z2.c +++ b/hw/arm/z2.c @@ -296,9 +296,6 @@ static const TypeInfo aer915_info =3D { =20 static void z2_init(MachineState *machine) { - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; MemoryRegion *address_space_mem =3D get_system_memory(); uint32_t sector_len =3D 0x10000; PXA2xxState *mpu; @@ -352,11 +349,8 @@ static void z2_init(MachineState *machine) qdev_connect_gpio_out(mpu->gpio, Z2_GPIO_LCD_CS, qemu_allocate_irq(z2_lcd_cs, z2_lcd, 0)); =20 - z2_binfo.kernel_filename =3D kernel_filename; - z2_binfo.kernel_cmdline =3D kernel_cmdline; - z2_binfo.initrd_filename =3D initrd_filename; z2_binfo.board_id =3D 0x6dd; - arm_load_kernel(mpu->cpu, &z2_binfo); + arm_load_kernel(mpu->cpu, machine, &z2_binfo); } =20 static void z2_machine_init(MachineClass *mc) --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567017980; cv=none; d=zoho.com; s=zohoarc; b=k6kMofBhzNzQ0TNojg/H8wULPqlx7YRSFZYFeSy6i484ro+PmE+OstA9VuBRTQ8T9vguY3Vu/F1EWJ81GieihwLVqItWW6nZU+dvILeYyx7DZorUZcn9v73ts2fQTCcPy+HayoswPUo/77UEWlb9cHFR19wlo1U8M85usRjRhNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567017980; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=FAXHwX/ZX3xPy/xVhHqu7nxxKzFDj+t+Ya4n2FehLvo=; b=Oyrj0RycoX/vQB81nIEAYYCntJ3s8gDddp0h9n7Q895wx7uWzCFXXvOmVSgwcXaSWvQOzV5Tx+ZeEVI5vYrUw6ccz+9wilZ0KCuV7fDuqOBxpAA2dQInTVJP/HfVYFRl6erJvSVc07PaUNQsbOdZwPOW9q/XyH/ApnpzyPfeCic= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567017980478465.4630672433093; Wed, 28 Aug 2019 11:46:20 -0700 (PDT) Received: from localhost ([::1]:39812 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32xW-0007fs-CK for importer@patchew.org; Wed, 28 Aug 2019 14:46:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33255) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32s8-00021h-9T for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32s4-0003Ph-AZ for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45364) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32s4-0003PD-2Z for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:40 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 64A6CA70E; Wed, 28 Aug 2019 18:40:39 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 837F75C207; Wed, 28 Aug 2019 18:40:38 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:17 -0300 Message-Id: <20190828184026.5840-4-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Wed, 28 Aug 2019 18:40:39 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 03/12] numa: move numa global variable nb_numa_nodes into MachineState X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tao Xu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Tao Xu Add struct NumaState in MachineState and move existing numa global nb_numa_nodes(renamed as "num_nodes") into NumaState. And add variable numa_support into MachineClass to decide which submachines support NUMA. Reviewed-by: Igor Mammedov Suggested-by: Igor Mammedov Suggested-by: Eduardo Habkost Signed-off-by: Tao Xu Message-Id: <20190809065731.9097-3-tao3.xu@intel.com> [ehabkost: include hw/boards.h again to fix build failures] Signed-off-by: Eduardo Habkost --- include/hw/acpi/aml-build.h | 2 +- include/hw/boards.h | 1 + include/sysemu/numa.h | 10 ++++- exec.c | 5 ++- hw/acpi/aml-build.c | 4 +- hw/arm/boot.c | 4 +- hw/arm/sbsa-ref.c | 4 +- hw/arm/virt-acpi-build.c | 10 +++-- hw/arm/virt.c | 4 +- hw/core/machine-hmp-cmds.c | 13 +++++-- hw/core/machine.c | 14 +++++-- hw/core/numa.c | 60 +++++++++++++++++------------ hw/i386/acpi-build.c | 2 +- hw/i386/pc.c | 9 +++-- hw/mem/pc-dimm.c | 2 + hw/pci-bridge/pci_expander_bridge.c | 9 ++++- hw/ppc/spapr.c | 19 ++++----- 17 files changed, 113 insertions(+), 59 deletions(-) diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h index 1a563ad756..991cf05134 100644 --- a/include/hw/acpi/aml-build.h +++ b/include/hw/acpi/aml-build.h @@ -414,7 +414,7 @@ build_append_gas_from_struct(GArray *table, const struc= t AcpiGenericAddress *s) void build_srat_memory(AcpiSratMemoryAffinity *numamem, uint64_t base, uint64_t len, int node, MemoryAffinityFlags flags); =20 -void build_slit(GArray *table_data, BIOSLinker *linker); +void build_slit(GArray *table_data, BIOSLinker *linker, MachineState *ms); =20 void build_fadt(GArray *tbl, BIOSLinker *linker, const AcpiFadtData *f, const char *oem_id, const char *oem_table_id); diff --git a/include/hw/boards.h b/include/hw/boards.h index ced86109ec..2289536e48 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -299,6 +299,7 @@ struct MachineState { CPUArchIdList *possible_cpus; CpuTopology smp; struct NVDIMMState *nvdimms_state; + struct NumaState *numa_state; }; =20 #define DEFINE_MACHINE(namestr, machine_initfn) \ diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h index 7a4ce89765..1786e861d0 100644 --- a/include/sysemu/numa.h +++ b/include/sysemu/numa.h @@ -14,7 +14,6 @@ struct CPUArchId; #define NUMA_DISTANCE_MAX 254 #define NUMA_DISTANCE_UNREACHABLE 255 =20 -extern int nb_numa_nodes; /* Number of NUMA nodes */ extern bool have_numa_distance; =20 struct NodeInfo { @@ -31,10 +30,17 @@ struct NumaNodeMem { =20 extern NodeInfo numa_info[MAX_NODES]; =20 +struct NumaState { + /* Number of NUMA nodes */ + int num_nodes; + +}; +typedef struct NumaState NumaState; + void set_numa_options(MachineState *ms, NumaOptions *object, Error **errp); void parse_numa_opts(MachineState *ms); void numa_complete_configuration(MachineState *ms); -void query_numa_node_mem(NumaNodeMem node_mem[]); +void query_numa_node_mem(NumaNodeMem node_mem[], MachineState *ms); extern QemuOptsList qemu_numa_opts; void numa_legacy_auto_assign_ram(MachineClass *mc, NodeInfo *nodes, int nb_nodes, ram_addr_t size); diff --git a/exec.c b/exec.c index 1df966d17a..e813058b05 100644 --- a/exec.c +++ b/exec.c @@ -1750,6 +1750,7 @@ long qemu_minrampagesize(void) long hpsize =3D LONG_MAX; long mainrampagesize; Object *memdev_root; + MachineState *ms =3D MACHINE(qdev_get_machine()); =20 mainrampagesize =3D qemu_mempath_getpagesize(mem_path); =20 @@ -1777,7 +1778,9 @@ long qemu_minrampagesize(void) * so if its page size is smaller we have got to report that size inst= ead. */ if (hpsize > mainrampagesize && - (nb_numa_nodes =3D=3D 0 || numa_info[0].node_memdev =3D=3D NULL)) { + (ms->numa_state =3D=3D NULL || + ms->numa_state->num_nodes =3D=3D 0 || + numa_info[0].node_memdev =3D=3D NULL)) { static bool warned; if (!warned) { error_report("Huge page support disabled (n/a for main memory)= ."); diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index 555c24f21d..043b47694c 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -25,6 +25,7 @@ #include "qemu/bswap.h" #include "qemu/bitops.h" #include "sysemu/numa.h" +#include "hw/boards.h" =20 static GArray *build_alloc_array(void) { @@ -1726,10 +1727,11 @@ void build_srat_memory(AcpiSratMemoryAffinity *numa= mem, uint64_t base, * ACPI spec 5.2.17 System Locality Distance Information Table * (Revision 2.0 or later) */ -void build_slit(GArray *table_data, BIOSLinker *linker) +void build_slit(GArray *table_data, BIOSLinker *linker, MachineState *ms) { int slit_start, i, j; slit_start =3D table_data->len; + int nb_numa_nodes =3D ms->numa_state->num_nodes; =20 acpi_data_push(table_data, sizeof(AcpiTableHeader)); =20 diff --git a/hw/arm/boot.c b/hw/arm/boot.c index b46eaefa2d..d3e88626c4 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -598,9 +598,9 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_inf= o *binfo, } g_strfreev(node_path); =20 - if (nb_numa_nodes > 0) { + if (ms->numa_state !=3D NULL && ms->numa_state->num_nodes > 0) { mem_base =3D binfo->loader_start; - for (i =3D 0; i < nb_numa_nodes; i++) { + for (i =3D 0; i < ms->numa_state->num_nodes; i++) { mem_len =3D numa_info[i].node_mem; rc =3D fdt_add_memory_node(fdt, acells, mem_base, scells, mem_len, i); diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 1c1a2b662d..d15e5aebbd 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -146,6 +146,7 @@ static void create_fdt(SBSAMachineState *sms) { void *fdt =3D create_device_tree(&sms->fdt_size); const MachineState *ms =3D MACHINE(sms); + int nb_numa_nodes =3D ms->numa_state->num_nodes; int cpu; =20 if (!fdt) { @@ -762,7 +763,7 @@ sbsa_ref_cpu_index_to_props(MachineState *ms, unsigned = cpu_index) static int64_t sbsa_ref_get_default_cpu_node_id(const MachineState *ms, int idx) { - return idx % nb_numa_nodes; + return idx % ms->numa_state->num_nodes; } =20 static void sbsa_ref_instance_init(Object *obj) @@ -789,6 +790,7 @@ static void sbsa_ref_class_init(ObjectClass *oc, void *= data) mc->possible_cpu_arch_ids =3D sbsa_ref_possible_cpu_arch_ids; mc->cpu_index_to_instance_props =3D sbsa_ref_cpu_index_to_props; mc->get_default_cpu_node_id =3D sbsa_ref_get_default_cpu_node_id; + mc->numa_mem_supported =3D true; } =20 static const TypeInfo sbsa_ref_info =3D { diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index a8b2d97fe9..9e6cfe65b5 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -517,7 +517,8 @@ build_srat(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) int i, srat_start; uint64_t mem_base; MachineClass *mc =3D MACHINE_GET_CLASS(vms); - const CPUArchIdList *cpu_list =3D mc->possible_cpu_arch_ids(MACHINE(vm= s)); + MachineState *ms =3D MACHINE(vms); + const CPUArchIdList *cpu_list =3D mc->possible_cpu_arch_ids(ms); =20 srat_start =3D table_data->len; srat =3D acpi_data_push(table_data, sizeof(*srat)); @@ -533,7 +534,7 @@ build_srat(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) } =20 mem_base =3D vms->memmap[VIRT_MEM].base; - for (i =3D 0; i < nb_numa_nodes; ++i) { + for (i =3D 0; i < ms->numa_state->num_nodes; ++i) { if (numa_info[i].node_mem > 0) { numamem =3D acpi_data_push(table_data, sizeof(*numamem)); build_srat_memory(numamem, mem_base, numa_info[i].node_mem, i, @@ -759,6 +760,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTa= bles *tables) GArray *table_offsets; unsigned dsdt, xsdt; GArray *tables_blob =3D tables->table_data; + MachineState *ms =3D MACHINE(vms); =20 table_offsets =3D g_array_new(false, true /* clear */, sizeof(uint32_t)); @@ -793,12 +795,12 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuild= Tables *tables) acpi_add_table(table_offsets, tables_blob); build_spcr(tables_blob, tables->linker, vms); =20 - if (nb_numa_nodes > 0) { + if (ms->numa_state->num_nodes > 0) { acpi_add_table(table_offsets, tables_blob); build_srat(tables_blob, tables->linker, vms); if (have_numa_distance) { acpi_add_table(table_offsets, tables_blob); - build_slit(tables_blob, tables->linker); + build_slit(tables_blob, tables->linker, ms); } } =20 diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 3796aa70f8..8d36b37f8e 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -203,6 +203,8 @@ static bool cpu_type_valid(const char *cpu) =20 static void create_fdt(VirtMachineState *vms) { + MachineState *ms =3D MACHINE(vms); + int nb_numa_nodes =3D ms->numa_state->num_nodes; void *fdt =3D create_device_tree(&vms->fdt_size); =20 if (!fdt) { @@ -1846,7 +1848,7 @@ virt_cpu_index_to_props(MachineState *ms, unsigned cp= u_index) =20 static int64_t virt_get_default_cpu_node_id(const MachineState *ms, int id= x) { - return idx % nb_numa_nodes; + return idx % ms->numa_state->num_nodes; } =20 static const CPUArchIdList *virt_possible_cpu_arch_ids(MachineState *ms) diff --git a/hw/core/machine-hmp-cmds.c b/hw/core/machine-hmp-cmds.c index 1f66bda346..cd970cc4c5 100644 --- a/hw/core/machine-hmp-cmds.c +++ b/hw/core/machine-hmp-cmds.c @@ -23,6 +23,7 @@ #include "qapi/string-output-visitor.h" #include "qemu/error-report.h" #include "sysemu/numa.h" +#include "hw/boards.h" =20 void hmp_info_cpus(Monitor *mon, const QDict *qdict) { @@ -139,15 +140,21 @@ void hmp_info_memdev(Monitor *mon, const QDict *qdict) =20 void hmp_info_numa(Monitor *mon, const QDict *qdict) { - int i; + int i, nb_numa_nodes; NumaNodeMem *node_mem; CpuInfoList *cpu_list, *cpu; + MachineState *ms =3D MACHINE(qdev_get_machine()); + + nb_numa_nodes =3D ms->numa_state ? ms->numa_state->num_nodes : 0; + monitor_printf(mon, "%d nodes\n", nb_numa_nodes); + if (!nb_numa_nodes) { + return; + } =20 cpu_list =3D qmp_query_cpus(&error_abort); node_mem =3D g_new0(NumaNodeMem, nb_numa_nodes); =20 - query_numa_node_mem(node_mem); - monitor_printf(mon, "%d nodes\n", nb_numa_nodes); + query_numa_node_mem(node_mem, ms); for (i =3D 0; i < nb_numa_nodes; i++) { monitor_printf(mon, "node %d cpus:", i); for (cpu =3D cpu_list; cpu; cpu =3D cpu->next) { diff --git a/hw/core/machine.c b/hw/core/machine.c index 83cd1bfeec..c5e0d52fbc 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -956,6 +956,9 @@ static void machine_initfn(Object *obj) NULL); } =20 + if (mc->numa_mem_supported) { + ms->numa_state =3D g_new0(NumaState, 1); + } =20 /* Register notifier when init is done for sysbus sanity checks */ ms->sysbus_notifier.notify =3D machine_init_notify; @@ -976,6 +979,7 @@ static void machine_finalize(Object *obj) g_free(ms->firmware); g_free(ms->device_memory); g_free(ms->nvdimms_state); + g_free(ms->numa_state); } =20 bool machine_usb(MachineState *machine) @@ -1050,7 +1054,7 @@ static void machine_numa_finish_cpu_init(MachineState= *machine) MachineClass *mc =3D MACHINE_GET_CLASS(machine); const CPUArchIdList *possible_cpus =3D mc->possible_cpu_arch_ids(machi= ne); =20 - assert(nb_numa_nodes); + assert(machine->numa_state->num_nodes); for (i =3D 0; i < possible_cpus->len; i++) { if (possible_cpus->cpus[i].props.has_node_id) { break; @@ -1096,9 +1100,11 @@ void machine_run_board_init(MachineState *machine) { MachineClass *machine_class =3D MACHINE_GET_CLASS(machine); =20 - numa_complete_configuration(machine); - if (nb_numa_nodes) { - machine_numa_finish_cpu_init(machine); + if (machine_class->numa_mem_supported) { + numa_complete_configuration(machine); + if (machine->numa_state->num_nodes) { + machine_numa_finish_cpu_init(machine); + } } =20 /* If the machine supports the valid_cpu_types check and the user diff --git a/hw/core/numa.c b/hw/core/numa.c index 4f7e4628a0..2712c78adb 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -55,7 +55,6 @@ static int have_mem; static int max_numa_nodeid; /* Highest specified NUMA node ID, plus one. * For all nodes, nodeid < max_numa_nodeid */ -int nb_numa_nodes; bool have_numa_distance; NodeInfo numa_info[MAX_NODES]; =20 @@ -72,7 +71,7 @@ static void parse_numa_node(MachineState *ms, NumaNodeOpt= ions *node, if (node->has_nodeid) { nodenr =3D node->nodeid; } else { - nodenr =3D nb_numa_nodes; + nodenr =3D ms->numa_state->num_nodes; } =20 if (nodenr >=3D MAX_NODES) { @@ -138,10 +137,11 @@ static void parse_numa_node(MachineState *ms, NumaNod= eOptions *node, } numa_info[nodenr].present =3D true; max_numa_nodeid =3D MAX(max_numa_nodeid, nodenr + 1); - nb_numa_nodes++; + ms->numa_state->num_nodes++; } =20 -static void parse_numa_distance(NumaDistOptions *dist, Error **errp) +static +void parse_numa_distance(MachineState *ms, NumaDistOptions *dist, Error **= errp) { uint16_t src =3D dist->src; uint16_t dst =3D dist->dst; @@ -179,6 +179,12 @@ static void parse_numa_distance(NumaDistOptions *dist,= Error **errp) void set_numa_options(MachineState *ms, NumaOptions *object, Error **errp) { Error *err =3D NULL; + MachineClass *mc =3D MACHINE_GET_CLASS(ms); + + if (!mc->numa_mem_supported) { + error_setg(errp, "NUMA is not supported by this machine-type"); + goto end; + } =20 switch (object->type) { case NUMA_OPTIONS_TYPE_NODE: @@ -188,7 +194,7 @@ void set_numa_options(MachineState *ms, NumaOptions *ob= ject, Error **errp) } break; case NUMA_OPTIONS_TYPE_DIST: - parse_numa_distance(&object->u.dist, &err); + parse_numa_distance(ms, &object->u.dist, &err); if (err) { goto end; } @@ -253,10 +259,11 @@ end: * distance from a node to itself is always NUMA_DISTANCE_MIN, * so providing it is never necessary. */ -static void validate_numa_distance(void) +static void validate_numa_distance(MachineState *ms) { int src, dst; bool is_asymmetrical =3D false; + int nb_numa_nodes =3D ms->numa_state->num_nodes; =20 for (src =3D 0; src < nb_numa_nodes; src++) { for (dst =3D src; dst < nb_numa_nodes; dst++) { @@ -294,7 +301,7 @@ static void validate_numa_distance(void) } } =20 -static void complete_init_numa_distance(void) +static void complete_init_numa_distance(MachineState *ms) { int src, dst; =20 @@ -303,8 +310,8 @@ static void complete_init_numa_distance(void) * there would not be any missing distance except local node, which * is verified by validate_numa_distance above. */ - for (src =3D 0; src < nb_numa_nodes; src++) { - for (dst =3D 0; dst < nb_numa_nodes; dst++) { + for (src =3D 0; src < ms->numa_state->num_nodes; src++) { + for (dst =3D 0; dst < ms->numa_state->num_nodes; dst++) { if (numa_info[src].distance[dst] =3D=3D 0) { if (src =3D=3D dst) { numa_info[src].distance[dst] =3D NUMA_DISTANCE_MIN; @@ -370,7 +377,7 @@ void numa_complete_configuration(MachineState *ms) * * Enable NUMA implicitly by adding a new NUMA node automatically. */ - if (ms->ram_slots > 0 && nb_numa_nodes =3D=3D 0 && + if (ms->ram_slots > 0 && ms->numa_state->num_nodes =3D=3D 0 && mc->auto_enable_numa_with_memhp) { NumaNodeOptions node =3D { }; parse_numa_node(ms, &node, &error_abort); @@ -388,26 +395,27 @@ void numa_complete_configuration(MachineState *ms) } =20 /* This must be always true if all nodes are present: */ - assert(nb_numa_nodes =3D=3D max_numa_nodeid); + assert(ms->numa_state->num_nodes =3D=3D max_numa_nodeid); =20 - if (nb_numa_nodes > 0) { + if (ms->numa_state->num_nodes > 0) { uint64_t numa_total; =20 - if (nb_numa_nodes > MAX_NODES) { - nb_numa_nodes =3D MAX_NODES; + if (ms->numa_state->num_nodes > MAX_NODES) { + ms->numa_state->num_nodes =3D MAX_NODES; } =20 /* If no memory size is given for any node, assume the default case * and distribute the available memory equally across all nodes */ - for (i =3D 0; i < nb_numa_nodes; i++) { + for (i =3D 0; i < ms->numa_state->num_nodes; i++) { if (numa_info[i].node_mem !=3D 0) { break; } } - if (i =3D=3D nb_numa_nodes) { + if (i =3D=3D ms->numa_state->num_nodes) { assert(mc->numa_auto_assign_ram); - mc->numa_auto_assign_ram(mc, numa_info, nb_numa_nodes, ram_siz= e); + mc->numa_auto_assign_ram(mc, numa_info, + ms->numa_state->num_nodes, ram_size); if (!qtest_enabled()) { warn_report("Default splitting of RAM between nodes is dep= recated," " Use '-numa node,memdev' to explictly define = RAM" @@ -416,7 +424,7 @@ void numa_complete_configuration(MachineState *ms) } =20 numa_total =3D 0; - for (i =3D 0; i < nb_numa_nodes; i++) { + for (i =3D 0; i < ms->numa_state->num_nodes; i++) { numa_total +=3D numa_info[i].node_mem; } if (numa_total !=3D ram_size) { @@ -440,10 +448,10 @@ void numa_complete_configuration(MachineState *ms) */ if (have_numa_distance) { /* Validate enough NUMA distance information was provided. */ - validate_numa_distance(); + validate_numa_distance(ms); =20 /* Validation succeeded, now fill in any missing distances. */ - complete_init_numa_distance(); + complete_init_numa_distance(ms); } } } @@ -510,14 +518,16 @@ void memory_region_allocate_system_memory(MemoryRegio= n *mr, Object *owner, { uint64_t addr =3D 0; int i; + MachineState *ms =3D MACHINE(qdev_get_machine()); =20 - if (nb_numa_nodes =3D=3D 0 || !have_memdevs) { + if (ms->numa_state =3D=3D NULL || + ms->numa_state->num_nodes =3D=3D 0 || !have_memdevs) { allocate_system_memory_nonnuma(mr, owner, name, ram_size); return; } =20 memory_region_init(mr, owner, name, ram_size); - for (i =3D 0; i < nb_numa_nodes; i++) { + for (i =3D 0; i < ms->numa_state->num_nodes; i++) { uint64_t size =3D numa_info[i].node_mem; HostMemoryBackend *backend =3D numa_info[i].node_memdev; if (!backend) { @@ -575,16 +585,16 @@ static void numa_stat_memory_devices(NumaNodeMem node= _mem[]) qapi_free_MemoryDeviceInfoList(info_list); } =20 -void query_numa_node_mem(NumaNodeMem node_mem[]) +void query_numa_node_mem(NumaNodeMem node_mem[], MachineState *ms) { int i; =20 - if (nb_numa_nodes <=3D 0) { + if (ms->numa_state =3D=3D NULL || ms->numa_state->num_nodes <=3D 0) { return; } =20 numa_stat_memory_devices(node_mem); - for (i =3D 0; i < nb_numa_nodes; i++) { + for (i =3D 0; i < ms->numa_state->num_nodes; i++) { node_mem[i].node_mem +=3D numa_info[i].node_mem; } } diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 034e413fd0..3c5868322b 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2696,7 +2696,7 @@ void acpi_build(AcpiBuildTables *tables, MachineState= *machine) build_srat(tables_blob, tables->linker, machine); if (have_numa_distance) { acpi_add_table(table_offsets, tables_blob); - build_slit(tables_blob, tables->linker); + build_slit(tables_blob, tables->linker, machine); } } if (acpi_get_mcfg(&mcfg)) { diff --git a/hw/i386/pc.c b/hw/i386/pc.c index c14ed86439..5fba29c10b 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1002,6 +1002,8 @@ static FWCfgState *bochs_bios_init(AddressSpace *as, = PCMachineState *pcms) int i; const CPUArchIdList *cpus; MachineClass *mc =3D MACHINE_GET_CLASS(pcms); + MachineState *ms =3D MACHINE(pcms); + int nb_numa_nodes =3D ms->numa_state->num_nodes; =20 fw_cfg =3D fw_cfg_init_io_dma(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4, as); fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, pcms->boot_cpus); @@ -1774,12 +1776,13 @@ void pc_machine_done(Notifier *notifier, void *data) void pc_guest_info_init(PCMachineState *pcms) { int i; + MachineState *ms =3D MACHINE(pcms); =20 pcms->apic_xrupt_override =3D kvm_allows_irq0_override(); - pcms->numa_nodes =3D nb_numa_nodes; + pcms->numa_nodes =3D ms->numa_state->num_nodes; pcms->node_mem =3D g_malloc0(pcms->numa_nodes * sizeof *pcms->node_mem); - for (i =3D 0; i < nb_numa_nodes; i++) { + for (i =3D 0; i < ms->numa_state->num_nodes; i++) { pcms->node_mem[i] =3D numa_info[i].node_mem; } =20 @@ -2869,7 +2872,7 @@ static int64_t pc_get_default_cpu_node_id(const Machi= neState *ms, int idx) x86_topo_ids_from_apicid(ms->possible_cpus->cpus[idx].arch_id, pcms->smp_dies, ms->smp.cores, ms->smp.threads, &topo); - return topo.pkg_id % nb_numa_nodes; + return topo.pkg_id % ms->numa_state->num_nodes; } =20 static const CPUArchIdList *pc_possible_cpu_arch_ids(MachineState *ms) diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index 7c324a1329..99e2faf01b 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -172,6 +172,8 @@ static void pc_dimm_realize(DeviceState *dev, Error **e= rrp) { PCDIMMDevice *dimm =3D PC_DIMM(dev); PCDIMMDeviceClass *ddc =3D PC_DIMM_GET_CLASS(dimm); + MachineState *ms =3D MACHINE(qdev_get_machine()); + int nb_numa_nodes =3D ms->numa_state->num_nodes; =20 if (!dimm->hostmem) { error_setg(errp, "'" PC_DIMM_MEMDEV_PROP "' property is not set"); diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expand= er_bridge.c index 06a7c018d7..0592818447 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -21,6 +21,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "sysemu/numa.h" +#include "hw/boards.h" =20 #define TYPE_PXB_BUS "pxb-bus" #define PXB_BUS(obj) OBJECT_CHECK(PXBBus, (obj), TYPE_PXB_BUS) @@ -213,9 +214,15 @@ static void pxb_dev_realize_common(PCIDevice *dev, boo= l pcie, Error **errp) PCIBus *bus; const char *dev_name =3D NULL; Error *local_err =3D NULL; + MachineState *ms =3D MACHINE(qdev_get_machine()); + + if (ms->numa_state =3D=3D NULL) { + error_setg(errp, "NUMA is not supported by this machine-type"); + return; + } =20 if (pxb->numa_node !=3D NUMA_NODE_UNASSIGNED && - pxb->numa_node >=3D nb_numa_nodes) { + pxb->numa_node >=3D ms->numa_state->num_nodes) { error_setg(errp, "Illegal numa node %d", pxb->numa_node); return; } diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index baedadf20b..a7eb87feb6 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -336,7 +336,7 @@ static int spapr_fixup_cpu_dt(void *fdt, SpaprMachineSt= ate *spapr) return ret; } =20 - if (nb_numa_nodes > 1) { + if (ms->numa_state->num_nodes > 1) { ret =3D spapr_fixup_cpu_numa_dt(fdt, offset, cpu); if (ret < 0) { return ret; @@ -356,9 +356,9 @@ static int spapr_fixup_cpu_dt(void *fdt, SpaprMachineSt= ate *spapr) =20 static hwaddr spapr_node0_size(MachineState *machine) { - if (nb_numa_nodes) { + if (machine->numa_state->num_nodes) { int i; - for (i =3D 0; i < nb_numa_nodes; ++i) { + for (i =3D 0; i < machine->numa_state->num_nodes; ++i) { if (numa_info[i].node_mem) { return MIN(pow2floor(numa_info[i].node_mem), machine->ram_size); @@ -403,12 +403,12 @@ static int spapr_populate_memory(SpaprMachineState *s= papr, void *fdt) { MachineState *machine =3D MACHINE(spapr); hwaddr mem_start, node_size; - int i, nb_nodes =3D nb_numa_nodes; + int i, nb_nodes =3D machine->numa_state->num_nodes; NodeInfo *nodes =3D numa_info; NodeInfo ramnode; =20 /* No NUMA nodes, assume there is just one node with whole RAM */ - if (!nb_numa_nodes) { + if (!nb_nodes) { nb_nodes =3D 1; ramnode.node_mem =3D machine->ram_size; nodes =3D &ramnode; @@ -559,7 +559,7 @@ static void spapr_populate_cpu_dt(CPUState *cs, void *f= dt, int offset, _FDT((fdt_setprop(fdt, offset, "ibm,pft-size", pft_size_prop, sizeof(pft_size_prop)))); =20 - if (nb_numa_nodes > 1) { + if (ms->numa_state->num_nodes > 1) { _FDT(spapr_fixup_cpu_numa_dt(fdt, offset, cpu)); } =20 @@ -866,6 +866,7 @@ static int spapr_populate_drmem_v1(SpaprMachineState *s= papr, void *fdt, static int spapr_populate_drconf_memory(SpaprMachineState *spapr, void *fd= t) { MachineState *machine =3D MACHINE(spapr); + int nb_numa_nodes =3D machine->numa_state->num_nodes; int ret, i, offset; uint64_t lmb_size =3D SPAPR_MEMORY_BLOCK_SIZE; uint32_t prop_lmb_size[] =3D {0, cpu_to_be32(lmb_size)}; @@ -1741,7 +1742,7 @@ static void spapr_machine_reset(MachineState *machine) * The final value of spapr->gpu_numa_id is going to be written to * max-associativity-domains in spapr_build_fdt(). */ - spapr->gpu_numa_id =3D MAX(1, nb_numa_nodes); + spapr->gpu_numa_id =3D MAX(1, machine->numa_state->num_nodes); qemu_devices_reset(); =20 /* @@ -2539,7 +2540,7 @@ static void spapr_validate_node_memory(MachineState *= machine, Error **errp) return; } =20 - for (i =3D 0; i < nb_numa_nodes; i++) { + for (i =3D 0; i < machine->numa_state->num_nodes; i++) { if (numa_info[i].node_mem % SPAPR_MEMORY_BLOCK_SIZE) { error_setg(errp, "Node %d memory size 0x%" PRIx64 @@ -4178,7 +4179,7 @@ spapr_cpu_index_to_props(MachineState *machine, unsig= ned cpu_index) =20 static int64_t spapr_get_default_cpu_node_id(const MachineState *ms, int i= dx) { - return idx / ms->smp.cores % nb_numa_nodes; + return idx / ms->smp.cores % ms->numa_state->num_nodes; } =20 static const CPUArchIdList *spapr_possible_cpu_arch_ids(MachineState *mach= ine) --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567017770; cv=none; d=zoho.com; s=zohoarc; b=b3TMqFWhQAwWhHETVXjgAWWBl5XOfGl7FRkYfr4aGbjeiUF8RQZv7bZ/GvpmSDRWaV2cXhtSV8wsNJE5p+Wb4bvjGni3tIKgm1gAi5Y9xAmKPZou/LygODvutynHsdLATmL2vRbKlnYQSQj09Lrk9RuEBX4uwNSmJ1cR2szXX3M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567017770; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=/GGxrY+Oy/OraK06Shrse8ou3hTHfcFSLzT6gUMoM34=; b=TTbmeJCWkNmZ18kiLJPu7ExZU3VI9TjYap8VRpbahvPrA6dl0YSmcLLHDJNsynJSx1s4Zx81U3CmU0LOFxqoFP+L56pOkny5mdHXxyZwfM+IEgpTZ+vE4ysNbjrt9IYwQawTRbLeqfxrm1XPjNTkpjm5r27m9RtMCEJWwgc3G4M= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567017770366545.1622874071736; Wed, 28 Aug 2019 11:42:50 -0700 (PDT) Received: from localhost ([::1]:39762 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32u8-0003wD-PD for importer@patchew.org; Wed, 28 Aug 2019 14:42:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33277) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32sA-00024E-5t for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32s8-0003T0-Mt for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:60034) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32s8-0003S9-F5 for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:44 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B9747308FB82; Wed, 28 Aug 2019 18:40:43 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 464B860BEC; Wed, 28 Aug 2019 18:40:40 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:18 -0300 Message-Id: <20190828184026.5840-5-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.43]); Wed, 28 Aug 2019 18:40:43 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 04/12] numa: move numa global variable have_numa_distance into MachineState X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Liu Jingqi , Tao Xu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Tao Xu Move existing numa global have_numa_distance into NumaState. Reviewed-by: Igor Mammedov Reviewed-by: Liu Jingqi Suggested-by: Igor Mammedov Suggested-by: Eduardo Habkost Signed-off-by: Tao Xu Message-Id: <20190809065731.9097-4-tao3.xu@intel.com> Signed-off-by: Eduardo Habkost --- include/sysemu/numa.h | 4 ++-- hw/arm/sbsa-ref.c | 2 +- hw/arm/virt-acpi-build.c | 2 +- hw/arm/virt.c | 2 +- hw/core/numa.c | 5 ++--- hw/i386/acpi-build.c | 2 +- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h index 1786e861d0..bfe04b514c 100644 --- a/include/sysemu/numa.h +++ b/include/sysemu/numa.h @@ -14,8 +14,6 @@ struct CPUArchId; #define NUMA_DISTANCE_MAX 254 #define NUMA_DISTANCE_UNREACHABLE 255 =20 -extern bool have_numa_distance; - struct NodeInfo { uint64_t node_mem; struct HostMemoryBackend *node_memdev; @@ -34,6 +32,8 @@ struct NumaState { /* Number of NUMA nodes */ int num_nodes; =20 + /* Allow setting NUMA distance for different NUMA nodes */ + bool have_numa_distance; }; typedef struct NumaState NumaState; =20 diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index d15e5aebbd..7d7bb9fd96 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -160,7 +160,7 @@ static void create_fdt(SBSAMachineState *sms) qemu_fdt_setprop_cell(fdt, "/", "#address-cells", 0x2); qemu_fdt_setprop_cell(fdt, "/", "#size-cells", 0x2); =20 - if (have_numa_distance) { + if (ms->numa_state->have_numa_distance) { int size =3D nb_numa_nodes * nb_numa_nodes * 3 * sizeof(uint32_t); uint32_t *matrix =3D g_malloc0(size); int idx, i, j; diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 9e6cfe65b5..b1deb76a53 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -798,7 +798,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTa= bles *tables) if (ms->numa_state->num_nodes > 0) { acpi_add_table(table_offsets, tables_blob); build_srat(tables_blob, tables->linker, vms); - if (have_numa_distance) { + if (ms->numa_state->have_numa_distance) { acpi_add_table(table_offsets, tables_blob); build_slit(tables_blob, tables->linker, ms); } diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 8d36b37f8e..414f7ecd02 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -236,7 +236,7 @@ static void create_fdt(VirtMachineState *vms) "clk24mhz"); qemu_fdt_setprop_cell(fdt, "/apb-pclk", "phandle", vms->clock_phandle); =20 - if (have_numa_distance) { + if (nb_numa_nodes > 0 && ms->numa_state->have_numa_distance) { int size =3D nb_numa_nodes * nb_numa_nodes * 3 * sizeof(uint32_t); uint32_t *matrix =3D g_malloc0(size); int idx, i, j; diff --git a/hw/core/numa.c b/hw/core/numa.c index 2712c78adb..4a7adc9b98 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -55,7 +55,6 @@ static int have_mem; static int max_numa_nodeid; /* Highest specified NUMA node ID, plus one. * For all nodes, nodeid < max_numa_nodeid */ -bool have_numa_distance; NodeInfo numa_info[MAX_NODES]; =20 =20 @@ -173,7 +172,7 @@ void parse_numa_distance(MachineState *ms, NumaDistOpti= ons *dist, Error **errp) } =20 numa_info[src].distance[dst] =3D val; - have_numa_distance =3D true; + ms->numa_state->have_numa_distance =3D true; } =20 void set_numa_options(MachineState *ms, NumaOptions *object, Error **errp) @@ -446,7 +445,7 @@ void numa_complete_configuration(MachineState *ms) * asymmetric. In this case, the distances for both directions * of all node pairs are required. */ - if (have_numa_distance) { + if (ms->numa_state->have_numa_distance) { /* Validate enough NUMA distance information was provided. */ validate_numa_distance(ms); =20 diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 3c5868322b..e54e571a75 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2694,7 +2694,7 @@ void acpi_build(AcpiBuildTables *tables, MachineState= *machine) if (pcms->numa_nodes) { acpi_add_table(table_offsets, tables_blob); build_srat(tables_blob, tables->linker, machine); - if (have_numa_distance) { + if (machine->numa_state->have_numa_distance) { acpi_add_table(table_offsets, tables_blob); build_slit(tables_blob, tables->linker, machine); } --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567018264; cv=none; d=zoho.com; s=zohoarc; b=eiSAArsctYdGdga4cf/Qy3AO0zP0fARL7VDr7vVDySBS5aGmnpKWtOrC2UNWfRn3Pa01/pd7PpKyl32QRTv+ARpKq84N49z6/KjrRXKKzLuQ4ezVTfbUDDrGJQDKf2/OMigPBekOfqpEnQosdrH9tE55mUMj4o6v8KnrKaxFnkM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567018264; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=LGsOMrNOxbF0g8/sYxjR8m0IIFuzkAatxPmwI3enTAo=; b=Rrkv/wmNlUMQW1NC4AD3i8cEjPKOvAL9NWKZ/LGkf3vkYB32YglygZoQB/vTu20pzscAyEkDgZRSqFCcaY4kyL6kpDqkBae6Tw97brrmoXXE6//VSSCHti13ceYMuSuyvwJJEMe8nUwcCsNZJz9N3KtB/d6GI5VhZfxcUNZ5OAs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567018264406926.3909950662483; Wed, 28 Aug 2019 11:51:04 -0700 (PDT) Received: from localhost ([::1]:39848 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i3324-0002cF-QF for importer@patchew.org; Wed, 28 Aug 2019 14:51:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33297) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32sC-000280-QW for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32sA-0003Um-Uf for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40230) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32sA-0003UE-N2 for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:46 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 07E25C054907; Wed, 28 Aug 2019 18:40:46 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 55CF65D70D; Wed, 28 Aug 2019 18:40:45 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:19 -0300 Message-Id: <20190828184026.5840-6-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Wed, 28 Aug 2019 18:40:46 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 05/12] numa: move numa global variable numa_info into MachineState X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tao Xu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Tao Xu Move existing numa global numa_info (renamed as "nodes") into NumaState. Reviewed-by: Igor Mammedov Suggested-by: Igor Mammedov Suggested-by: Eduardo Habkost Signed-off-by: Tao Xu Message-Id: <20190809065731.9097-5-tao3.xu@intel.com> Signed-off-by: Eduardo Habkost --- include/sysemu/numa.h | 5 +++-- exec.c | 2 +- hw/acpi/aml-build.c | 6 ++++-- hw/arm/boot.c | 2 +- hw/arm/sbsa-ref.c | 3 ++- hw/arm/virt-acpi-build.c | 7 ++++--- hw/arm/virt.c | 3 ++- hw/core/numa.c | 15 +++++++++------ hw/i386/pc.c | 4 ++-- hw/ppc/spapr.c | 10 +++++----- hw/ppc/spapr_pci.c | 4 +++- 11 files changed, 36 insertions(+), 25 deletions(-) diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h index bfe04b514c..ae9c41d02b 100644 --- a/include/sysemu/numa.h +++ b/include/sysemu/numa.h @@ -26,14 +26,15 @@ struct NumaNodeMem { uint64_t node_plugged_mem; }; =20 -extern NodeInfo numa_info[MAX_NODES]; - struct NumaState { /* Number of NUMA nodes */ int num_nodes; =20 /* Allow setting NUMA distance for different NUMA nodes */ bool have_numa_distance; + + /* NUMA nodes information */ + NodeInfo nodes[MAX_NODES]; }; typedef struct NumaState NumaState; =20 diff --git a/exec.c b/exec.c index e813058b05..0d47788f5f 100644 --- a/exec.c +++ b/exec.c @@ -1780,7 +1780,7 @@ long qemu_minrampagesize(void) if (hpsize > mainrampagesize && (ms->numa_state =3D=3D NULL || ms->numa_state->num_nodes =3D=3D 0 || - numa_info[0].node_memdev =3D=3D NULL)) { + ms->numa_state->nodes[0].node_memdev =3D=3D NULL)) { static bool warned; if (!warned) { error_report("Huge page support disabled (n/a for main memory)= ."); diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index 043b47694c..78aee1a2f9 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -1738,8 +1738,10 @@ void build_slit(GArray *table_data, BIOSLinker *link= er, MachineState *ms) build_append_int_noprefix(table_data, nb_numa_nodes, 8); for (i =3D 0; i < nb_numa_nodes; i++) { for (j =3D 0; j < nb_numa_nodes; j++) { - assert(numa_info[i].distance[j]); - build_append_int_noprefix(table_data, numa_info[i].distance[j]= , 1); + assert(ms->numa_state->nodes[i].distance[j]); + build_append_int_noprefix(table_data, + ms->numa_state->nodes[i].distance[j], + 1); } } =20 diff --git a/hw/arm/boot.c b/hw/arm/boot.c index d3e88626c4..bf97ef3e33 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -601,7 +601,7 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_inf= o *binfo, if (ms->numa_state !=3D NULL && ms->numa_state->num_nodes > 0) { mem_base =3D binfo->loader_start; for (i =3D 0; i < ms->numa_state->num_nodes; i++) { - mem_len =3D numa_info[i].node_mem; + mem_len =3D ms->numa_state->nodes[i].node_mem; rc =3D fdt_add_memory_node(fdt, acells, mem_base, scells, mem_len, i); if (rc < 0) { diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 7d7bb9fd96..27046cc284 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -170,7 +170,8 @@ static void create_fdt(SBSAMachineState *sms) idx =3D (i * nb_numa_nodes + j) * 3; matrix[idx + 0] =3D cpu_to_be32(i); matrix[idx + 1] =3D cpu_to_be32(j); - matrix[idx + 2] =3D cpu_to_be32(numa_info[i].distance[j]); + matrix[idx + 2] =3D + cpu_to_be32(ms->numa_state->nodes[i].distance[j]); } } =20 diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index b1deb76a53..6cdf156cf5 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -535,11 +535,12 @@ build_srat(GArray *table_data, BIOSLinker *linker, Vi= rtMachineState *vms) =20 mem_base =3D vms->memmap[VIRT_MEM].base; for (i =3D 0; i < ms->numa_state->num_nodes; ++i) { - if (numa_info[i].node_mem > 0) { + if (ms->numa_state->nodes[i].node_mem > 0) { numamem =3D acpi_data_push(table_data, sizeof(*numamem)); - build_srat_memory(numamem, mem_base, numa_info[i].node_mem, i, + build_srat_memory(numamem, mem_base, + ms->numa_state->nodes[i].node_mem, i, MEM_AFFINITY_ENABLED); - mem_base +=3D numa_info[i].node_mem; + mem_base +=3D ms->numa_state->nodes[i].node_mem; } } =20 diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 414f7ecd02..d74538b021 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -246,7 +246,8 @@ static void create_fdt(VirtMachineState *vms) idx =3D (i * nb_numa_nodes + j) * 3; matrix[idx + 0] =3D cpu_to_be32(i); matrix[idx + 1] =3D cpu_to_be32(j); - matrix[idx + 2] =3D cpu_to_be32(numa_info[i].distance[j]); + matrix[idx + 2] =3D + cpu_to_be32(ms->numa_state->nodes[i].distance[j]); } } =20 diff --git a/hw/core/numa.c b/hw/core/numa.c index 4a7adc9b98..4dfec5c95b 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -55,8 +55,6 @@ static int have_mem; static int max_numa_nodeid; /* Highest specified NUMA node ID, plus one. * For all nodes, nodeid < max_numa_nodeid */ -NodeInfo numa_info[MAX_NODES]; - =20 static void parse_numa_node(MachineState *ms, NumaNodeOptions *node, Error **errp) @@ -66,6 +64,7 @@ static void parse_numa_node(MachineState *ms, NumaNodeOpt= ions *node, uint16List *cpus =3D NULL; MachineClass *mc =3D MACHINE_GET_CLASS(ms); unsigned int max_cpus =3D ms->smp.max_cpus; + NodeInfo *numa_info =3D ms->numa_state->nodes; =20 if (node->has_nodeid) { nodenr =3D node->nodeid; @@ -145,6 +144,7 @@ void parse_numa_distance(MachineState *ms, NumaDistOpti= ons *dist, Error **errp) uint16_t src =3D dist->src; uint16_t dst =3D dist->dst; uint8_t val =3D dist->val; + NodeInfo *numa_info =3D ms->numa_state->nodes; =20 if (src >=3D MAX_NODES || dst >=3D MAX_NODES) { error_setg(errp, "Parameter '%s' expects an integer between 0 and = %d", @@ -203,7 +203,7 @@ void set_numa_options(MachineState *ms, NumaOptions *ob= ject, Error **errp) error_setg(&err, "Missing mandatory node-id property"); goto end; } - if (!numa_info[object->u.cpu.node_id].present) { + if (!ms->numa_state->nodes[object->u.cpu.node_id].present) { error_setg(&err, "Invalid node-id=3D%" PRId64 ", NUMA node mus= t be " "defined with -numa node,nodeid=3DID before it's used with= " "-numa cpu,node-id=3DID", object->u.cpu.node_id); @@ -263,6 +263,7 @@ static void validate_numa_distance(MachineState *ms) int src, dst; bool is_asymmetrical =3D false; int nb_numa_nodes =3D ms->numa_state->num_nodes; + NodeInfo *numa_info =3D ms->numa_state->nodes; =20 for (src =3D 0; src < nb_numa_nodes; src++) { for (dst =3D src; dst < nb_numa_nodes; dst++) { @@ -303,6 +304,7 @@ static void validate_numa_distance(MachineState *ms) static void complete_init_numa_distance(MachineState *ms) { int src, dst; + NodeInfo *numa_info =3D ms->numa_state->nodes; =20 /* Fixup NUMA distance by symmetric policy because if it is an * asymmetric distance table, it should be a complete table and @@ -362,6 +364,7 @@ void numa_complete_configuration(MachineState *ms) { int i; MachineClass *mc =3D MACHINE_GET_CLASS(ms); + NodeInfo *numa_info =3D ms->numa_state->nodes; =20 /* * If memory hotplug is enabled (slots > 0) but without '-numa' @@ -527,8 +530,8 @@ void memory_region_allocate_system_memory(MemoryRegion = *mr, Object *owner, =20 memory_region_init(mr, owner, name, ram_size); for (i =3D 0; i < ms->numa_state->num_nodes; i++) { - uint64_t size =3D numa_info[i].node_mem; - HostMemoryBackend *backend =3D numa_info[i].node_memdev; + uint64_t size =3D ms->numa_state->nodes[i].node_mem; + HostMemoryBackend *backend =3D ms->numa_state->nodes[i].node_memde= v; if (!backend) { continue; } @@ -594,7 +597,7 @@ void query_numa_node_mem(NumaNodeMem node_mem[], Machin= eState *ms) =20 numa_stat_memory_devices(node_mem); for (i =3D 0; i < ms->numa_state->num_nodes; i++) { - node_mem[i].node_mem +=3D numa_info[i].node_mem; + node_mem[i].node_mem +=3D ms->numa_state->nodes[i].node_mem; } } =20 diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 5fba29c10b..985e9261b0 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1046,7 +1046,7 @@ static FWCfgState *bochs_bios_init(AddressSpace *as, = PCMachineState *pcms) } for (i =3D 0; i < nb_numa_nodes; i++) { numa_fw_cfg[pcms->apic_id_limit + 1 + i] =3D - cpu_to_le64(numa_info[i].node_mem); + cpu_to_le64(ms->numa_state->nodes[i].node_mem); } fw_cfg_add_bytes(fw_cfg, FW_CFG_NUMA, numa_fw_cfg, (1 + pcms->apic_id_limit + nb_numa_nodes) * @@ -1783,7 +1783,7 @@ void pc_guest_info_init(PCMachineState *pcms) pcms->node_mem =3D g_malloc0(pcms->numa_nodes * sizeof *pcms->node_mem); for (i =3D 0; i < ms->numa_state->num_nodes; i++) { - pcms->node_mem[i] =3D numa_info[i].node_mem; + pcms->node_mem[i] =3D ms->numa_state->nodes[i].node_mem; } =20 pcms->machine_done.notify =3D pc_machine_done; diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index a7eb87feb6..a9cd350f0d 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -359,8 +359,8 @@ static hwaddr spapr_node0_size(MachineState *machine) if (machine->numa_state->num_nodes) { int i; for (i =3D 0; i < machine->numa_state->num_nodes; ++i) { - if (numa_info[i].node_mem) { - return MIN(pow2floor(numa_info[i].node_mem), + if (machine->numa_state->nodes[i].node_mem) { + return MIN(pow2floor(machine->numa_state->nodes[i].node_me= m), machine->ram_size); } } @@ -404,7 +404,7 @@ static int spapr_populate_memory(SpaprMachineState *spa= pr, void *fdt) MachineState *machine =3D MACHINE(spapr); hwaddr mem_start, node_size; int i, nb_nodes =3D machine->numa_state->num_nodes; - NodeInfo *nodes =3D numa_info; + NodeInfo *nodes =3D machine->numa_state->nodes; NodeInfo ramnode; =20 /* No NUMA nodes, assume there is just one node with whole RAM */ @@ -2541,11 +2541,11 @@ static void spapr_validate_node_memory(MachineState= *machine, Error **errp) } =20 for (i =3D 0; i < machine->numa_state->num_nodes; i++) { - if (numa_info[i].node_mem % SPAPR_MEMORY_BLOCK_SIZE) { + if (machine->numa_state->nodes[i].node_mem % SPAPR_MEMORY_BLOCK_SI= ZE) { error_setg(errp, "Node %d memory size 0x%" PRIx64 " is not aligned to %" PRIu64 " MiB", - i, numa_info[i].node_mem, + i, machine->numa_state->nodes[i].node_mem, SPAPR_MEMORY_BLOCK_SIZE / MiB); return; } diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index deb0b0c80c..210abc67c3 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1825,6 +1825,7 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) SysBusDevice *s =3D SYS_BUS_DEVICE(dev); SpaprPhbState *sphb =3D SPAPR_PCI_HOST_BRIDGE(s); PCIHostState *phb =3D PCI_HOST_BRIDGE(s); + MachineState *ms =3D MACHINE(spapr); char *namebuf; int i; PCIBus *bus; @@ -1877,7 +1878,8 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) } =20 if (sphb->numa_node !=3D -1 && - (sphb->numa_node >=3D MAX_NODES || !numa_info[sphb->numa_node].pre= sent)) { + (sphb->numa_node >=3D MAX_NODES || + !ms->numa_state->nodes[sphb->numa_node].present)) { error_setg(errp, "Invalid NUMA node ID for PCI host bridge"); return; } --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567018029; cv=none; d=zoho.com; s=zohoarc; b=d6A6SVui4TxS0JsxWazU/bKmLAGIt/2uJVSsZrXm+kCOKxQszLkoDCVwzZg/CjSTrzkIkI2tdwY81QJDGhvUqUPXUdla7sPw2RARTmfCXa+tEDvnSJblzwbByXpdJ/a2Sd893hrE20QoB4a4Hf3gxB5CwCDRqjq3yVMp/UgxYBM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567018029; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=2YII7nL6FGeo+ta+HoSXBmGQd0/QyhDD1Ch4cNsPXZU=; b=oHNbKLzi3Gj5+XkHtskI1WDDsLRco06l6IBvTQC6jlVGlk1FovWbkB4qvhJXw2AS2zaAVwQv68C2F7C6/muDfBeZktVVl3zm+nueikwOeeRWb94y8lm0BFFTJ9LuslfvW0w65Q5pjS4GniQKqR1gxwYBeVJ68+fCu0/1pUWzsU8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567018029203191.38711393509527; Wed, 28 Aug 2019 11:47:09 -0700 (PDT) Received: from localhost ([::1]:39814 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32yJ-0008Kb-Gp for importer@patchew.org; Wed, 28 Aug 2019 14:47:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33337) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32sI-0002GS-8K for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32sH-0003Yj-45 for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:54 -0400 Received: from mx1.redhat.com ([209.132.183.28]:19497) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32sG-0003XO-Sn for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:53 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 032595AFDE; Wed, 28 Aug 2019 18:40:51 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id AF37A5D717; Wed, 28 Aug 2019 18:40:47 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:20 -0300 Message-Id: <20190828184026.5840-7-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Wed, 28 Aug 2019 18:40:51 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 06/12] numa: Introduce MachineClass::auto_enable_numa for implicit NUMA node X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tao Xu , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Tao Xu Add MachineClass::auto_enable_numa field. When it is true, a NUMA node is expected to be created implicitly. Acked-by: David Gibson Suggested-by: Igor Mammedov Suggested-by: Eduardo Habkost Signed-off-by: Tao Xu Message-Id: <20190805071302.6260-1-tao3.xu@intel.com> Reviewed-by: Igor Mammedov Signed-off-by: Eduardo Habkost --- include/hw/boards.h | 1 + hw/core/numa.c | 9 +++++++-- hw/ppc/spapr.c | 9 +-------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/include/hw/boards.h b/include/hw/boards.h index 2289536e48..481e69388e 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -221,6 +221,7 @@ struct MachineClass { bool smbus_no_migration_support; bool nvdimm_supported; bool numa_mem_supported; + bool auto_enable_numa; =20 HotplugHandler *(*get_hotplug_handler)(MachineState *machine, DeviceState *dev); diff --git a/hw/core/numa.c b/hw/core/numa.c index 4dfec5c95b..1cbaf590af 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -378,9 +378,14 @@ void numa_complete_configuration(MachineState *ms) * guest tries to use it with that drivers. * * Enable NUMA implicitly by adding a new NUMA node automatically. + * + * Or if MachineClass::auto_enable_numa is true and no NUMA nodes, + * assume there is just one node with whole RAM. */ - if (ms->ram_slots > 0 && ms->numa_state->num_nodes =3D=3D 0 && - mc->auto_enable_numa_with_memhp) { + if (ms->numa_state->num_nodes =3D=3D 0 && + ((ms->ram_slots > 0 && + mc->auto_enable_numa_with_memhp) || + mc->auto_enable_numa)) { NumaNodeOptions node =3D { }; parse_numa_node(ms, &node, &error_abort); } diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index a9cd350f0d..9e1768a095 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -405,14 +405,6 @@ static int spapr_populate_memory(SpaprMachineState *sp= apr, void *fdt) hwaddr mem_start, node_size; int i, nb_nodes =3D machine->numa_state->num_nodes; NodeInfo *nodes =3D machine->numa_state->nodes; - NodeInfo ramnode; - - /* No NUMA nodes, assume there is just one node with whole RAM */ - if (!nb_nodes) { - nb_nodes =3D 1; - ramnode.node_mem =3D machine->ram_size; - nodes =3D &ramnode; - } =20 for (i =3D 0, mem_start =3D 0; i < nb_nodes; ++i) { if (!nodes[i].node_mem) { @@ -4457,6 +4449,7 @@ static void spapr_machine_class_init(ObjectClass *oc,= void *data) */ mc->numa_mem_align_shift =3D 28; mc->numa_mem_supported =3D true; + mc->auto_enable_numa =3D true; =20 smc->default_caps.caps[SPAPR_CAP_HTM] =3D SPAPR_CAP_OFF; smc->default_caps.caps[SPAPR_CAP_VSX] =3D SPAPR_CAP_ON; --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567018287; cv=none; d=zoho.com; s=zohoarc; b=W91vm0IZ9sr190EehYU886DmoMCJaV4V9g3N9HEpLUts19S8+7fbh3KdpuOL6wkqaIhfAwsx8NSoOYTuH7WbQiKFDdNDC5hfp4xeIaNxQTZjI5kunlLR/D0P2GX2sS9D0dQXeWocpOD9fGidAl4xK6Hjoid5cfoFWg4QIJeFh0s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567018287; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=i/8muvGcpVXjlp3FATOLortGTUGgRbLBfrR1BBovXNs=; b=I6DBi4tdgIygqzHYIVjC0oI+XcNvJrsE/qkI9XLpNDxeSabdLA7IIcksRnk8QwLH844s6btExjJQwIgbBwTivz4ATch+FfBKljLZ7ClGWpgGByG3c/8zzoGbMANLpZJeWZy3uh7dxuxrgnfDbIvevhGOLiWMsgVnQkYpAQb76nE= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567018287743244.18432022866602; Wed, 28 Aug 2019 11:51:27 -0700 (PDT) Received: from localhost ([::1]:39852 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i332R-0003Ge-1a for importer@patchew.org; Wed, 28 Aug 2019 14:51:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33368) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32sO-0002JR-57 for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32sM-0003bt-67 for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:00 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45580) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32sK-0003aZ-4G for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:40:56 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5D9FF20260; Wed, 28 Aug 2019 18:40:55 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 95AE95C1D6; Wed, 28 Aug 2019 18:40:52 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:21 -0300 Message-Id: <20190828184026.5840-8-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Wed, 28 Aug 2019 18:40:55 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 07/12] pc: Fix error message on die-id validation X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Vanderson M . do Rosario" , "Michael S . Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The error message for die-id range validation is incorrect. Example: $ qemu-system-x86_64 -smp 1,sockets=3D6,maxcpus=3D6 \ -device qemu64-x86_64-cpu,socket-id=3D1,die-id=3D1,core-id=3D0,thread-i= d=3D0 qemu-system-x86_64: -device qemu64-x86_64-cpu,socket-id=3D1,die-id=3D1,co= re-id=3D0,thread-id=3D0: \ Invalid CPU die-id: 1 must be in range 0:5 The actual range for die-id in this example is 0:0. Fix the error message to use smp_dies and print the correct range. Signed-off-by: Eduardo Habkost Message-Id: <20190815183803.13346-2-ehabkost@redhat.com> Reviewed-by: Igor Mammedov Reviewed-by: Vanderson M. do Rosario Reviewed-by: Michael S. Tsirkin Signed-off-by: Eduardo Habkost --- hw/i386/pc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 985e9261b0..584cd3ed0a 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -2430,7 +2430,7 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_d= ev, return; } else if (cpu->die_id > pcms->smp_dies - 1) { error_setg(errp, "Invalid CPU die-id: %u must be in range 0:%u= ", - cpu->die_id, max_socket); + cpu->die_id, pcms->smp_dies - 1); return; } if (cpu->core_id < 0) { --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567018405; cv=none; d=zoho.com; s=zohoarc; b=CSlTsIxU6VmYShK/BgOlSyMvwprmXGDmsUBDFnqYLHL95cKx3mNvCEwTv5O1/xskL/eh+C6fCPmu/8rh1xopZnph5sN3Lcb8uK8iCWGUYx+tgC0Mcx/cybDF3ccc0ejdVMUA+9cUd5Jxer4YN7hM0ynYMxmZtOKk7jA80e7OXhI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567018405; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=y3y/oezgf8vz8JCK436zQO5WTlo82mN+kl484k+jrrs=; b=GYUShMLlYvRjG9W56ZBMu5ow/P2st/FR1XRAhJTOfBQfgfT68TWrj3gf/Eby5OH8lodrWbuifoXBqSoLT8/da9nTbTlwy30eiKWSFeFPnjmLI7xwqFiRGHSVdC0dYOpa7UV9eJCGd1ZykGbd09gHwOpz7EpH6v4E3oPAazWSP/E= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567018405407581.5063268231862; Wed, 28 Aug 2019 11:53:25 -0700 (PDT) Received: from localhost ([::1]:39880 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i334O-0005rt-8d for importer@patchew.org; Wed, 28 Aug 2019 14:53:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33385) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32sR-0002M9-9a for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32sQ-0003er-60 for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:03 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50196) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32sQ-0003eG-0h for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:02 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D66CC308219F; Wed, 28 Aug 2019 18:41:00 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0A8141001B00; Wed, 28 Aug 2019 18:40:57 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:22 -0300 Message-Id: <20190828184026.5840-9-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.47]); Wed, 28 Aug 2019 18:41:00 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 08/12] pc: Improve error message when die-id is omitted X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Vanderson M . do Rosario" , "Michael S . Tsirkin" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The error message when die-id is omitted doesn't make sense: $ qemu-system-x86_64 -smp 1,sockets=3D6,maxcpus=3D6 \ -device qemu64-x86_64-cpu,socket-id=3D1,core-id=3D0,thread-id=3D0 qemu-system-x86_64: -device qemu64-x86_64-cpu,socket-id=3D1,core-id=3D0,t= hread-id=3D0: \ Invalid CPU die-id: 4294967295 must be in range 0:0 Fix it, so it will now read: qemu-system-x86_64: -device qemu64-x86_64-cpu,socket-id=3D1,core-id=3D0,t= hread-id=3D0: \ CPU die-id is not set Signed-off-by: Eduardo Habkost Message-Id: <20190815183803.13346-3-ehabkost@redhat.com> Reviewed-by: Igor Mammedov Reviewed-by: Vanderson M. do Rosario Reviewed-by: Michael S. Tsirkin Signed-off-by: Eduardo Habkost --- hw/i386/pc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 584cd3ed0a..3494423d63 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -2428,6 +2428,10 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_= dev, error_setg(errp, "Invalid CPU socket-id: %u must be in range 0= :%u", cpu->socket_id, max_socket); return; + } + if (cpu->die_id < 0) { + error_setg(errp, "CPU die-id is not set"); + return; } else if (cpu->die_id > pcms->smp_dies - 1) { error_setg(errp, "Invalid CPU die-id: %u must be in range 0:%u= ", cpu->die_id, pcms->smp_dies - 1); --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567017947; cv=none; d=zoho.com; s=zohoarc; b=XEG/8KZ6M9cLHqRJs+RcbnskA9Nr3LCGCAQJYC+4818+MCCf5xhKvdr1sK6MWAW7x2hJEJ3zjjjvtVUwU4cAoH/V3rpZMMYLPFjHaBP2e7UegFS094C0nnGLsxAhWXHcjQmXb05Kr0IynBF5mZBrwSD+kkR4NCx1ndAqvhH93nc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567017947; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=VoqV1i1fDLH8j8EuCMVncpHk8/hW9QiGFPZ/XlL7B+E=; b=P8D/AWZ5iQ8XxAIUEqvPHq+FAmpIIVd+c/KZJwAPgSEK+1+yoiS2nxUiDz/ssjDjsPZz50nvO7kpLhzS04OjAVlQMEoa9h9XLt9UfioK4xS+uay9Uv/R/ZHelw6xJIqAzw251gIzsO+mc1M8nzcgchNt0ci9TpaxoDf6IvmdKKc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567017947848399.17837642949496; Wed, 28 Aug 2019 11:45:47 -0700 (PDT) Received: from localhost ([::1]:39782 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32wv-0006mG-3m for importer@patchew.org; Wed, 28 Aug 2019 14:45:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33403) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32sU-0002Re-LU for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32sT-0003gd-Dx for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:60168) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32sT-0003g9-6J for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:05 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7C5FA308FB9D; Wed, 28 Aug 2019 18:41:04 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0DFAD60CCD; Wed, 28 Aug 2019 18:41:02 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:23 -0300 Message-Id: <20190828184026.5840-10-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.43]); Wed, 28 Aug 2019 18:41:04 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 09/12] pc: Don't make die-id mandatory unless necessary X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" We have this issue reported when using libvirt to hotplug CPUs: https://bugzilla.redhat.com/show_bug.cgi?id=3D1741451 Basically, libvirt is not copying die-id from query-hotpluggable-cpus, but die-id is now mandatory. We could blame libvirt and say it is not following the documented interface, because we have this buried in the QAPI schema documentation: > Note: currently there are 5 properties that could be present > but management should be prepared to pass through other > properties with device_add command to allow for future > interface extension. This also requires the filed names to be kept in > sync with the properties passed to -device/device_add. But I don't think this would be reasonable from us. We can just make QEMU more flexible and let die-id to be omitted when there's no ambiguity. This will allow us to keep compatibility with existing libvirt versions. Test case included to ensure we don't break this again. Fixes: commit 176d2cda0dee ("i386/cpu: Consolidate die-id validity in smp c= ontext") Signed-off-by: Eduardo Habkost Message-Id: <20190816170750.23910-1-ehabkost@redhat.com> Signed-off-by: Eduardo Habkost --- hw/i386/pc.c | 8 ++++++ tests/acceptance/pc_cpu_hotplug_props.py | 35 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 tests/acceptance/pc_cpu_hotplug_props.py diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 3494423d63..c7200b0b54 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -2421,6 +2421,14 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_= dev, int max_socket =3D (ms->smp.max_cpus - 1) / smp_threads / smp_cores / pcms->smp_dies; =20 + /* + * die-id was optional in QEMU 4.0 and older, so keep it optional + * if there's only one die per socket. + */ + if (cpu->die_id < 0 && pcms->smp_dies =3D=3D 1) { + cpu->die_id =3D 0; + } + if (cpu->socket_id < 0) { error_setg(errp, "CPU socket-id is not set"); return; diff --git a/tests/acceptance/pc_cpu_hotplug_props.py b/tests/acceptance/pc= _cpu_hotplug_props.py new file mode 100644 index 0000000000..08b7e632c6 --- /dev/null +++ b/tests/acceptance/pc_cpu_hotplug_props.py @@ -0,0 +1,35 @@ +# +# Ensure CPU die-id can be omitted on -device +# +# Copyright (c) 2019 Red Hat Inc +# +# Author: +# Eduardo Habkost +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . +# + +from avocado_qemu import Test + +class OmittedCPUProps(Test): + """ + :avocado: tags=3Darch:x86_64 + """ + def test_no_die_id(self): + self.vm.add_args('-nodefaults', '-S') + self.vm.add_args('-smp', '1,sockets=3D2,cores=3D2,threads=3D2,maxc= pus=3D8') + self.vm.add_args('-cpu', 'qemu64') + self.vm.add_args('-device', 'qemu64-x86_64-cpu,socket-id=3D1,core-= id=3D0,thread-id=3D0') + self.vm.launch() + self.assertEquals(len(self.vm.command('query-cpus')), 2) --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567018494; cv=none; d=zoho.com; s=zohoarc; b=LdlLl5efpSQwdF1QNVvDWK5OkmzBhPE2OU0XVFQ5ZbhKzUMYW2e3XjLoiM6OV+bVOOh4HOplfzTUUpu+NwHKFOl30onNomvSXr6Ck7I2TMJuiAIOG1ZUFBZb1IlJowaxBydCvJtVhRyRXvSJ3nNKk5qthCBHVHaKOoKrzV2MLs4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567018494; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=CbiSyS4NKJKqrK2lCNC98/qG+fbP8L8Jq+yNgJcBpeM=; b=U3HGtYlewHpuKEla8OEe/k8bCwBnLVqQFJCkWOydX9Ck87CQrRFw+1ll9emjZOET6Rgs8YtcVS+frKyr67+WYn9838WT4JWVTKGk4s/pjJ1BBKeX0xM3COvQaBMd0bYhjWDvWAhxAhNP34zUz7BWOIq9OEUdJdUzPWtsuecxuhU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567018494467495.39922032611423; Wed, 28 Aug 2019 11:54:54 -0700 (PDT) Received: from localhost ([::1]:39910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i335n-0007rf-LK for importer@patchew.org; Wed, 28 Aug 2019 14:54:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33415) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32sY-0002Sz-TD for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32sW-0003k1-Vz for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50546) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32sV-0003hK-6g for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:07 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7BE1E3082B41; Wed, 28 Aug 2019 18:41:06 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0AC19194B2; Wed, 28 Aug 2019 18:41:05 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:24 -0300 Message-Id: <20190828184026.5840-11-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.45]); Wed, 28 Aug 2019 18:41:06 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 10/12] qapi: report the default CPU type for each machine X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Daniel P. Berrang=C3=A9 When user doesn't request any explicit CPU model with libvirt or QEMU, a machine type specific CPU model is picked. Currently there is no way to determine what this QEMU built-in default is, so libvirt cannot report this back to the user in the XML config. This extends the "query-machines" QMP command so that it reports the default CPU model typename for each machine. Reviewed-by: Eric Blake Signed-off-by: Daniel P. Berrang=C3=A9 Message-Id: <20190822100412.23746-1-berrange@redhat.com> Signed-off-by: Eduardo Habkost --- qapi/machine.json | 5 ++++- hw/core/machine-qmp-cmds.c | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/qapi/machine.json b/qapi/machine.json index de5c742d72..ca26779f1a 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -348,13 +348,16 @@ # in future versions of QEMU according to the QEMU deprecation # policy (since 4.1.0) # +# @default-cpu-type: default CPU model typename if none is requested via +# the -cpu argument. (since 4.2) +# # Since: 1.2.0 ## { 'struct': 'MachineInfo', 'data': { 'name': 'str', '*alias': 'str', '*is-default': 'bool', 'cpu-max': 'int', 'hotpluggable-cpus': 'bool', 'numa-mem-supported': 'bool', - 'deprecated': 'bool' } } + 'deprecated': 'bool', '*default-cpu-type': 'str' } } =20 ## # @query-machines: diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c index 15cf7c62e3..eed5aeb2f7 100644 --- a/hw/core/machine-qmp-cmds.c +++ b/hw/core/machine-qmp-cmds.c @@ -230,6 +230,10 @@ MachineInfoList *qmp_query_machines(Error **errp) info->hotpluggable_cpus =3D mc->has_hotpluggable_cpus; info->numa_mem_supported =3D mc->numa_mem_supported; info->deprecated =3D !!mc->deprecation_reason; + if (mc->default_cpu_type) { + info->default_cpu_type =3D g_strdup(mc->default_cpu_type); + info->has_default_cpu_type =3D true; + } =20 entry =3D g_malloc0(sizeof(*entry)); entry->value =3D info; --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567018605; cv=none; d=zoho.com; s=zohoarc; b=Zm6I8YLjhpasEKAZnglsZeNPD3NiuLaMvLRCJsilFVxs6OGa9fChk5TPs4b80gC2t2oifxfolNm/6qzyTSJET+dwyH8Ti1iSUBSSbRislCCJu5uOO5i/Qyp1EKQKgDYLfEFdVPQ6h3tyGDeqhX/Xg0yKsY0SIWifk+LSJnIWqfk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567018605; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=HfBAUKov8Ejf2vCZnc/XdMgQqr75dP1+9B5QVxUuOvE=; b=YpLc4OdhRFZT5+2LfrYgiSMfXHI9Xk30vb9Rsbw4Hvs1DC8bU/5L828pFOubtFZu76cqY6N3HmypLyX7HZz17d/cUEmihtBDMzq3hajOvXuFctXcNj/ttdB014y3vywdv92+WC4g0GmzEFn3UQwuz0Q5shsv+8nDlr7BD1s0Y8k= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567018605268280.0432279094514; Wed, 28 Aug 2019 11:56:45 -0700 (PDT) Received: from localhost ([::1]:39942 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i337c-0001Bn-55 for importer@patchew.org; Wed, 28 Aug 2019 14:56:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33426) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32sc-0002TY-G0 for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32sa-0003m6-PL for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:13 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37744) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32sZ-0003lN-Of for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:12 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 129BC308429D; Wed, 28 Aug 2019 18:41:11 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 01293194B2; Wed, 28 Aug 2019 18:41:07 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:25 -0300 Message-Id: <20190828184026.5840-12-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Wed, 28 Aug 2019 18:41:11 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 11/12] hostmem-file: fix pmem file size check X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Stefan Hajnoczi Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi Commit 314aec4a6e06844937f1677f6cba21981005f389 ("hostmem-file: reject invalid pmem file sizes") added a file size check that verifies the hostmem object's size parameter against the actual devdax pmem file. This is useful because getting the size wrong results in confusing errors inside the guest. However, the code doesn't work properly for files where struct stat::st_size is zero. Hostmem-file's ->alloc() function returns early without setting an Error, causing the following assertion failure: qemu/memory.c:2215: memory_region_get_ram_ptr: Assertion `mr->ram_block' = failed. This patch handles the case where qemu_get_pmem_size() returns 0 but there is no error. Fixes: 314aec4a6e06844937f1677f6cba21981005f389 Signed-off-by: Stefan Hajnoczi Message-Id: <20190823135632.25010-1-stefanha@redhat.com> Signed-off-by: Eduardo Habkost --- backends/hostmem-file.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c index 29e55c9195..ecc15e3eb0 100644 --- a/backends/hostmem-file.c +++ b/backends/hostmem-file.c @@ -67,12 +67,12 @@ file_backend_memory_alloc(HostMemoryBackend *backend, E= rror **errp) uint64_t size; =20 size =3D qemu_get_pmem_size(fb->mem_path, &local_err); - if (!size) { + if (local_err) { error_propagate(errp, local_err); return; } =20 - if (backend->size > size) { + if (size && backend->size > size) { error_setg(errp, "size property %" PRIu64 " is larger than " "pmem file \"%s\" size %" PRIu64, backend->size, fb->mem_path, size); --=20 2.21.0 From nobody Wed May 1 17:36:29 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1567017971; cv=none; d=zoho.com; s=zohoarc; b=k1oI4SIXe9jYpygYylMIN5BceLmvK4FcQNJjslD+WGZ3xFQfIuo3IKlLEZsgYM/TaBWZu5a7EikC1IncBOp08kqR9D44Bn1M7D7iKUrxF75kMg0gqyVkY8cDj9Eq4gIUs6WiyPOIXRwaV5LKFTAgYXACdIOoj53ffFrPot8edlQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567017971; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=19yTbNLHByPY93nVpZt35TiBpQutW1mTq49H87b2YRg=; b=IUE7At86TRVDKplukjaHpQRyoXcXVZv6EAQ8yO7M49Hmtr6toGa1WrjPjYZdOsYJpoZniIzXX8nrrkN7Vhm7CJnSx1GHFot/KNJOT24VO+AxPs/kpfScIWf0IvFEVuXXk7lxiM82JpiSfSwZiZ/7cnRJsmfgrH4LS6YlG9T7lIk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1567017971635312.3510455848332; Wed, 28 Aug 2019 11:46:11 -0700 (PDT) Received: from localhost ([::1]:39796 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32xN-0007QU-TU for importer@patchew.org; Wed, 28 Aug 2019 14:46:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33448) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i32si-0002Ve-Cr for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i32sg-0003p2-DX for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:19 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39882) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1i32sf-0003oK-O7 for qemu-devel@nongnu.org; Wed, 28 Aug 2019 14:41:18 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0920418C426F; Wed, 28 Aug 2019 18:41:17 +0000 (UTC) Received: from localhost (ovpn-116-60.gru2.redhat.com [10.97.116.60]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8E13860BEC; Wed, 28 Aug 2019 18:41:12 +0000 (UTC) From: Eduardo Habkost To: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, Marcel Apfelbaum , Richard Henderson , Peter Maydell Date: Wed, 28 Aug 2019 15:40:26 -0300 Message-Id: <20190828184026.5840-13-ehabkost@redhat.com> In-Reply-To: <20190828184026.5840-1-ehabkost@redhat.com> References: <20190828184026.5840-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.62]); Wed, 28 Aug 2019 18:41:17 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL v6 12/12] i386/vmmouse: Properly reset state X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jan Kiszka Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Jan Kiszka nb_queue was not zeroed so that we no longer delivered events if a previous guest left the device in an overflow state. The state of absolute does not matter as the next vmmouse_update_handler call will align it again. Signed-off-by: Jan Kiszka Message-Id: Reviewed-by: Eduardo Habkost Signed-off-by: Eduardo Habkost --- hw/i386/vmmouse.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c index 012ab90396..41ad91ad53 100644 --- a/hw/i386/vmmouse.c +++ b/hw/i386/vmmouse.c @@ -258,6 +258,7 @@ static void vmmouse_reset(DeviceState *d) VMMouseState *s =3D VMMOUSE(d); =20 s->queue_size =3D VMMOUSE_QUEUE_SIZE; + s->nb_queue =3D 0; =20 vmmouse_disable(s); } --=20 2.21.0