NUMA fixes queue
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABCAAGBQJU639qAAoJECgHk2+YTcWmIC0QAK36G9LpeDOJONxt7LNOCMes Oplwp11RRA5zs5YHVCzTL0NMZEf59xRs/35r1iIrt238clmFGpUdZRpdlsZdDMZL ThwxgrV7/aZH/+HyZVSTCh5FL+fTyl+DjVQ1cZqNUWQRQ6KO2AjSxA53gCoFEZ+L 1Vg6A41u1UOdO3tMOosuDcZtkN4fXevHTuIFFzfzW4WhJuctU2P/VPsHKxESKxYH 1Kz0S9CCr6meIqZ8DE9y5qhCUdXBj9VYbEY2JZUYVaeB8q+smY7Lz1cV7MABrD3T EoJa3/53b4DFl4wNkLJsuqQNFHiOrQadgmbhocgEYp3u96/7cKa+pZ8mTKgvZ14D kxtpcL1TeiyA3b7UfITPhqLY3mKvN7UIKh/vo0haAxj5B3H6QhemkO76oA1/zkJR zI3mm6trnxurZm1gBtkZwPbKoDi7OuS7lYxW3GT7K5nJBMCEAbFGXFzmoHomVDVZ phYGwihzUg/LWMwaZRT0bbUd2GOVAXGY7Zy9Kg0p8nvPtcEYDwp0spQDfyrnwEWu Bohi80x97ayRXrvY1mP5mdYg1Jj8jR4qPdwnoW6M2UHXvtdQsjfFoSj4/xbVMCb9 l5y1vH+DHG/ZNQB0URjBoXmttWkZjpbiAbo0daPFDaZ1QRfdXx6JgdkTKtA8ozQ9 Xvh4hVGPeLAPvRjzaesa =0V2i -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/ehabkost/tags/numa-pull-request' into staging NUMA fixes queue # gpg: Signature made Mon Feb 23 19:28:42 2015 GMT using RSA key ID 984DC5A6 # gpg: Can't check signature: public key not found * remotes/ehabkost/tags/numa-pull-request: numa: Rename set_numa_modes() to numa_post_machine_init() numa: Rename option parsing functions numa: Move QemuOpts parsing to set_numa_nodes() numa: Make max_numa_nodeid static numa: Move NUMA globals to numa.c vl.c: Remove unnecessary zero-initialization of NUMA globals numa: Move NUMA declarations from sysemu.h to numa.h Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
2dffe5516e
@ -41,6 +41,7 @@
|
||||
#include "hw/pci/msi.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "sysemu/numa.h"
|
||||
#include "sysemu/kvm.h"
|
||||
#include "kvm_i386.h"
|
||||
#include "hw/xen/xen.h"
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "qemu/config-file.h"
|
||||
#include "qapi/visitor.h"
|
||||
#include "qemu/range.h"
|
||||
#include "sysemu/numa.h"
|
||||
|
||||
typedef struct pc_dimms_capacity {
|
||||
uint64_t size;
|
||||
|
@ -25,6 +25,7 @@
|
||||
*
|
||||
*/
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "sysemu/numa.h"
|
||||
#include "hw/hw.h"
|
||||
#include "hw/fw-path-provider.h"
|
||||
#include "elf.h"
|
||||
|
24
include/sysemu/numa.h
Normal file
24
include/sysemu/numa.h
Normal file
@ -0,0 +1,24 @@
|
||||
#ifndef SYSEMU_NUMA_H
|
||||
#define SYSEMU_NUMA_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "qemu/bitmap.h"
|
||||
#include "qemu/option.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "sysemu/hostmem.h"
|
||||
|
||||
extern int nb_numa_nodes; /* Number of NUMA nodes */
|
||||
|
||||
typedef struct node_info {
|
||||
uint64_t node_mem;
|
||||
DECLARE_BITMAP(node_cpu, MAX_CPUMASK_BITS);
|
||||
struct HostMemoryBackend *node_memdev;
|
||||
bool present;
|
||||
} NodeInfo;
|
||||
extern NodeInfo numa_info[MAX_NODES];
|
||||
void parse_numa_opts(void);
|
||||
void numa_post_machine_init(void);
|
||||
void query_numa_node_mem(uint64_t node_mem[]);
|
||||
extern QemuOptsList qemu_numa_opts;
|
||||
|
||||
#endif
|
@ -144,24 +144,6 @@ extern int mem_prealloc;
|
||||
*/
|
||||
#define MAX_CPUMASK_BITS 255
|
||||
|
||||
extern int nb_numa_nodes; /* Number of NUMA nodes */
|
||||
extern int max_numa_nodeid; /* Highest specified NUMA node ID, plus one.
|
||||
* For all nodes, nodeid < max_numa_nodeid
|
||||
*/
|
||||
|
||||
typedef struct node_info {
|
||||
uint64_t node_mem;
|
||||
DECLARE_BITMAP(node_cpu, MAX_CPUMASK_BITS);
|
||||
struct HostMemoryBackend *node_memdev;
|
||||
bool present;
|
||||
} NodeInfo;
|
||||
extern NodeInfo numa_info[MAX_NODES];
|
||||
void set_numa_nodes(void);
|
||||
void set_numa_modes(void);
|
||||
void query_numa_node_mem(uint64_t node_mem[]);
|
||||
extern QemuOptsList qemu_numa_opts;
|
||||
int numa_init_func(QemuOpts *opts, void *opaque);
|
||||
|
||||
#define MAX_OPTION_ROMS 16
|
||||
typedef struct QEMUOptionRom {
|
||||
const char *name;
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "sysemu/char.h"
|
||||
#include "ui/qemu-spice.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "sysemu/numa.h"
|
||||
#include "monitor/monitor.h"
|
||||
#include "qemu/readline.h"
|
||||
#include "ui/console.h"
|
||||
|
20
numa.c
20
numa.c
@ -22,7 +22,7 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "sysemu/numa.h"
|
||||
#include "exec/cpu-common.h"
|
||||
#include "qemu/bitmap.h"
|
||||
#include "qom/cpu.h"
|
||||
@ -36,6 +36,8 @@
|
||||
#include "sysemu/hostmem.h"
|
||||
#include "qmp-commands.h"
|
||||
#include "hw/mem/pc-dimm.h"
|
||||
#include "qemu/option.h"
|
||||
#include "qemu/config-file.h"
|
||||
|
||||
QemuOptsList qemu_numa_opts = {
|
||||
.name = "numa",
|
||||
@ -45,6 +47,11 @@ QemuOptsList qemu_numa_opts = {
|
||||
};
|
||||
|
||||
static int have_memdevs = -1;
|
||||
static int max_numa_nodeid; /* Highest specified NUMA node ID, plus one.
|
||||
* For all nodes, nodeid < max_numa_nodeid
|
||||
*/
|
||||
int nb_numa_nodes;
|
||||
NodeInfo numa_info[MAX_NODES];
|
||||
|
||||
static void numa_node_parse(NumaNodeOptions *node, QemuOpts *opts, Error **errp)
|
||||
{
|
||||
@ -116,7 +123,7 @@ static void numa_node_parse(NumaNodeOptions *node, QemuOpts *opts, Error **errp)
|
||||
max_numa_nodeid = MAX(max_numa_nodeid, nodenr + 1);
|
||||
}
|
||||
|
||||
int numa_init_func(QemuOpts *opts, void *opaque)
|
||||
static int parse_numa(QemuOpts *opts, void *opaque)
|
||||
{
|
||||
NumaOptions *object = NULL;
|
||||
Error *err = NULL;
|
||||
@ -158,10 +165,15 @@ error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
void set_numa_nodes(void)
|
||||
void parse_numa_opts(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (qemu_opts_foreach(qemu_find_opts("numa"), parse_numa,
|
||||
NULL, 1) != 0) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
assert(max_numa_nodeid <= MAX_NODES);
|
||||
|
||||
/* No support for sparse NUMA node IDs yet: */
|
||||
@ -233,7 +245,7 @@ void set_numa_nodes(void)
|
||||
}
|
||||
}
|
||||
|
||||
void set_numa_modes(void)
|
||||
void numa_post_machine_init(void)
|
||||
{
|
||||
CPUState *cpu;
|
||||
int i;
|
||||
|
22
vl.c
22
vl.c
@ -78,6 +78,7 @@ int main(int argc, char **argv)
|
||||
#include "monitor/monitor.h"
|
||||
#include "ui/console.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "sysemu/numa.h"
|
||||
#include "exec/gdbstub.h"
|
||||
#include "qemu/timer.h"
|
||||
#include "sysemu/char.h"
|
||||
@ -183,10 +184,6 @@ uint8_t qemu_extra_params_fw[2];
|
||||
|
||||
int icount_align_option;
|
||||
|
||||
int nb_numa_nodes;
|
||||
int max_numa_nodeid;
|
||||
NodeInfo numa_info[MAX_NODES];
|
||||
|
||||
/* The bytes in qemu_uuid[] are in the order specified by RFC4122, _not_ in the
|
||||
* little-endian "wire format" described in the SMBIOS 2.6 specification.
|
||||
*/
|
||||
@ -2816,14 +2813,6 @@ int main(int argc, char **argv, char **envp)
|
||||
cyls = heads = secs = 0;
|
||||
translation = BIOS_ATA_TRANSLATION_AUTO;
|
||||
|
||||
for (i = 0; i < MAX_NODES; i++) {
|
||||
numa_info[i].node_mem = 0;
|
||||
numa_info[i].present = false;
|
||||
bitmap_zero(numa_info[i].node_cpu, MAX_CPUMASK_BITS);
|
||||
}
|
||||
|
||||
nb_numa_nodes = 0;
|
||||
max_numa_nodeid = 0;
|
||||
nb_nics = 0;
|
||||
|
||||
bdrv_init_with_whitelist();
|
||||
@ -4163,12 +4152,7 @@ int main(int argc, char **argv, char **envp)
|
||||
default_drive(default_floppy, snapshot, IF_FLOPPY, 0, FD_OPTS);
|
||||
default_drive(default_sdcard, snapshot, IF_SD, 0, SD_OPTS);
|
||||
|
||||
if (qemu_opts_foreach(qemu_find_opts("numa"), numa_init_func,
|
||||
NULL, 1) != 0) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
set_numa_nodes();
|
||||
parse_numa_opts();
|
||||
|
||||
if (qemu_opts_foreach(qemu_find_opts("mon"), mon_init_func, NULL, 1) != 0) {
|
||||
exit(1);
|
||||
@ -4227,7 +4211,7 @@ int main(int argc, char **argv, char **envp)
|
||||
|
||||
cpu_synchronize_all_post_init();
|
||||
|
||||
set_numa_modes();
|
||||
numa_post_machine_init();
|
||||
|
||||
/* init USB devices */
|
||||
if (usb_enabled()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user