
If we have certain features enabled, we have to migrate additional state (e.g. vector registers or runtime-instrumentation registers). Let the CPU model control that unless we have no "host" CPU model in the KVM case. This will later on be the case for compatibility machines, so migration from QEMU versions without the CPU model will still work. Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Message-Id: <20160905085244.99980-12-dahi@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
55 lines
1.9 KiB
C
55 lines
1.9 KiB
C
/*
|
|
* CPU models for s390x
|
|
*
|
|
* Copyright 2016 IBM Corp.
|
|
*
|
|
* Author(s): David Hildenbrand <dahi@linux.vnet.ibm.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or (at
|
|
* your option) any later version. See the COPYING file in the top-level
|
|
* directory.
|
|
*/
|
|
|
|
#ifndef TARGET_S390X_CPU_MODELS_H
|
|
#define TARGET_S390X_CPU_MODELS_H
|
|
|
|
#include "cpu_features.h"
|
|
#include "qom/cpu.h"
|
|
|
|
/* static CPU definition */
|
|
typedef struct S390CPUDef {
|
|
const char *name; /* name exposed to the user */
|
|
const char *desc; /* description exposed to the user */
|
|
uint8_t gen; /* hw generation identification */
|
|
uint16_t type; /* cpu type identification */
|
|
uint8_t ec_ga; /* EC GA version (on which also the BC is based) */
|
|
uint8_t mha_pow; /* Maximum Host Adress Power, mha = 2^pow-1 */
|
|
uint32_t hmfai; /* hypervisor-managed facilities */
|
|
/* base/min features, must never be changed between QEMU versions */
|
|
S390FeatBitmap base_feat;
|
|
/* used to init base_feat from generated data */
|
|
S390FeatInit base_init;
|
|
/* deafault features, QEMU version specific */
|
|
S390FeatBitmap default_feat;
|
|
/* used to init default_feat from generated data */
|
|
S390FeatInit default_init;
|
|
/* max allowed features, QEMU version specific */
|
|
S390FeatBitmap full_feat;
|
|
/* used to init full_feat from generated data */
|
|
S390FeatInit full_init;
|
|
} S390CPUDef;
|
|
|
|
/* CPU model based on a CPU definition */
|
|
typedef struct S390CPUModel {
|
|
const S390CPUDef *def;
|
|
S390FeatBitmap features;
|
|
/* values copied from the "host" model, can change during migration */
|
|
uint16_t lowest_ibc; /* lowest IBC that the hardware supports */
|
|
uint32_t cpu_id; /* CPU id */
|
|
uint8_t cpu_ver; /* CPU version, usually "ff" for kvm */
|
|
} S390CPUModel;
|
|
|
|
bool s390_has_feat(S390Feat feat);
|
|
|
|
#endif /* TARGET_S390X_CPU_MODELS_H */
|