[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 15/22] machine: make max_cpus a -machine option
From: |
Jes Sorensen |
Subject: |
Re: [Qemu-devel] [PATCH 15/22] machine: make max_cpus a -machine option |
Date: |
Wed, 09 Jun 2010 09:47:26 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100430 Fedora/3.0.4-2.fc12 Lightning/1.0b2pre Thunderbird/3.0.4 |
On 06/08/10 01:52, Anthony Liguori wrote:
> max_cpus is a weird property today. On the one hand, it represents the
> maximum
> CPUs a board can support and is used to validate the number of vcpus requested
> by the user.
>
> On the other hand, max_cpus can be set by the user in which case it is taken
> to mean the number of physical sockets that should be advertised by the
> firmware. Furthermore, if max_cpus isn't explicitly set by the user, it's
> defaulted to the number of smp_cpus. But there's actually a second copy of
> max_cpus that still represents the maximum cpus spported by the platform.
Sorry this is wrong, max_cpus never meant to advertise the number of
sockets, it means the number of cores (ie. cpus) as the limit advertised
by firmware.
> Yes, it's confusing. So let's be a bit more obvious. This patch introduces
> a sockets parameter that allows a user to explicitly set the number of
> advertised sockets apart from the number of maximum cpus.
>
> This is something of a stop gap. We really ought to specify a more rich
> NUMA topology as machine options but that will come later.
>
> Signed-off-by: Anthony Liguori <address@hidden>
>
[snip]
> diff --git a/hw/fw_cfg.c b/hw/fw_cfg.c
> index 22ebb50..de4454f 100644
> --- a/hw/fw_cfg.c
> +++ b/hw/fw_cfg.c
> @@ -321,7 +321,8 @@ int fw_cfg_add_file(FWCfgState *s, const char *dir,
> const char *filename,
> }
>
> FWCfgState *fw_cfg_init(uint32_t ctl_port, uint32_t data_port,
> - target_phys_addr_t ctl_addr, target_phys_addr_t
> data_addr)
> + target_phys_addr_t ctl_addr, target_phys_addr_t
> data_addr,
> + QemuOpts *opts)
> {
> FWCfgState *s;
> int io_ctl_memory, io_data_memory;
> @@ -349,7 +350,8 @@ FWCfgState *fw_cfg_init(uint32_t ctl_port, uint32_t
> data_port,
> fw_cfg_add_bytes(s, FW_CFG_UUID, qemu_uuid, 16);
> fw_cfg_add_i16(s, FW_CFG_NOGRAPHIC, (uint16_t)(display_type ==
> DT_NOGRAPHIC));
> fw_cfg_add_i16(s, FW_CFG_NB_CPUS, (uint16_t)smp_cpus);
> - fw_cfg_add_i16(s, FW_CFG_MAX_CPUS, (uint16_t)max_cpus);
> + fw_cfg_add_i16(s, FW_CFG_MAX_CPUS,
> + (uint16_t)qemu_opt_get_number(opts, "sockets", smp_cpus));
> fw_cfg_add_i16(s, FW_CFG_BOOT_MENU, (uint16_t)boot_menu);
NACK this is just plain wrong!
Sorry Anthony, but max_cpus never meant number of sockets. It is used by
the BIOS to calculate table sizes for CPU entries, and that number is
based on cores, not sockets.
If you want to pass a number of sockets onto the BIOS, I will totally
support that, but you need to introduce FW_CFG_MAX_SOCKETS for that
instead, and tell the BIOS to use that for the SRAT.
Cheers,
Jes
- [Qemu-devel] [PATCH 13/22] machine: get rid of global default QEMUMachine members, (continued)
- [Qemu-devel] [PATCH 13/22] machine: get rid of global default QEMUMachine members, Anthony Liguori, 2010/06/07
- [Qemu-devel] [PATCH 12/22] machine: some sugary macros to simplify machine default options, Anthony Liguori, 2010/06/07
- [Qemu-devel] [PATCH 06/22] Make -acpi-enable a machine specific option, Anthony Liguori, 2010/06/07
- [Qemu-devel] [PATCH 17/22] machine: kill machine->alias, Anthony Liguori, 2010/06/07
- [Qemu-devel] [PATCH 16/22] machine: move default machine out of machine definitions, Anthony Liguori, 2010/06/07
- [Qemu-devel] [PATCH 15/22] machine: make max_cpus a -machine option, Anthony Liguori, 2010/06/07
- Re: [Qemu-devel] [PATCH 15/22] machine: make max_cpus a -machine option,
Jes Sorensen <=
- [Qemu-devel] [PATCH 19/22] machine: introduce accel option to allow selection of kvm or tcg, Anthony Liguori, 2010/06/07
- [Qemu-devel] [PATCH 21/22] machine: convert pc machines to split core vs machine API, Anthony Liguori, 2010/06/07
- [Qemu-devel] [PATCH 14/22] machine: replace QEMUMachine.use_scsi with -machine default_drive, Anthony Liguori, 2010/06/07
- [Qemu-devel] [PATCH 22/22] machine: introduce -machine-def option to define a machine via config, Anthony Liguori, 2010/06/07
[Qemu-devel] [PATCH 20/22] machine: introduce machine core and split qemu_register_machine, Anthony Liguori, 2010/06/07
[Qemu-devel] [PATCH 18/22] machine: final conversion to pure QemuOpts, Anthony Liguori, 2010/06/07