On Wed, Jun 17, 2020 at 12:43:57PM +0200, Pierre Morel wrote:
An architecture protecting the guest memory against unauthorized host
access may want to enforce VIRTIO I/O device protection through the
use of VIRTIO_F_IOMMU_PLATFORM.
Let's give a chance to the architecture to accept or not devices
without VIRTIO_F_IOMMU_PLATFORM.
I agree it's a bit misleading. Protection is enforced by memory
encryption, you can't trust the hypervisor to report the bit correctly
so using that as a securoty measure would be pointless.
The real gain here is that broken configs are easier to
debug.
Here's an attempt at a better description:
On some architectures, guest knows that VIRTIO_F_IOMMU_PLATFORM is
required for virtio to function: e.g. this is the case on s390 protected
virt guests, since otherwise guest passes encrypted guest memory to devices,
which the device can't read. Without VIRTIO_F_IOMMU_PLATFORM the
result is that affected memory (or even a whole page containing
it is corrupted). Detect and fail probe instead - that is easier
to debug.
however, now that we have described what it is (hypervisor
misconfiguration) I ask a question: can we be sure this will never
ever work? E.g. what if some future hypervisor gains ability to
access the protected guest memory in some abstractly secure manner?
We are blocking this here, and it's hard to predict the future,
and a broken hypervisor can always find ways to crash the guest ...
IMHO it would be safer to just print a warning.
What do you think?