From: Joerg Roedel <joerg.roedel-5C7GfCeVMHo@public.gmane.org>
To: Scott Wood <scottwood-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Cc: Ohad Ben-Cohen <ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org>,
Wood Scott-B07421
<B07421-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
Laurent Pinchart
<laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
Sethi Varun-B16395
<B16395-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
David Brown <davidb-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
Subject: Re: [PATCH 2/5] iommu/amd: Implement DOMAIN_ATTR_GEOMETRY attribute
Date: Fri, 27 Jan 2012 12:01:20 +0100 [thread overview]
Message-ID: <20120127110120.GL19255@amd.com> (raw)
In-Reply-To: <4F21B152.3010103-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
On Thu, Jan 26, 2012 at 02:02:26PM -0600, Scott Wood wrote:
> On 01/26/2012 01:44 PM, Joerg Roedel wrote:
> >>> Another reason why it must be in the generic struct is the intended
> >>> generic dma-ops layer on-top. This code can decide on this flag wheter a
> >>> address needs to be remapped at all.
> >>
> >> So the DMA API would just read this, not write it?
Yes, the dma-ops code needs this information to decide whether remapping
is required at all and where the remap window is.
> > The whole geometry thing is only implemented on the read side. There is
> > no implementation in domain_set_attr for it. So the geometry
> > information is read-only by default.
>
> We will need to be able to set this, for some vfio+kvm uses.
That's fine. Just implement a handler for it in the driver-specific
set_attr callback then.
> >> Still no reason why it couldn't be a separate attribute. Then if you
> >> get a failure trying to write it, it's more obvious why.
> >
> > This would mean iommu specific hacks, which are not necessary in this
> > case.
>
> Why would making it a separate generic attribute require iommu specific
> hacks?
Because the dma-ops code needs something like
iommu_domain_get_attr(domain, GART_ATTR_FORCE_APERTURE, data);
to check it. I call this a hack because the dma-ops code asks if it runs
on a specific hardware. This is not necessary here.
>
> >>> Setting this flag wrong does not create unintended identity mappings.
> >>
> >> Failing to set it means that DMA can go through that is not limited to
> >> explicitly created mappings. In some contexts (e.g. vfio) this is a
> >> security hole.
> >
> > No, when the hardware does not allow this, then software can't enforce
> > it.
>
> OK, it looked like an option that could be enabled or disabled --
> because I didn't realize you were considering geometry as read-only.
It is indeed read-only for most iommus and the dma-ops code only needs
to read this information. And it is necessary for the iommu-api user to
get this information when we want to support iommus that have a limited
remapping-window for each domain.
> So how would a vfio user set up the iommu so a kvm guest sees iova ==
> guest physical, for at least its main memory, if the default aperture
> doesn't cover it?
>
> We also will gain performance by being able to set custom geometry,
> because we will not be as hard on the IOMMU cache if we can use fewer,
> larger subwindows.
No problem if you also implement the write-side for your implementation.
> > Which hardware capabilities besides the geometry do you mean?
>
> Well, we have things like stash target (automatic cache prefetch after
> DMA) configuration, but in this case I was thinking about restrictions
> on what kind of aperture you can set, and what sort of mappings you can
> create with the result.
The stash target is a perfect fit for a PAMU specific domain attribute.
> On current Freescale PAMUs, the aperture must be a size-aligned
> power-of-two region, which is carved into up to 256 equal-size
> subwindows. A mapping can be any power of 2 up to the subwindow size,
> but its iova must be the subwindow start address.
>
> We cannot just say "oh look, an aperture from here to there, we can
> create all the mappings we want within that space", at least not with an
> aperture over 1 MiB (256 contiguous 4k subwindows).
Yes, we talked about that already. Probably we should talk about code to
make progress here. Do you have anything ready to post?
Joerg
--
AMD Operating System Research Center
Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach
General Managers: Alberto Bozzo
Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632
WARNING: multiple messages have this Message-ID (diff)
From: Joerg Roedel <joerg.roedel@amd.com>
To: Scott Wood <scottwood@freescale.com>
Cc: Joerg Roedel <joro@8bytes.org>,
Sethi Varun-B16395 <B16395@freescale.com>,
"iommu@lists.linux-foundation.org"
<iommu@lists.linux-foundation.org>,
Ohad Ben-Cohen <ohad@wizery.com>,
Tony Lindgren <tony@atomide.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Wood Scott-B07421 <B07421@freescale.com>,
David Brown <davidb@codeaurora.org>,
David Woodhouse <dwmw2@infradead.org>
Subject: Re: [PATCH 2/5] iommu/amd: Implement DOMAIN_ATTR_GEOMETRY attribute
Date: Fri, 27 Jan 2012 12:01:20 +0100 [thread overview]
Message-ID: <20120127110120.GL19255@amd.com> (raw)
In-Reply-To: <4F21B152.3010103@freescale.com>
On Thu, Jan 26, 2012 at 02:02:26PM -0600, Scott Wood wrote:
> On 01/26/2012 01:44 PM, Joerg Roedel wrote:
> >>> Another reason why it must be in the generic struct is the intended
> >>> generic dma-ops layer on-top. This code can decide on this flag wheter a
> >>> address needs to be remapped at all.
> >>
> >> So the DMA API would just read this, not write it?
Yes, the dma-ops code needs this information to decide whether remapping
is required at all and where the remap window is.
> > The whole geometry thing is only implemented on the read side. There is
> > no implementation in domain_set_attr for it. So the geometry
> > information is read-only by default.
>
> We will need to be able to set this, for some vfio+kvm uses.
That's fine. Just implement a handler for it in the driver-specific
set_attr callback then.
> >> Still no reason why it couldn't be a separate attribute. Then if you
> >> get a failure trying to write it, it's more obvious why.
> >
> > This would mean iommu specific hacks, which are not necessary in this
> > case.
>
> Why would making it a separate generic attribute require iommu specific
> hacks?
Because the dma-ops code needs something like
iommu_domain_get_attr(domain, GART_ATTR_FORCE_APERTURE, data);
to check it. I call this a hack because the dma-ops code asks if it runs
on a specific hardware. This is not necessary here.
>
> >>> Setting this flag wrong does not create unintended identity mappings.
> >>
> >> Failing to set it means that DMA can go through that is not limited to
> >> explicitly created mappings. In some contexts (e.g. vfio) this is a
> >> security hole.
> >
> > No, when the hardware does not allow this, then software can't enforce
> > it.
>
> OK, it looked like an option that could be enabled or disabled --
> because I didn't realize you were considering geometry as read-only.
It is indeed read-only for most iommus and the dma-ops code only needs
to read this information. And it is necessary for the iommu-api user to
get this information when we want to support iommus that have a limited
remapping-window for each domain.
> So how would a vfio user set up the iommu so a kvm guest sees iova ==
> guest physical, for at least its main memory, if the default aperture
> doesn't cover it?
>
> We also will gain performance by being able to set custom geometry,
> because we will not be as hard on the IOMMU cache if we can use fewer,
> larger subwindows.
No problem if you also implement the write-side for your implementation.
> > Which hardware capabilities besides the geometry do you mean?
>
> Well, we have things like stash target (automatic cache prefetch after
> DMA) configuration, but in this case I was thinking about restrictions
> on what kind of aperture you can set, and what sort of mappings you can
> create with the result.
The stash target is a perfect fit for a PAMU specific domain attribute.
> On current Freescale PAMUs, the aperture must be a size-aligned
> power-of-two region, which is carved into up to 256 equal-size
> subwindows. A mapping can be any power of 2 up to the subwindow size,
> but its iova must be the subwindow start address.
>
> We cannot just say "oh look, an aperture from here to there, we can
> create all the mappings we want within that space", at least not with an
> aperture over 1 MiB (256 contiguous 4k subwindows).
Yes, we talked about that already. Probably we should talk about code to
make progress here. Do you have anything ready to post?
Joerg
--
AMD Operating System Research Center
Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach
General Managers: Alberto Bozzo
Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632
next prev parent reply other threads:[~2012-01-27 11:01 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-19 14:30 [PATCH 0/5] IOMMU: Make IOMMU-API ready for GART-like hardware Joerg Roedel
2012-01-19 14:30 ` [PATCH 1/5] iommu: Add domain-attribute handlers Joerg Roedel
2012-01-19 14:30 ` [PATCH 2/5] iommu/amd: Implement DOMAIN_ATTR_GEOMETRY attribute Joerg Roedel
2012-01-19 15:46 ` Laurent Pinchart
2012-01-19 16:07 ` Joerg Roedel
2012-01-19 16:27 ` Laurent Pinchart
[not found] ` <201201191727.10176.laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2012-01-20 5:44 ` Hiroshi Doyu
2012-01-20 5:44 ` Hiroshi Doyu
2012-01-20 16:01 ` Joerg Roedel
2012-01-20 16:01 ` Joerg Roedel
[not found] ` <20120120160128.GF2205-5C7GfCeVMHo@public.gmane.org>
2012-02-01 9:37 ` Sethi Varun-B16395
2012-02-01 9:37 ` Sethi Varun-B16395
2012-01-26 18:26 ` Scott Wood
2012-01-26 18:26 ` Scott Wood
2012-01-19 17:16 ` Sethi Varun-B16395
[not found] ` <C5ECD7A89D1DC44195F34B25E172658D038749-RL0Hj/+nBVCMXPU/2EZmt64g8xLGJsHaLnY5E4hWTkheoWH0uzbU5w@public.gmane.org>
2012-01-20 16:03 ` Joerg Roedel
2012-01-20 16:03 ` Joerg Roedel
2012-01-26 18:25 ` Scott Wood
2012-01-26 18:31 ` Joerg Roedel
2012-01-26 18:42 ` Scott Wood
[not found] ` <4F219E82.106-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-01-26 18:51 ` Joerg Roedel
2012-01-26 18:51 ` Joerg Roedel
2012-01-26 19:00 ` Scott Wood
[not found] ` <4F21A2D5.6000204-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-01-26 19:44 ` Joerg Roedel
2012-01-26 19:44 ` Joerg Roedel
2012-01-26 20:02 ` Scott Wood
[not found] ` <4F21B152.3010103-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-01-27 11:01 ` Joerg Roedel [this message]
2012-01-27 11:01 ` Joerg Roedel
2012-01-27 21:22 ` Scott Wood
[not found] ` <4F2315A3.80909-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-01-30 14:24 ` Joerg Roedel
2012-01-30 14:24 ` Joerg Roedel
2012-01-30 20:21 ` Scott Wood
[not found] ` <20120126185101.GJ19255-5C7GfCeVMHo@public.gmane.org>
2012-01-30 6:27 ` Sethi Varun-B16395
2012-01-30 6:27 ` Sethi Varun-B16395
[not found] ` <C5ECD7A89D1DC44195F34B25E172658D041E81-RL0Hj/+nBVDAtPZc1oz0FK4g8xLGJsHaLnY5E4hWTkheoWH0uzbU5w@public.gmane.org>
2012-01-30 14:30 ` Joerg Roedel
2012-01-30 14:30 ` Joerg Roedel
[not found] ` <1326983405-319-3-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-01-19 17:16 ` Sethi Varun-B16395
2012-01-19 14:30 ` [PATCH 3/5] iommu/vt-d: " Joerg Roedel
2012-01-19 14:30 ` [PATCH 4/5] iommu/omap: " Joerg Roedel
2012-01-19 14:30 ` [PATCH 5/5] iommu/msm: " Joerg Roedel
[not found] ` <1326983405-319-1-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-01-20 6:14 ` [PATCH 0/5] IOMMU: Make IOMMU-API ready for GART-like hardware Hiroshi Doyu
2012-01-20 6:14 ` Hiroshi Doyu
[not found] ` <20120120.081403.2268989617582455160.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-20 16:05 ` joerg.roedel-5C7GfCeVMHo
2012-01-20 16:05 ` joerg.roedel
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=20120127110120.GL19255@amd.com \
--to=joerg.roedel-5c7gfcevmho@public.gmane.org \
--cc=B07421-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=B16395-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=davidb-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ohad-Ix1uc/W3ht7QT0dZR+AlfA@public.gmane.org \
--cc=scottwood-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.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 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.