[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 09/17] target-s390x: Define S390 CPU model specif
From: |
Michael Mueller |
Subject: |
[Qemu-devel] [PATCH v6 09/17] target-s390x: Define S390 CPU model specific facility lists |
Date: |
Mon, 27 Apr 2015 16:53:23 +0200 |
This patch defines S390 CPU facilities and their presence at the
different CPU model levels. Beside defining a base which facilities
have to be requested per CPU model, these sets are associated to the
defined CPU classes and used to calculate the list of supported
CPU models in context of the current hosting machine model.
The also defined qemu side facility mask allows to implement and enable
facilities in QEMU land.
Signed-off-by: Michael Mueller <address@hidden>
Acked-by: Christian Borntraeger <address@hidden>
---
target-s390x/cpu-models.c | 11 +++++++++++
target-s390x/cpu-models.h | 8 ++++++++
target-s390x/cpu.c | 1 +
3 files changed, 20 insertions(+)
diff --git a/target-s390x/cpu-models.c b/target-s390x/cpu-models.c
index 147e221..7bb80db 100644
--- a/target-s390x/cpu-models.c
+++ b/target-s390x/cpu-models.c
@@ -12,6 +12,7 @@
#include "qemu-common.h"
#include "cpu-models.h"
+#include "gen-facilities.h"
#define S390_PROC_DEF(_name, _cpu_id, _desc) \
static void \
@@ -20,6 +21,10 @@
{ \
DeviceClass *dc = DEVICE_CLASS(oc); \
S390CPUClass *cc = S390_CPU_CLASS(oc); \
+ uint64_t nbits = FAC_LIST_CPU_S390_SIZE_UINT1; \
+ uint64_t fac_list[FAC_LIST_CPU_S390_SIZE_UINT64] = { \
+ glue(FAC_LIST_, _cpu_id) \
+ }; \
\
cc->is_migration_safe = true; \
cc->mach.ga = cpu_ga(_cpu_id); \
@@ -30,6 +35,7 @@
cc->proc.id = S390_DEF_ID; \
cc->proc.type = cpu_type(_cpu_id); \
cc->proc.ibc = S390_DEF_IBC; \
+ bitmap_copy(cc->proc.fac_list, fac_list, nbits); \
dc->desc = _desc; \
} \
static const TypeInfo \
@@ -46,6 +52,11 @@
} \
type_init(glue(_cpu_id, _cpu_register_types))
+/* facilities implemented by qemu */
+uint64_t qemu_s390_fac_list_mask[FAC_LIST_CPU_S390_SIZE_UINT64] = {
+ FAC_LIST_CPU_S390_MASK_QEMU
+};
+
/* define S390 CPU model classes */
S390_PROC_DEF("2064-ga1", CPU_S390_2064_GA1, "IBM zSeries 900 GA1")
S390_PROC_DEF("2064-ga2", CPU_S390_2064_GA2, "IBM zSeries 900 GA2")
diff --git a/target-s390x/cpu-models.h b/target-s390x/cpu-models.h
index b02c38b..948af10 100644
--- a/target-s390x/cpu-models.h
+++ b/target-s390x/cpu-models.h
@@ -13,6 +13,14 @@
#ifndef TARGET_S390X_CPU_MODELS_H
#define TARGET_S390X_CPU_MODELS_H
+#include "cpu-facilities.h"
+#include "gen-facilities.h"
+
+#define FAC_LIST_ARCH_S390_SIZE_UINT1 \
+ (FAC_LIST_ARCH_S390_SIZE_UINT8 * BITS_PER_BYTE)
+#define FAC_LIST_ARCH_S390_SIZE_UINT64 \
+ (FAC_LIST_ARCH_S390_SIZE_UINT8 / sizeof(uint64_t))
+
#define S390_EC 0x1
#define S390_BC 0x2
diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c
index 8f49813..9232a97 100644
--- a/target-s390x/cpu.c
+++ b/target-s390x/cpu.c
@@ -29,6 +29,7 @@
#include "qemu/error-report.h"
#include "hw/hw.h"
#include "trace.h"
+#include "cpu-models.h"
#ifndef CONFIG_USER_ONLY
#include "sysemu/arch_init.h"
#endif
--
1.8.3.1
- [Qemu-devel] [PATCH v6 00/17] s390 cpu model implementation, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 02/17] Add accelerator id and model name to CPUState, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 04/17] Extend HMP command info cpus to display accelerator id and model name, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 03/17] Extend QMP command query-cpus to return accelerator id and model name, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 01/17] Introduce stub routine cpu_desc_avail, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 05/17] Add optional parameters to QMP command query-cpu-definitions, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 06/17] target-s390x: Introduce S390 CPU facilities, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 09/17] target-s390x: Define S390 CPU model specific facility lists,
Michael Mueller <=
- [Qemu-devel] [PATCH v6 08/17] target-s390x: Introduce S390 CPU models, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 07/17] target-s390x: Generate facility defines per S390 CPU model, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 10/17] target-s390x: Add S390 CPU model alias definition routines, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 11/17] target-s390x: Add KVM VM attribute interface for S390 CPU models, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 14/17] target-s390x: Initialize S390 CPU model name in CPUState, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 15/17] target-s390x: Extend arch specific QMP command query-cpu-definitions, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 13/17] target-s390x: Prepare accelerator during S390 CPU object realization, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 12/17] target-s390x: Add S390 CPU class initialization routines, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 17/17] target-s390x: Enable S390 CPU model usage, Michael Mueller, 2015/04/27
- [Qemu-devel] [PATCH v6 16/17] target-s390x: Introduce S390 CPU facility test routine, Michael Mueller, 2015/04/27