s390x/cpumodel: provide compat handling for new cpu features
Provide a mechanism to disable features in compatibility machines. Signed-off-by: Jason J. Herne <jjherne@linux.vnet.ibm.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
parent
ec3aadb13e
commit
c9ad8a7a53
|
@ -77,6 +77,32 @@ static S390CPUDef s390_cpu_defs[] = {
|
||||||
CPUDEF_INIT(0x2965, 13, 2, 47, 0x08000000U, "z13s", "IBM z13s GA1"),
|
CPUDEF_INIT(0x2965, 13, 2, 47, 0x08000000U, "z13s", "IBM z13s GA1"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void s390_cpudef_featoff(uint8_t gen, uint8_t ec_ga, S390Feat feat)
|
||||||
|
{
|
||||||
|
const S390CPUDef *def;
|
||||||
|
|
||||||
|
def = s390_find_cpu_def(0, gen, ec_ga, NULL);
|
||||||
|
clear_bit(feat, (unsigned long *)&def->default_feat);
|
||||||
|
}
|
||||||
|
|
||||||
|
void s390_cpudef_featoff_greater(uint8_t gen, uint8_t ec_ga, S390Feat feat)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(s390_cpu_defs); i++) {
|
||||||
|
const S390CPUDef *def = &s390_cpu_defs[i];
|
||||||
|
|
||||||
|
if (def->gen < gen) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (def->gen == gen && def->ec_ga < ec_ga) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
clear_bit(feat, (unsigned long *)&def->default_feat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t s390_get_hmfai(void)
|
uint32_t s390_get_hmfai(void)
|
||||||
{
|
{
|
||||||
static S390CPU *cpu;
|
static S390CPU *cpu;
|
||||||
|
|
|
@ -72,6 +72,8 @@ typedef struct S390CPUModel {
|
||||||
#define ibc_gen(x) (x == 0 ? 0 : ((x >> 4) + S390_GEN_Z10))
|
#define ibc_gen(x) (x == 0 ? 0 : ((x >> 4) + S390_GEN_Z10))
|
||||||
#define ibc_ec_ga(x) (x & 0xf)
|
#define ibc_ec_ga(x) (x & 0xf)
|
||||||
|
|
||||||
|
void s390_cpudef_featoff(uint8_t gen, uint8_t ec_ga, S390Feat feat);
|
||||||
|
void s390_cpudef_featoff_greater(uint8_t gen, uint8_t ec_ga, S390Feat feat);
|
||||||
uint32_t s390_get_hmfai(void);
|
uint32_t s390_get_hmfai(void);
|
||||||
uint8_t s390_get_mha_pow(void);
|
uint8_t s390_get_mha_pow(void);
|
||||||
uint32_t s390_get_ibc_val(void);
|
uint32_t s390_get_ibc_val(void);
|
||||||
|
|
Loading…
Reference in New Issue