On Thu, 01 Dec 2022 10:49:11 +0000, Akihiko Odaki <akihiko.odaki@xxxxxxxxxx> wrote: Thanks for looking into this. > M2 MacBook Air has mismatched CCSIDR associativity bits, which makes the > bits a KVM vCPU sees inconsistent when migrating. Can you describe the actual discrepancy? Is that an issue between the two core types? In which case, nothing says that these two cluster should have the same cache topology. > It also makes QEMU fail restoring the vCPU registers because QEMU saves > and restores all of the registers including CCSIDRs, and if the vCPU > migrated among physical CPUs between saving and restoring, it tries to > restore CCSIDR values that mismatch with the current physical CPU, which > causes EFAULT. Well, QEMU will have plenty of other problems, starting with MIDRs, which always reflect the physical one. In general, KVM isn't well geared for VMs spanning multiple CPU types. It is improving, but there is a long way to go. > Trap CCSIDRs if there are CCSIDR value msimatches, and override the > associativity bits when handling the trap. TBH, I'd rather we stop reporting this stuff altogether. There is nothing a correctly written arm64 guest should do with any of this (this is only useful for set/way CMOs, which non-secure SW should never issue). It would be a lot better to expose a virtual topology (one set, one way, one level). It would also save us from the CCSIDRX silliness. The only complexity would be to still accept different topologies from userspace so that we can restore a VM saved before this virtual topology. Do you mind having a look at this? Thanks, M. -- Without deviation from the norm, progress is not possible. _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm