From: Ram Pai <linuxram@us.ibm.com>
To: linux-kernel@vger.kernel.org, mst@redhat.com, bauerman@linux.ibm.com
Cc: andmike@us.ibm.com, sukadev@linux.vnet.ibm.com,
b.zolnierkie@samsung.com, benh@kernel.crashing.org,
jasowang@redhat.com, aik@linux.ibm.com,
mdroth@linux.vnet.ibm.com,
virtualization@lists.linux-foundation.org, paulus@ozlabs.org,
iommu@lists.linux-foundation.org, paul.burton@mips.com,
mpe@ellerman.id.au, robin.murphy@arm.com,
linuxppc-dev@lists.ozlabs.org, hch@lst.de,
david@gibson.dropbear.id.au
Subject: Re: [PATCH 0/2] virtio: Support encrypted memory on powerpc secure guests
Date: Fri, 11 Oct 2019 18:36:22 -0700 [thread overview]
Message-ID: <20191012013622.GC17661@oc0525413822.ibm.com> (raw)
In-Reply-To: <1570843519-8696-1-git-send-email-linuxram@us.ibm.com>
Hmm.. git-send-email forgot to CC Michael Tsirkin, and Thiago; the
original author, who is on vacation.
Adding them now.
RP
On Fri, Oct 11, 2019 at 06:25:17PM -0700, Ram Pai wrote:
> **We would like the patches to be merged through the virtio tree. Please
> review, and ack merging the DMA mapping change through that tree. Thanks!**
>
> The memory of powerpc secure guests can't be accessed by the hypervisor /
> virtio device except for a few memory regions designated as 'shared'.
>
> At the moment, Linux uses bounce-buffering to communicate with the
> hypervisor, with a bounce buffer marked as shared. This is how the DMA API
> is implemented on this platform.
>
> In particular, the most convenient way to use virtio on this platform is by
> making virtio use the DMA API: in fact, this is exactly what happens if the
> virtio device exposes the flag VIRTIO_F_ACCESS_PLATFORM. However, bugs in the
> hypervisor on the powerpc platform do not allow setting this flag, with some
> hypervisors already in the field that don't set this flag. At the moment they
> are forced to use emulated devices when guest is in secure mode; virtio is
> only useful when guest is not secure.
>
> Normally, both device and driver must support VIRTIO_F_ACCESS_PLATFORM:
> if one of them doesn't, the other mustn't assume it for communication
> to work.
>
> However, a guest-side work-around is possible to enable virtio
> for these hypervisors with guest in secure mode: it so happens that on
> powerpc secure platform the DMA address is actually a physical address -
> that of the bounce buffer. For these platforms we can make the virtio
> driver go through the DMA API even though the device itself ignores
> the DMA API.
>
> These patches implement this work around for virtio: we detect that
> - secure guest mode is enabled - so we know that since we don't share
> most memory and Hypervisor has not enabled VIRTIO_F_ACCESS_PLATFORM,
> regular virtio code won't work.
> - DMA API is giving us addresses that are actually also physical
> addresses.
> - Hypervisor has not enabled VIRTIO_F_ACCESS_PLATFORM.
>
> and if all conditions are true, we force all data through the bounce
> buffer.
>
> To put it another way, from hypervisor's point of view DMA API is
> not required: hypervisor would be happy to get access to all of guest
> memory. That's why it does not set VIRTIO_F_ACCESS_PLATFORM. However,
> guest decides that it does not trust the hypervisor and wants to force
> a bounce buffer for its own reasons.
>
>
> Thiago Jung Bauermann (2):
> dma-mapping: Add dma_addr_is_phys_addr()
> virtio_ring: Use DMA API if memory is encrypted
>
> arch/powerpc/include/asm/dma-mapping.h | 21 +++++++++++++++++++++
> arch/powerpc/platforms/pseries/Kconfig | 1 +
> drivers/virtio/virtio.c | 18 ++++++++++++++++++
> drivers/virtio/virtio_ring.c | 8 ++++++++
> include/linux/dma-mapping.h | 20 ++++++++++++++++++++
> include/linux/virtio_config.h | 14 ++++++++++++++
> kernel/dma/Kconfig | 3 +++
> 7 files changed, 85 insertions(+)
>
> --
> 1.8.3.1
--
Ram Pai
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
prev parent reply other threads:[~2019-10-12 1:46 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-12 1:25 [PATCH 0/2] virtio: Support encrypted memory on powerpc secure guests Ram Pai
2019-10-12 1:25 ` [PATCH 1/2] dma-mapping: Add dma_addr_is_phys_addr() Ram Pai
2019-10-12 1:25 ` [PATCH 2/2] virtio_ring: Use DMA API if memory is encrypted Ram Pai
2019-10-14 4:52 ` David Gibson
2019-10-15 7:35 ` Christoph Hellwig
2019-10-16 7:55 ` Ram Pai
2019-10-17 2:33 ` Jason Wang
2019-10-21 8:36 ` David Gibson
2019-10-14 4:51 ` [PATCH 1/2] dma-mapping: Add dma_addr_is_phys_addr() David Gibson
2019-10-14 10:29 ` Robin Murphy
2019-10-15 7:30 ` Ram Pai
2019-10-15 7:31 ` Christoph Hellwig
2019-10-12 1:36 ` Ram Pai [this message]
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=20191012013622.GC17661@oc0525413822.ibm.com \
--to=linuxram@us.ibm.com \
--cc=aik@linux.ibm.com \
--cc=andmike@us.ibm.com \
--cc=b.zolnierkie@samsung.com \
--cc=bauerman@linux.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=david@gibson.dropbear.id.au \
--cc=hch@lst.de \
--cc=iommu@lists.linux-foundation.org \
--cc=jasowang@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=mst@redhat.com \
--cc=paul.burton@mips.com \
--cc=paulus@ozlabs.org \
--cc=robin.murphy@arm.com \
--cc=sukadev@linux.vnet.ibm.com \
--cc=virtualization@lists.linux-foundation.org \
/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