Lines Matching refs:mce
72 #include <asm/mce.h>
5262 static bool is_ucna(struct kvm_x86_mce *mce)
5264 return !mce->mcg_status &&
5265 !(mce->status & (MCI_STATUS_PCC | MCI_STATUS_S | MCI_STATUS_AR)) &&
5266 (mce->status & MCI_STATUS_VAL) &&
5267 (mce->status & MCI_STATUS_UC);
5270 static int kvm_vcpu_x86_set_ucna(struct kvm_vcpu *vcpu, struct kvm_x86_mce *mce, u64* banks)
5274 banks[1] = mce->status;
5275 banks[2] = mce->addr;
5276 banks[3] = mce->misc;
5277 vcpu->arch.mcg_status = mce->mcg_status;
5280 !(vcpu->arch.mci_ctl2_banks[mce->bank] & MCI_CTL2_CMCI_EN))
5290 struct kvm_x86_mce *mce)
5296 if (mce->bank >= bank_num || !(mce->status & MCI_STATUS_VAL))
5299 banks += array_index_nospec(4 * mce->bank, 4 * bank_num);
5301 if (is_ucna(mce))
5302 return kvm_vcpu_x86_set_ucna(vcpu, mce, banks);
5308 if ((mce->status & MCI_STATUS_UC) && (mcg_cap & MCG_CTL_P) &&
5315 if ((mce->status & MCI_STATUS_UC) && banks[0] != ~(u64)0)
5317 if (mce->status & MCI_STATUS_UC) {
5324 mce->status |= MCI_STATUS_OVER;
5325 banks[2] = mce->addr;
5326 banks[3] = mce->misc;
5327 vcpu->arch.mcg_status = mce->mcg_status;
5328 banks[1] = mce->status;
5333 mce->status |= MCI_STATUS_OVER;
5334 banks[2] = mce->addr;
5335 banks[3] = mce->misc;
5336 banks[1] = mce->status;
6026 struct kvm_x86_mce mce;
6029 if (copy_from_user(&mce, argp, sizeof(mce)))
6031 r = kvm_vcpu_ioctl_x86_set_mce(vcpu, &mce);