From: "Guzman Lugo, Fernando" <fernando.lugo@ti.com>
To: David Cohen <david.cohen@nokia.com>
Cc: "Doyu Hiroshi (Nokia-MS/Espoo)" <hiroshi.doyu@nokia.com>,
"Contreras Felipe (Nokia-MS/Helsinki)"
<felipe.contreras@nokia.com>,
"Palande Ameya (Nokia-MS/Helsinki)" <ameya.palande@nokia.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"andy.shevchenko@gmail.com" <andy.shevchenko@gmail.com>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>
Subject: RE: [PATCH 2/4] iovmm: fix roundup for next area and end check for the last area
Date: Sun, 3 Oct 2010 22:17:05 -0500 [thread overview]
Message-ID: <496565EC904933469F292DDA3F1663E602F3E074E3@dlee06.ent.ti.com> (raw)
In-Reply-To: <20101002074944.GB14377@esdhcp036161.research.nokia.com>
> ________________________________________
> From: David Cohen [david.cohen@nokia.com]
> Sent: Saturday, October 02, 2010 2:49 AM
> To: Guzman Lugo, Fernando
> Cc: Doyu Hiroshi (Nokia-MS/Espoo); Contreras Felipe (Nokia-MS/Helsinki);
> Palande Ameya (Nokia-MS/Helsinki); linux-kernel@vger.kernel.org;
> andy.shevchenko@gmail.com; linux-omap@vger.kernel.org
> Subject: Re: [PATCH 2/4] iovmm: fix roundup for next area and end check for
> the last area
>
> On Fri, Oct 01, 2010 at 09:21:36PM +0200, ext Guzman Lugo, Fernando wrote:
> >
> > > On Fri, Oct 01, 2010 at 06:10:30PM +0200, ext Guzman Lugo,
> > > Fernando wrote:
> > > >
> > >
> > > [snip]
> > >
> > > > > > arch/arm/plat-omap/iovmm.c | 6 +++---
> > > > > > 1 files changed, 3 insertions(+), 3 deletions(-)
> > > > > >
> > > > > > diff --git a/arch/arm/plat-omap/iovmm.c
> > > > > b/arch/arm/plat-omap/iovmm.c
> > > > > > index 24ca9c4..fc6b109 100644
> > > > > > --- a/arch/arm/plat-omap/iovmm.c
> > > > > > +++ b/arch/arm/plat-omap/iovmm.c
> > > > > > @@ -289,19 +289,19 @@ static struct iovm_struct
> > > > > *alloc_iovm_area(struct iommu *obj, u32 da,
> > > > > > prev_end = 0;
> > > > > > list_for_each_entry(tmp, &obj->mmap, list) {
> > > > > >
> > > > > > - if (prev_end >= start)
> > > > > > + if (prev_end > start)
> > > > > > break;
> > > > > >
> > > > > > if (start + bytes <= tmp->da_start)
> > > > > > goto found;
> > > > > >
> > > > > > if (flags & IOVMF_DA_ANON)
> > > > > > - start = roundup(tmp->da_end +
> > > 1, alignement);
> > > > > > + start = roundup(tmp->da_end,
> > > alignement);
> > > > >
> > > > > There's a lack of comment here, but the purpose of
> > > > > tmp->da_end + 1 is to create a gap between iovm areas to
> > > > > force to trigger iommu faults when some access exceeds a
> > > valid area.
> > > > > Without this gap, such situation may produce data
> > > corruption which
> > > > > is much more difficult to track.
> > > >
> > > > That only works when you are accessing sequencially beyond
> > > the End of
> > > > the vm_area. However if you are accessing a random address
> > > Which is in
> > > > the mmu tables you still can corrupt memory which does Not
> > > belong to
> > > > you. That looks not very effective then why waste Memory?
> > >
> > > The main intention is to detect sequential access beyond the
> > > end of the vm area and it is effective for that purpose.
> > > i.e., OMAP3 ISP has a hw issue which makes its H3A submodule,
> > > responsible to produce statistics data for the captured
> > > image, to write more data than it should. The workaround
> > > described in the errata wasn't enough to avoid error
> > > conditions, so a different approach was implemented. This gap
> > > did help me to make sure the new workaround is valid and no
> > > data corruption was occurring anymore.
> > > Anyway, I can't see why memory is being wasted.
> > >
> >
> > I was taking about vitual memory waste (maybe not so important).
> > Is ok for me then keep the gap. Do other changes look good to
> > You?
>
> Do you mean in this patch?
> All changes make sense only if you're removing the gap, except for the
> fix below.
The thing is, the dspbridge needs to map some register in order to DSP
can read and configure some of them. We need to map some pages
with fix addresses and to do that I use iommu_kmap. So when some
of that pages are contiguous I get his error:
"%s: no space to fit %08x(%x) flags: %08x\n"
Which is not true. The page to page perfectly fix, but the check with 1 byte
more avoid that it could be mapped and I am getting the error.
I am not agree with the gap, but I am ok when it is not fixed address as
below code
if (flags & IOVMF_DA_ANON)
start = roundup(tmp->da_end + 1, alignement);
But it is breaking the tidspbridge when the gap is used for fixed addresses.
It should not fail when we want to map a page what is freed just because of the gap.
Please let me know what you thing.
Thanks,
Fernando.
>
> [snip]
>
> > > > > >
> > > > > > prev_end = tmp->da_end;
> > > > > > }
> > > > > >
> > > > > > - if ((start > prev_end) && (ULONG_MAX - start >= bytes))
> > > > > > + if ((start >= prev_end) && (ULONG_MAX - start +
> > > 1 >= bytes))
>
> This fix is partially valid. The correct change must be only:
> - if ((start > prev_end) && (ULONG_MAX - start >= bytes))
> + if ((start > prev_end) && (ULONG_MAX - start + 1 >= bytes))
>
> Otherwise you wouldn't guarantee the gap for fixed da.
>
> Br,
>
> David
next prev parent reply other threads:[~2010-10-04 3:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-01 3:08 [PATCH 0/4] iovmm: fixes for iovmm module Fernando Guzman Lugo
2010-10-01 3:08 ` [PATCH 1/4] iommu: remove CONFIG_MPU_BRIDGE_IOMMU Fernando Guzman Lugo
2010-10-01 3:08 ` [PATCH 2/4] iovmm: fix roundup for next area and end check for the last area Fernando Guzman Lugo
2010-10-01 3:08 ` [PATCH 3/4] iovmm: add superpages support to fixed da address Fernando Guzman Lugo
2010-10-01 3:08 ` [PATCH 4/4] iovmm: replace __iounmap with omap_iounmap Fernando Guzman Lugo
2010-10-01 10:57 ` [PATCH 2/4] iovmm: fix roundup for next area and end check for the last area David Cohen
2010-10-01 16:10 ` Guzman Lugo, Fernando
2010-10-01 17:53 ` David Cohen
2010-10-01 19:21 ` Guzman Lugo, Fernando
2010-10-02 7:49 ` David Cohen
2010-10-04 3:17 ` Guzman Lugo, Fernando [this message]
2010-10-04 12:11 ` David Cohen
2010-10-04 15:37 ` Guzman Lugo, Fernando
2010-10-04 15:35 ` David Cohen
2010-10-01 9:32 ` [PATCH 1/4] iommu: remove CONFIG_MPU_BRIDGE_IOMMU Marathe, Yogesh
2010-10-01 15:52 ` Guzman Lugo, Fernando
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=496565EC904933469F292DDA3F1663E602F3E074E3@dlee06.ent.ti.com \
--to=fernando.lugo@ti.com \
--cc=ameya.palande@nokia.com \
--cc=andy.shevchenko@gmail.com \
--cc=david.cohen@nokia.com \
--cc=felipe.contreras@nokia.com \
--cc=hiroshi.doyu@nokia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.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
all inboxes | Powered by JetHome®