On Fri, Dec 18, 2020 at 10:23:04AM +0100, Klaus Jensen wrote: > From: Klaus Jensen <[email protected]> > > This adds CMB logic from v1.4. To my knowledge, this is the last piece > missing for v1.4 compliance, so bump the controller spec version. Please > retort if I am jumping the gun. > > Since the slow-moving (sorry, super poor attempt of humor) Linux kernel > nvme driver does not support v1.4 CMB, this series adds a 'x-legacy-cmb' > nvme device parameter that reverts the CMB configuration behavior to > v1.3, thus allowing the kernel to continue using the CMB for submission > queues. > > The question here is if we should rather skip that parameter, only > support v1.4 behavior and point the finger at the kernel nvme gang. I'm > leaning towards this. > > Keith, what is your opinion on this?
The driver may know if it's running in a VM, but it doesn't necessarily know if its device is a passthrough vs. emulated. In the passthrough case, we can't use the CMB at all for <= 1.3 versions since the GPA vs HPA are not being considered. IMO, the kernel driver does need to be updated to suppress CMB usage for pre-1.4, and it should also add the CMBMSC capabilities for 1.4+. Going forward with the qemu controller, I would remove legacy support for CMB entirely since every host should be able to interop with it without CMB support.
