From: "Michael S. Tsirkin" <mst@redhat.com>
To: Robin Murphy <robin.murphy@arm.com>
Cc: will.deacon@arm.com, linux-arm-kernel@lists.infradead.org,
luto@kernel.org, virtualization@lists.linux-foundation.org
Subject: Re: [PATCH v2 2/2] vring: Force use of DMA API for ARM-based systems
Date: Wed, 11 Jan 2017 01:33:31 +0200 [thread overview]
Message-ID: <20170111013046-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <4833e705fb6841fbfdbee3b1a21a7bc917292410.1484070340.git.robin.murphy@arm.com>
On Tue, Jan 10, 2017 at 05:51:18PM +0000, Robin Murphy wrote:
> From: Will Deacon <will.deacon@arm.com>
>
> Booting Linux on an ARM fastmodel containing an SMMU emulation results
> in an unexpected I/O page fault from the legacy virtio-blk PCI device:
>
> [ 1.211721] arm-smmu-v3 2b400000.smmu: event 0x10 received:
> [ 1.211800] arm-smmu-v3 2b400000.smmu: 0x00000000fffff010
> [ 1.211880] arm-smmu-v3 2b400000.smmu: 0x0000020800000000
> [ 1.211959] arm-smmu-v3 2b400000.smmu: 0x00000008fa081002
> [ 1.212075] arm-smmu-v3 2b400000.smmu: 0x0000000000000000
> [ 1.212155] arm-smmu-v3 2b400000.smmu: event 0x10 received:
> [ 1.212234] arm-smmu-v3 2b400000.smmu: 0x00000000fffff010
> [ 1.212314] arm-smmu-v3 2b400000.smmu: 0x0000020800000000
> [ 1.212394] arm-smmu-v3 2b400000.smmu: 0x00000008fa081000
> [ 1.212471] arm-smmu-v3 2b400000.smmu: 0x0000000000000000
>
> <system hangs failing to read partition table>
>
> This is because the virtio-blk is behind an SMMU, so we have consequently
> swizzled its DMA ops and configured the SMMU to translate accesses. This
> then requires the vring code to use the DMA API to establish translations,
> otherwise all transactions will result in fatal faults and termination.
>
> Given that ARM-based systems only see an SMMU if one is really present
> (the topology is all described by firmware tables such as device-tree or
> IORT), then we can safely use the DMA API for all virtio devices.
>
> Cc: Andy Lutomirski <luto@kernel.org>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>
I'd like to better understand then need for this one.
Can't the device in question just set VIRTIO_F_IOMMU_PLATFORM ?
I'd rather we avoided need for more hacks and just
have everyone switch to that.
> ---
> drivers/virtio/virtio_ring.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index 409aeaa49246..447245f2c813 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -159,6 +159,10 @@ static bool vring_use_dma_api(struct virtio_device *vdev)
> if (xen_domain())
> return true;
>
> + /* On ARM-based machines, the DMA ops will do the right thing */
> + if (IS_ENABLED(CONFIG_ARM) || IS_ENABLED(CONFIG_ARM64))
> + return true;
> +
> return false;
> }
>
> --
> 2.10.2.dirty
WARNING: multiple messages have this Message-ID (diff)
From: mst@redhat.com (Michael S. Tsirkin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 2/2] vring: Force use of DMA API for ARM-based systems
Date: Wed, 11 Jan 2017 01:33:31 +0200 [thread overview]
Message-ID: <20170111013046-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <4833e705fb6841fbfdbee3b1a21a7bc917292410.1484070340.git.robin.murphy@arm.com>
On Tue, Jan 10, 2017 at 05:51:18PM +0000, Robin Murphy wrote:
> From: Will Deacon <will.deacon@arm.com>
>
> Booting Linux on an ARM fastmodel containing an SMMU emulation results
> in an unexpected I/O page fault from the legacy virtio-blk PCI device:
>
> [ 1.211721] arm-smmu-v3 2b400000.smmu: event 0x10 received:
> [ 1.211800] arm-smmu-v3 2b400000.smmu: 0x00000000fffff010
> [ 1.211880] arm-smmu-v3 2b400000.smmu: 0x0000020800000000
> [ 1.211959] arm-smmu-v3 2b400000.smmu: 0x00000008fa081002
> [ 1.212075] arm-smmu-v3 2b400000.smmu: 0x0000000000000000
> [ 1.212155] arm-smmu-v3 2b400000.smmu: event 0x10 received:
> [ 1.212234] arm-smmu-v3 2b400000.smmu: 0x00000000fffff010
> [ 1.212314] arm-smmu-v3 2b400000.smmu: 0x0000020800000000
> [ 1.212394] arm-smmu-v3 2b400000.smmu: 0x00000008fa081000
> [ 1.212471] arm-smmu-v3 2b400000.smmu: 0x0000000000000000
>
> <system hangs failing to read partition table>
>
> This is because the virtio-blk is behind an SMMU, so we have consequently
> swizzled its DMA ops and configured the SMMU to translate accesses. This
> then requires the vring code to use the DMA API to establish translations,
> otherwise all transactions will result in fatal faults and termination.
>
> Given that ARM-based systems only see an SMMU if one is really present
> (the topology is all described by firmware tables such as device-tree or
> IORT), then we can safely use the DMA API for all virtio devices.
>
> Cc: Andy Lutomirski <luto@kernel.org>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>
I'd like to better understand then need for this one.
Can't the device in question just set VIRTIO_F_IOMMU_PLATFORM ?
I'd rather we avoided need for more hacks and just
have everyone switch to that.
> ---
> drivers/virtio/virtio_ring.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index 409aeaa49246..447245f2c813 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -159,6 +159,10 @@ static bool vring_use_dma_api(struct virtio_device *vdev)
> if (xen_domain())
> return true;
>
> + /* On ARM-based machines, the DMA ops will do the right thing */
> + if (IS_ENABLED(CONFIG_ARM) || IS_ENABLED(CONFIG_ARM64))
> + return true;
> +
> return false;
> }
>
> --
> 2.10.2.dirty
next prev parent reply other threads:[~2017-01-10 23:33 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-10 17:51 [PATCH v2 1/2] virtio_mmio: Set DMA masks appropriately Robin Murphy
2017-01-10 17:51 ` Robin Murphy
2017-01-10 17:51 ` [PATCH v2 2/2] vring: Force use of DMA API for ARM-based systems Robin Murphy
2017-01-10 17:51 ` Robin Murphy
2017-01-10 23:33 ` Michael S. Tsirkin [this message]
2017-01-10 23:33 ` Michael S. Tsirkin
2017-01-11 10:01 ` Will Deacon
2017-01-11 10:01 ` Will Deacon
2017-01-11 18:12 ` Andy Lutomirski
2017-01-11 18:12 ` Andy Lutomirski
2017-01-13 9:40 ` Will Deacon
2017-01-13 9:40 ` Will Deacon
2017-01-13 16:59 ` Michael S. Tsirkin
2017-01-13 16:59 ` Michael S. Tsirkin
2017-01-12 22:12 ` Michael S. Tsirkin
2017-01-12 22:12 ` Michael S. Tsirkin
2017-01-13 9:25 ` Will Deacon
2017-01-13 9:25 ` Will Deacon
2017-01-13 16:46 ` Michael S. Tsirkin
2017-01-13 16:46 ` Michael S. Tsirkin
2017-01-13 17:21 ` Will Deacon
2017-01-13 17:21 ` Will Deacon
2017-01-13 18:23 ` Michael S. Tsirkin
2017-01-13 18:23 ` Michael S. Tsirkin
2017-01-16 10:40 ` Will Deacon
2017-01-16 10:40 ` Will Deacon
2017-01-16 14:18 ` Michael S. Tsirkin
2017-01-16 14:18 ` Michael S. Tsirkin
2017-01-16 14:21 ` Will Deacon
2017-01-16 14:21 ` Will Deacon
2017-01-16 14:27 ` Michael S. Tsirkin
2017-01-16 14:27 ` Michael S. Tsirkin
2017-01-16 14:34 ` Will Deacon
2017-01-16 14:34 ` Will Deacon
2017-01-19 21:51 ` Michael S. Tsirkin
2017-01-19 21:51 ` Michael S. Tsirkin
2017-01-20 10:33 ` Will Deacon
2017-01-20 10:33 ` Will Deacon
2017-01-24 16:04 ` Marc Zyngier
2017-01-24 16:04 ` Marc Zyngier
2017-01-24 16:06 ` Michael S. Tsirkin
2017-01-24 16:06 ` Michael S. Tsirkin
2017-01-24 16:10 ` Marc Zyngier
2017-01-24 16:10 ` Marc Zyngier
2017-01-10 23:30 ` [PATCH v2 1/2] virtio_mmio: Set DMA masks appropriately Michael S. Tsirkin
2017-01-10 23:30 ` Michael S. Tsirkin
2017-01-11 10:31 ` Jean-Philippe Brucker
2017-01-11 10:31 ` Jean-Philippe Brucker
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=20170111013046-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=luto@kernel.org \
--cc=robin.murphy@arm.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=will.deacon@arm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.