From: Halil Pasic <pasic@linux.ibm.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: pair@us.ibm.com, "Cornelia Huck" <cohuck@redhat.com>,
brijesh.singh@amd.com, frankja@linux.ibm.com,
kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
"David Hildenbrand" <david@redhat.com>,
qemu-devel@nongnu.org, dgilbert@redhat.com,
"Christian Borntraeger" <borntraeger@de.ibm.com>,
qemu-s390x@nongnu.org, "Boris Fiuczynski" <fiuczy@linux.ibm.com>,
qemu-ppc@nongnu.org, "Daniel P. Berrangé" <berrange@redhat.com>,
"Bjoern Walk" <bwalk@linux.ibm.com>,
"Thomas Huth" <thuth@redhat.com>,
pbonzini@redhat.com, "Richard Henderson" <rth@twiddle.net>,
mdroth@linux.vnet.ibm.com, ehabkost@redhat.com
Subject: Re: [for-5.2 v4 09/10] host trust limitation: Alter virtio default properties for protected guests
Date: Mon, 7 Sep 2020 17:10:46 +0200 [thread overview]
Message-ID: <20200907171046.18211111.pasic@linux.ibm.com> (raw)
In-Reply-To: <20200724025744.69644-10-david@gibson.dropbear.id.au>
On Fri, 24 Jul 2020 12:57:43 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:
> The default behaviour for virtio devices is not to use the platforms normal
> DMA paths, but instead to use the fact that it's running in a hypervisor
> to directly access guest memory. That doesn't work if the guest's memory
> is protected from hypervisor access, such as with AMD's SEV or POWER's PEF.
>
> So, if a host trust limitation mechanism is enabled, then apply the
> iommu_platform=on option so it will go through normal DMA mechanisms.
> Those will presumably have some way of marking memory as shared with the
> hypervisor or hardware so that DMA will work.
Sorry for being this late. I had to do some high priority debugging,
which made me drop everything else, and after that I had some vacation.
I have some questions about the bigger picture. The promised benefit of
this patch for users that invoke QEMU manually is relatively clear: it
alters the default value of some virtio properties, so that using the
defaults does not result in a bugous configuration.
This comes at a price. I used to think of device property default values
like this. If I don't specify it and I use the default machine, I will
effectively get the the default value of of the property (as reported by
qemu -device dev-name,?). If I use a compat machine, then I will get the
compatibility default value: i.e. the what is reported as the default
value, if I invoke the binary whose default machine is my compat machine.
With this patch, that reasoning is not valid any more. Did we do
something like this before, or is this the first time we introduce this
complication?
In any case, I suppose, this change needs a documentation update, which I
could not find in the series.
How are things supposed to pan out when QEMU is used with management
software?
I was told that libvirt's policy is to be explicit and not let QEMU use
defaults. But this policy does not seem to apply to iommu_platform -- at
least not on s390x. Why is this? Is this likely to change in the future?
Furthermore, the libvirt documentation is IMHO not that great when it
comes to iommu_platform. All I've found is
"""
Virtio-related options
QEMU's virtio devices have some attributes related to the virtio transport under the driver element: The iommu attribute enables the use of emulated IOMMU by the device.
"""
which:
* Is not explicit about the default, but suggests that default is off
(because it needs to be enabled), which would reflect the current state
of affairs (without this patch).
* Makes me wonder, to what extent does the libvirt concept correspond
to the virtio semantics of _F_ACCESS_PLATFORM. I.e. we don't really
do any IOMMU emulation with virtio-ccw.
I guess host trust limitation is something that is to be expressed in
libvirt, or? Do we have a design for that?
I was also reflecting on how does this patch compare to on/off/auto, but
this email is already too long, so decided keep my thoughts for myself
-- for now.
Regards,
Halil
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/core/machine.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index b599b0ba65..2a723bf07b 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -28,6 +28,8 @@
> #include "hw/mem/nvdimm.h"
> #include "migration/vmstate.h"
> #include "exec/host-trust-limitation.h"
> +#include "hw/virtio/virtio.h"
> +#include "hw/virtio/virtio-pci.h"
>
> GlobalProperty hw_compat_5_0[] = {
> { "virtio-balloon-device", "page-poison", "false" },
> @@ -1161,6 +1163,15 @@ void machine_run_board_init(MachineState *machine)
> * areas.
> */
> machine_set_mem_merge(OBJECT(machine), false, &error_abort);
> +
> + /*
> + * Virtio devices can't count on directly accessing guest
> + * memory, so they need iommu_platform=on to use normal DMA
> + * mechanisms. That requires disabling legacy virtio support
> + * for virtio pci devices
> + */
> + object_register_sugar_prop(TYPE_VIRTIO_PCI, "disable-legacy", "on");
> + object_register_sugar_prop(TYPE_VIRTIO_DEVICE, "iommu_platform", "on");
> }
>
> machine_class->init(machine);
next prev parent reply other threads:[~2020-09-07 15:12 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-24 2:57 [for-5.2 v4 00/10] Generalize memory encryption models David Gibson
2020-07-24 2:57 ` [for-5.2 v4 01/10] host trust limitation: Introduce new host trust limitation interface David Gibson
2020-07-24 2:57 ` [for-5.2 v4 02/10] host trust limitation: Handle memory encryption via interface David Gibson
2020-07-24 2:57 ` [for-5.2 v4 03/10] host trust limitation: Move side effect out of machine_set_memory_encryption() David Gibson
2020-07-24 2:57 ` [for-5.2 v4 04/10] host trust limitation: Rework the "memory-encryption" property David Gibson
2020-07-24 2:57 ` [for-5.2 v4 05/10] host trust limitation: Decouple kvm_memcrypt_*() helpers from KVM David Gibson
2020-07-24 2:57 ` [for-5.2 v4 06/10] host trust limitation: Add Error ** to HostTrustLimitation::kvm_init David Gibson
2020-07-24 2:57 ` [for-5.2 v4 07/10] spapr: Add PEF based host trust limitation David Gibson
2020-07-24 2:57 ` [for-5.2 v4 08/10] spapr: PEF: block migration David Gibson
2020-07-27 15:01 ` Dr. David Alan Gilbert
2020-07-24 2:57 ` [for-5.2 v4 09/10] host trust limitation: Alter virtio default properties for protected guests David Gibson
2020-07-27 15:05 ` Dr. David Alan Gilbert
2020-08-13 7:43 ` Greg Kurz
2020-08-13 8:19 ` Greg Kurz
2020-09-07 15:10 ` Halil Pasic [this message]
2020-09-11 2:04 ` David Gibson
2020-09-11 13:49 ` Halil Pasic
2020-07-24 2:57 ` [for-5.2 v4 10/10] s390: Recognize host-trust-limitation option David Gibson
2020-07-27 15:50 ` Cornelia Huck
2020-08-03 7:40 ` Janosch Frank
2020-08-06 6:14 ` David Gibson
2020-08-06 7:18 ` David Hildenbrand
2020-08-03 7:49 ` Janosch Frank
2020-08-03 7:54 ` David Gibson
2020-08-03 8:07 ` Janosch Frank
2020-08-03 8:14 ` David Gibson
2020-08-03 8:33 ` Cornelia Huck
2020-09-07 15:22 ` Halil Pasic
2020-09-10 11:36 ` Cornelia Huck
2020-09-10 18:29 ` Halil Pasic
2020-09-11 0:07 ` David Gibson
2020-09-11 6:25 ` Greg Kurz
2020-09-11 12:45 ` Halil Pasic
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200907171046.18211111.pasic@linux.ibm.com \
--to=pasic@linux.ibm.com \
--cc=berrange@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=brijesh.singh@amd.com \
--cc=bwalk@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=ehabkost@redhat.com \
--cc=fiuczy@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mst@redhat.com \
--cc=pair@us.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=rth@twiddle.net \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).