From: Scott Wood <scottwood@freescale.com>
To: Joerg Roedel <joerg.roedel@amd.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: Mon, 30 Jan 2012 14:21:53 -0600 [thread overview]
Message-ID: <4F26FBE1.5050006@freescale.com> (raw)
In-Reply-To: <20120130142424.GR19255@amd.com>
On 01/30/2012 08:24 AM, Joerg Roedel wrote:
> On Fri, Jan 27, 2012 at 03:22:43PM -0600, Scott Wood wrote:
>
>> OK, so there's a geometry that is read-only, and potentially a
>> driver-specific geometry that is read/write. The default config for
>> PAMU would likely be a 1 MiB aperture in which the dma api can do
>> arbitrary 4k mappings -- this fits within the get generic geometry
>> operation.
>
> Better: There is a read-only geometry for _all_ IOMMUs. Some IOMMUs may
> also allow to write the geometry, like PAMU.
But we do not want to use this struct for writing. We do not want
force_aperture to be settable (we could error if it's set incorrectly,
but that's unpleasant -- and what happens if another attribute is added
in the future? There would otherwise be no reason to do a get-geometry
first). We do want to be able to set subwindows and would prefer (but
don't insist) that it be one atomic operation to set
start/end/subwindows. For PAMU you really shouldn't be setting
start/end if you aren't going to set the subwindow count. I don't see
what real benefit we get by reusing the generic geometry struct here --
we're not giving up any opportunities for common code.
>> Should generic get geometry return an error if the driver-specific
>> geometry has been set to something that doesn't fit within the generic
>> geometry model?
>
> A domain can only have one geometry. So if you set a new geometry
> subsequent calls to get_attr will return the new geometry.
But the implementation may support geometries that are not expressable
with the generic struct. As soon as you set an aperture larger than 1
MiB we cannot support arbitrary mappings within the aperture. If we
return a generic geometry showing the larger aperture, that would
mislead generic users.
The geometry should be reset when the iommu is taken away from one user
(e.g. vfio) and given to another (e.g. dma api), so the dma api should
never see the error unless something has gone wrong (in which case it's
better to flag the error early).
>> I said a generic attribute (not GART specific) -- but if we're never
>> going to use the generic geometry struct for a set operation, bundling
>> it should be OK.
>
> The generic struct should be used to set the geometry. But you can read
> out the old geometry and set force_aperture to the same value in the new
> geometry. Drivers should actually return -EINVAL when the user tries to
> set an unsupported value for force_aperture.
Wouldn't errors be less likely, and easier to diagnose, if
force_aperture weren't part of the struct in the first place?
If the idea is to keep attributes as granular as practical, it seems the
bundling goes against that. If that isn't a goal, then I don't see the
problem with the PAMU geometry bundling start/end with subwindows.
>> No, at this point I'm just trying to follow the API development while
>> tending to other tasks. I think Varun is working on the code for now.
>
> Okay, maybe it is better to follow a 'release early, release often'
> model here. So we can work out the issues together.
I agree, and will keep prodding coworkers in this direction.
-Scott
next prev parent reply other threads:[~2012-01-30 20:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1326983405-319-1-git-send-email-joerg.roedel@amd.com>
[not found] ` <1326983405-319-3-git-send-email-joerg.roedel@amd.com>
[not found] ` <1326983405-319-3-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-01-19 17:16 ` [PATCH 2/5] iommu/amd: Implement DOMAIN_ATTR_GEOMETRY attribute Sethi Varun-B16395
[not found] ` <C5ECD7A89D1DC44195F34B25E172658D038749@039-SN2MPN1-011.039d.mgd.msft.net>
[not found] ` <C5ECD7A89D1DC44195F34B25E172658D038749-RL0Hj/+nBVCMXPU/2EZmt64g8xLGJsHaLnY5E4hWTkheoWH0uzbU5w@public.gmane.org>
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 19:00 ` Scott Wood
[not found] ` <4F21A2D5.6000204-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
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
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 20:21 ` Scott Wood [this message]
[not found] ` <20120126185101.GJ19255-5C7GfCeVMHo@public.gmane.org>
2012-01-30 6:27 ` Sethi Varun-B16395
[not found] ` <C5ECD7A89D1DC44195F34B25E172658D041E81-RL0Hj/+nBVDAtPZc1oz0FK4g8xLGJsHaLnY5E4hWTkheoWH0uzbU5w@public.gmane.org>
2012-01-30 14:30 ` 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
[not found] ` <20120120.081403.2268989617582455160.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-20 16:05 ` joerg.roedel-5C7GfCeVMHo
[not found] ` <201201191646.13798.laurent.pinchart@ideasonboard.com>
[not found] ` <20120119160739.GB2205@amd.com>
[not found] ` <201201191727.10176.laurent.pinchart@ideasonboard.com>
[not found] ` <201201191727.10176.laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2012-01-20 5:44 ` [PATCH 2/5] iommu/amd: Implement DOMAIN_ATTR_GEOMETRY attribute Hiroshi Doyu
2012-01-20 16:01 ` Joerg Roedel
[not found] ` <20120120160128.GF2205-5C7GfCeVMHo@public.gmane.org>
2012-02-01 9:37 ` Sethi Varun-B16395
2012-01-26 18:26 ` Scott Wood
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=4F26FBE1.5050006@freescale.com \
--to=scottwood@freescale.com \
--cc=B07421@freescale.com \
--cc=B16395@freescale.com \
--cc=davidb@codeaurora.org \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux-foundation.org \
--cc=joerg.roedel@amd.com \
--cc=joro@8bytes.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ohad@wizery.com \
--cc=tony@atomide.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).