Messages in this thread | | | Subject | Re: [PATCH v9 09/17] x86/split_lock: Handle #AC exception for split lock | From | Xiaoyao Li <> | Date | Wed, 16 Oct 2019 21:13:04 +0800 |
| |
On 10/16/2019 7:26 PM, Paolo Bonzini wrote: > On 16/10/19 13:23, Xiaoyao Li wrote: >> KVM always traps #AC, and only advertises split-lock detection to guest >> when the global variable split_lock_detection_enabled in host is true. >> >> - If guest enables #AC (CPL3 alignment check or split-lock detection >> enabled), injecting #AC back into guest since it's supposed capable of >> handling it. >> - If guest doesn't enable #AC, KVM reports #AC to userspace (like other >> unexpected exceptions), and we can print a hint in kernel, or let >> userspace (e.g., QEMU) tell the user guest is killed because there is a >> split-lock in guest. >> >> In this way, malicious guests always get killed by userspace and old >> sane guests cannot survive as well if it causes split-lock. If we do >> want old sane guests work we have to disable the split-lock detection >> (through booting parameter or debugfs) in the host just the same as we >> want to run an old and split-lock generating userspace binary. > > Old guests are prevalent enough that enabling split-lock detection by > default would be a big usability issue. And even ignoring that, you > would get the issue you describe below:
Right, whether enabling split-lock detection is made by the administrator. The administrator is supposed to know the consequence of enabling it. Enabling it means don't want any split-lock happens in userspace, of course VMM softwares are under control.
>> But there is an issue that we advertise split-lock detection to guest >> based on the value of split_lock_detection_enabled to be true in host, >> which can be turned into false dynamically when split-lock happens in >> host kernel. > > ... which means that supposedly safe guests become unsafe, and that is bad. > >> This causes guest's capability changes at run time and I >> don't if there is a better way to inform guest? Maybe we need a pv >> interface? > > Even a PV interface would not change the basic fact that a supposedly > safe configuration becomes unsafe.
I don't catch you about the unsafe?
If host disables split-lock detection dynamically, then the MST_TEST_CTL.split_lock is clear in the hardware and we can use the PV interface to notify the guest so that guest knows it loses the capability of split-lock detection. In this case, I think safety is meaningless for both host and guest.
> Paolo >
| |