> @@ -1227,9 +1229,16 @@ static int set_id_aa64pfr0_el1(struct kvm_vcpu *vcpu, > (csv2 && arm64_get_spectre_v2_state() != SPECTRE_UNAFFECTED)) > return -EINVAL; > > - /* We can only differ with CSV2, and anything else is an error */ > + /* Same thing for CSV3 */ > + csv3 = cpuid_feature_extract_unsigned_field(val, ID_AA64PFR0_CSV3_SHIFT); > + if (csv3 > 1 || > + (csv3 && arm64_get_meltdown_state() != SPECTRE_UNAFFECTED)) > + return -EINVAL; > + > + /* We can only differ with CSV[23], and anything else is an error */ > val ^= read_id_reg(vcpu, rd, false); > - val &= ~(0xFUL << ID_AA64PFR0_CSV2_SHIFT); > + val &= ~((0xFUL << ID_AA64PFR0_CSV2_SHIFT) || > + (0xFUL << ID_AA64PFR0_CSV3_SHIFT)); That boolean OR looks like a typo. David _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm