Messages in this thread | | | Date | Thu, 12 Oct 2023 10:20:45 -0300 | From | Jason Gunthorpe <> | Subject | Re: [PATCH v1 2/2] KVM: arm64: allow the VM to select DEVICE_* and NORMAL_NC for IO memory |
| |
On Thu, Oct 12, 2023 at 01:35:41PM +0100, Will Deacon wrote:
> > Failures containability is a property of the platform > > and is independent from the memory type used for MMIO > > device memory mappings (ie DEVICE_nGnRE memory type is > > even more problematic than NormalNC in terms of containability > > since eg aborts triggered on loads cannot be made synchronous, > > which make them harder to contain); this means that, > > regardless of the combined stage1+stage2 mappings a > > platform is safe if and only if device transactions cannot trigger > > uncontained failures; reworded, the default KVM device > > stage 2 memory attributes play no role in making device > > assignment safer for a given platform and therefore can > > be relaxed. > > > > For all these reasons, relax the KVM stage 2 device > > memory attributes from DEVICE_nGnRE to NormalNC. > > The reasoning above suggests to me that this should probably just be > Normal cacheable, as that is what actually allows the guest to control > the attributes. So what is the rationale behind stopping at Normal-NC?
I agree it would be very nice if the all the memory in the guest could just be cachable and the guest could select everything.
However, I think Lorenzo over stated the argument. The off-list discussion was focused on NormalNC for MMIO only. Nobody raised the idea that cachable was safe from uncontained errors for MMIO.
I'm looking through the conversations and I wouldn't jump to concluding that "cachable MMIO" is safe from uncontained failures.
Catalin has already raised a number of conerns in the other patch about making actual "designed to be cachable memory" into KVM cachable.
Regards, Jason
| |