Message ID | 1299588365-2749-4-git-send-email-dacohen@gmail.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers |
Return-path: <mchehab@pedra> Envelope-to: mchehab@pedra Delivery-date: Tue, 08 Mar 2011 09:47:15 -0300 Received: from mchehab by pedra with local (Exim 4.72) (envelope-from <mchehab@pedra>) id 1PwwJm-0006Q8-Qi for mchehab@pedra; Tue, 08 Mar 2011 09:47:15 -0300 Received: from casper.infradead.org [85.118.1.10] by pedra with IMAP (fetchmail-6.3.17) for <mchehab@localhost> (single-drop); Tue, 08 Mar 2011 09:47:14 -0300 (BRT) Received: from vger.kernel.org ([209.132.180.67]) by casper.infradead.org with esmtp (Exim 4.72 #1 (Red Hat Linux)) id 1PwwJ3-0001VS-Am; Tue, 08 Mar 2011 12:46:29 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754414Ab1CHMq0 (ORCPT <rfc822; kmpark@infradead.org> + 1 other); Tue, 8 Mar 2011 07:46:26 -0500 Received: from mail-ey0-f174.google.com ([209.85.215.174]:47005 "EHLO mail-ey0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754038Ab1CHMqY (ORCPT <rfc822; linux-media@vger.kernel.org>); Tue, 8 Mar 2011 07:46:24 -0500 Received: by mail-ey0-f174.google.com with SMTP id 24so1950557eyx.19 for <multiple recipients>; Tue, 08 Mar 2011 04:46:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references; bh=luc4QAvdPYsM7KoDelbNszO0vwHonceCD3yxFhBBvtQ=; b=ft98whW/augb0RLZbDKRTJ5o5Q83/haXLilcYXSGU04ZvohtwpBJvLjXmiwz0E0bL3 Q9+6d8ivPOm374DQKtZ19OLGiaxxk1LD4CgBo6ciDNy1yjSs6oXBbRZVI89zuWpnhibu Jz/SRHOB8A6FkIZcDf53+pKFODGUx0IsH9obA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=N/M5TJ8yrgD1gxWreFW4I9hVrzvwI41zEMr3I1hw1o5+PgiY2h+dVXWe+DmVkQlA6F ilMjP9N8Jbh/vzdsDJaHqevXIFFu7BNCdPrCDEXHl3Q6Ky900eS+le/HL/vyLm3zht96 W1f6Gwr4ln08lzOeQokdFysdKVg/VthKdmq7k= Received: by 10.213.103.80 with SMTP id j16mr3549288ebo.70.1299588383501; Tue, 08 Mar 2011 04:46:23 -0800 (PST) Received: from localhost.localdomain (a91-152-72-10.elisa-laajakaista.fi [91.152.72.10]) by mx.google.com with ESMTPS id x54sm609369eeh.11.2011.03.08.04.46.18 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 08 Mar 2011 04:46:20 -0800 (PST) From: David Cohen <dacohen@gmail.com> To: Hiroshi.DOYU@nokia.com Cc: linux-omap@vger.kernel.org, fernando.lugo@ti.com, linux-media@vger.kernel.org, laurent.pinchart@ideasonboard.com, sakari.ailus@maxwell.research.nokia.com, David Cohen <dacohen@gmail.com> Subject: [PATCH 3/3] omap: iovmm: don't check 'da' to set IOVMF_DA_FIXED/IOVMF_DA_ANON flags Date: Tue, 8 Mar 2011 14:46:05 +0200 Message-Id: <1299588365-2749-4-git-send-email-dacohen@gmail.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1299588365-2749-1-git-send-email-dacohen@gmail.com> References: <1299588365-2749-1-git-send-email-dacohen@gmail.com> Precedence: bulk List-ID: <linux-media.vger.kernel.org> X-Mailing-List: linux-media@vger.kernel.org Sender: <mchehab@pedra> |
Commit Message
David Cohen
March 8, 2011, 12:46 p.m. UTC
Currently IOVMM driver sets IOVMF_DA_FIXED/IOVMF_DA_ANON flags according
to input 'da' address when mapping memory:
da == 0: IOVMF_DA_ANON
da != 0: IOVMF_DA_FIXED
It prevents IOMMU to map first page with fixed 'da'. To avoid such
issue, IOVMM will not automatically set IOVMF_DA_FIXED. It should now
come from the user. IOVMF_DA_ANON will be automatically set if
IOVMF_DA_FIXED isn't set.
Signed-off-by: David Cohen <dacohen@gmail.com>
---
arch/arm/plat-omap/iovmm.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
Comments
On Tue, Mar 8, 2011 at 6:46 AM, David Cohen <dacohen@gmail.com> wrote: > Currently IOVMM driver sets IOVMF_DA_FIXED/IOVMF_DA_ANON flags according > to input 'da' address when mapping memory: > da == 0: IOVMF_DA_ANON > da != 0: IOVMF_DA_FIXED > > It prevents IOMMU to map first page with fixed 'da'. To avoid such > issue, IOVMM will not automatically set IOVMF_DA_FIXED. It should now > come from the user. IOVMF_DA_ANON will be automatically set if > IOVMF_DA_FIXED isn't set. > > Signed-off-by: David Cohen <dacohen@gmail.com> > --- > arch/arm/plat-omap/iovmm.c | 12 ++++++++---- > 1 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c > index 11c9b76..dde9cb0 100644 > --- a/arch/arm/plat-omap/iovmm.c > +++ b/arch/arm/plat-omap/iovmm.c > @@ -654,7 +654,8 @@ u32 iommu_vmap(struct iommu *obj, u32 da, const struct sg_table *sgt, > flags &= IOVMF_HW_MASK; > flags |= IOVMF_DISCONT; > flags |= IOVMF_MMIO; > - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); > + if (~flags & IOVMF_DA_FIXED) > + flags |= IOVMF_DA_ANON; could we use only one? both are mutual exclusive, what happen if flag is IOVMF_DA_FIXED | IOVMF_DA_ANON? so, I suggest to get rid of IOVMF_DA_ANON. Regards, Fernando. > > da = __iommu_vmap(obj, da, sgt, va, bytes, flags); > if (IS_ERR_VALUE(da)) > @@ -713,7 +714,8 @@ u32 iommu_vmalloc(struct iommu *obj, u32 da, size_t bytes, u32 flags) > flags &= IOVMF_HW_MASK; > flags |= IOVMF_DISCONT; > flags |= IOVMF_ALLOC; > - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); > + if (~flags & IOVMF_DA_FIXED) > + flags |= IOVMF_DA_ANON; > > sgt = sgtable_alloc(bytes, flags, da, 0); > if (IS_ERR(sgt)) { > @@ -803,7 +805,8 @@ u32 iommu_kmap(struct iommu *obj, u32 da, u32 pa, size_t bytes, > flags &= IOVMF_HW_MASK; > flags |= IOVMF_LINEAR; > flags |= IOVMF_MMIO; > - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); > + if (~flags & IOVMF_DA_FIXED) > + flags |= IOVMF_DA_ANON; > > da = __iommu_kmap(obj, da, pa, va, bytes, flags); > if (IS_ERR_VALUE(da)) > @@ -862,7 +865,8 @@ u32 iommu_kmalloc(struct iommu *obj, u32 da, size_t bytes, u32 flags) > flags &= IOVMF_HW_MASK; > flags |= IOVMF_LINEAR; > flags |= IOVMF_ALLOC; > - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); > + if (~flags & IOVMF_DA_FIXED) > + flags |= IOVMF_DA_ANON; > > da = __iommu_kmap(obj, da, pa, va, bytes, flags); > if (IS_ERR_VALUE(da)) > -- > 1.7.0.4 > > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: "ext Guzman Lugo, Fernando" <fernando.lugo@ti.com> Subject: Re: [PATCH 3/3] omap: iovmm: don't check 'da' to set IOVMF_DA_FIXED/IOVMF_DA_ANON flags Date: Tue, 8 Mar 2011 11:59:43 -0600 > On Tue, Mar 8, 2011 at 6:46 AM, David Cohen <dacohen@gmail.com> wrote: >> Currently IOVMM driver sets IOVMF_DA_FIXED/IOVMF_DA_ANON flags according >> to input 'da' address when mapping memory: >> da == 0: IOVMF_DA_ANON >> da != 0: IOVMF_DA_FIXED >> >> It prevents IOMMU to map first page with fixed 'da'. To avoid such >> issue, IOVMM will not automatically set IOVMF_DA_FIXED. It should now >> come from the user. IOVMF_DA_ANON will be automatically set if >> IOVMF_DA_FIXED isn't set. >> >> Signed-off-by: David Cohen <dacohen@gmail.com> >> --- >> arch/arm/plat-omap/iovmm.c | 12 ++++++++---- >> 1 files changed, 8 insertions(+), 4 deletions(-) >> >> diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c >> index 11c9b76..dde9cb0 100644 >> --- a/arch/arm/plat-omap/iovmm.c >> +++ b/arch/arm/plat-omap/iovmm.c >> @@ -654,7 +654,8 @@ u32 iommu_vmap(struct iommu *obj, u32 da, const struct sg_table *sgt, >> flags &= IOVMF_HW_MASK; >> flags |= IOVMF_DISCONT; >> flags |= IOVMF_MMIO; >> - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); >> + if (~flags & IOVMF_DA_FIXED) >> + flags |= IOVMF_DA_ANON; > > could we use only one? both are mutual exclusive, what happen if flag > is IOVMF_DA_FIXED | IOVMF_DA_ANON? so, I suggest to get rid of > IOVMF_DA_ANON. Then, what about introducing some MACRO? Better names? #define set_iovmf_da_anon(flags) #define set_iovmf_da_fix(flags) #define set_iovmf_mmio(flags) ...... -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Mar 8, 2011 at 12:09 PM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote: > From: "ext Guzman Lugo, Fernando" <fernando.lugo@ti.com> > Subject: Re: [PATCH 3/3] omap: iovmm: don't check 'da' to set IOVMF_DA_FIXED/IOVMF_DA_ANON flags > Date: Tue, 8 Mar 2011 11:59:43 -0600 > >> On Tue, Mar 8, 2011 at 6:46 AM, David Cohen <dacohen@gmail.com> wrote: >>> Currently IOVMM driver sets IOVMF_DA_FIXED/IOVMF_DA_ANON flags according >>> to input 'da' address when mapping memory: >>> da == 0: IOVMF_DA_ANON >>> da != 0: IOVMF_DA_FIXED >>> >>> It prevents IOMMU to map first page with fixed 'da'. To avoid such >>> issue, IOVMM will not automatically set IOVMF_DA_FIXED. It should now >>> come from the user. IOVMF_DA_ANON will be automatically set if >>> IOVMF_DA_FIXED isn't set. >>> >>> Signed-off-by: David Cohen <dacohen@gmail.com> >>> --- >>> arch/arm/plat-omap/iovmm.c | 12 ++++++++---- >>> 1 files changed, 8 insertions(+), 4 deletions(-) >>> >>> diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c >>> index 11c9b76..dde9cb0 100644 >>> --- a/arch/arm/plat-omap/iovmm.c >>> +++ b/arch/arm/plat-omap/iovmm.c >>> @@ -654,7 +654,8 @@ u32 iommu_vmap(struct iommu *obj, u32 da, const struct sg_table *sgt, >>> flags &= IOVMF_HW_MASK; >>> flags |= IOVMF_DISCONT; >>> flags |= IOVMF_MMIO; >>> - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); >>> + if (~flags & IOVMF_DA_FIXED) >>> + flags |= IOVMF_DA_ANON; >> >> could we use only one? both are mutual exclusive, what happen if flag >> is IOVMF_DA_FIXED | IOVMF_DA_ANON? so, I suggest to get rid of >> IOVMF_DA_ANON. > > Then, what about introducing some MACRO? Better names? > > #define set_iovmf_da_anon(flags) > #define set_iovmf_da_fix(flags) > #define set_iovmf_mmio(flags) will they be used by the users? I think people are more used to use iommu_vmap(obj, da, sgt, IOVMF_MMIO | IOVMF_DA_ANON); than set_iovmf_da_anon(flags) set_iovmf_mmio(flags) iommu_vmap(obj, da, sgt, flags); I don't have problem with the change, but I think how it is now is ok, just that we don't we two bits to handle anon/fixed da, it can be managed it only 1 bit (one flag), or is there a issue? Regards, Fernando. > ...... > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Hiroshi, Fernando, On Tue, Mar 8, 2011 at 8:53 PM, Guzman Lugo, Fernando <fernando.lugo@ti.com> wrote: > On Tue, Mar 8, 2011 at 12:09 PM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote: >> From: "ext Guzman Lugo, Fernando" <fernando.lugo@ti.com> >> Subject: Re: [PATCH 3/3] omap: iovmm: don't check 'da' to set IOVMF_DA_FIXED/IOVMF_DA_ANON flags >> Date: Tue, 8 Mar 2011 11:59:43 -0600 >> >>> On Tue, Mar 8, 2011 at 6:46 AM, David Cohen <dacohen@gmail.com> wrote: >>>> Currently IOVMM driver sets IOVMF_DA_FIXED/IOVMF_DA_ANON flags according >>>> to input 'da' address when mapping memory: >>>> da == 0: IOVMF_DA_ANON >>>> da != 0: IOVMF_DA_FIXED >>>> >>>> It prevents IOMMU to map first page with fixed 'da'. To avoid such >>>> issue, IOVMM will not automatically set IOVMF_DA_FIXED. It should now >>>> come from the user. IOVMF_DA_ANON will be automatically set if >>>> IOVMF_DA_FIXED isn't set. >>>> >>>> Signed-off-by: David Cohen <dacohen@gmail.com> >>>> --- >>>> arch/arm/plat-omap/iovmm.c | 12 ++++++++---- >>>> 1 files changed, 8 insertions(+), 4 deletions(-) >>>> >>>> diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c >>>> index 11c9b76..dde9cb0 100644 >>>> --- a/arch/arm/plat-omap/iovmm.c >>>> +++ b/arch/arm/plat-omap/iovmm.c >>>> @@ -654,7 +654,8 @@ u32 iommu_vmap(struct iommu *obj, u32 da, const struct sg_table *sgt, >>>> flags &= IOVMF_HW_MASK; >>>> flags |= IOVMF_DISCONT; >>>> flags |= IOVMF_MMIO; >>>> - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); >>>> + if (~flags & IOVMF_DA_FIXED) >>>> + flags |= IOVMF_DA_ANON; >>> >>> could we use only one? both are mutual exclusive, what happen if flag >>> is IOVMF_DA_FIXED | IOVMF_DA_ANON? so, I suggest to get rid of >>> IOVMF_DA_ANON. >> >> Then, what about introducing some MACRO? Better names? >> >> #define set_iovmf_da_anon(flags) >> #define set_iovmf_da_fix(flags) >> #define set_iovmf_mmio(flags) > > will they be used by the users? > > I think people are more used to use > > iommu_vmap(obj, da, sgt, IOVMF_MMIO | IOVMF_DA_ANON); I'd be happier with this approach, instead of the macros. :) It's intuitive and very common on kernel. > > than > > set_iovmf_da_anon(flags) > set_iovmf_mmio(flags) > iommu_vmap(obj, da, sgt, flags); > > I don't have problem with the change, but I think how it is now is ok, > just that we don't we two bits to handle anon/fixed da, it can be > managed it only 1 bit (one flag), or is there a issue? We can exclude IOVMF_DA_ANON and stick with IOVMF_DA_FIXED only. I can resend my patch if we agree it's OK. Regards, David > > Regards, > Fernando. >> ...... >> > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Mar 8, 2011 at 12:57 PM, David Cohen <dacohen@gmail.com> wrote: > Hi Hiroshi, Fernando, > > On Tue, Mar 8, 2011 at 8:53 PM, Guzman Lugo, Fernando > <fernando.lugo@ti.com> wrote: >> On Tue, Mar 8, 2011 at 12:09 PM, Hiroshi DOYU <Hiroshi.DOYU@nokia.com> wrote: >>> From: "ext Guzman Lugo, Fernando" <fernando.lugo@ti.com> >>> Subject: Re: [PATCH 3/3] omap: iovmm: don't check 'da' to set IOVMF_DA_FIXED/IOVMF_DA_ANON flags >>> Date: Tue, 8 Mar 2011 11:59:43 -0600 >>> >>>> On Tue, Mar 8, 2011 at 6:46 AM, David Cohen <dacohen@gmail.com> wrote: >>>>> Currently IOVMM driver sets IOVMF_DA_FIXED/IOVMF_DA_ANON flags according >>>>> to input 'da' address when mapping memory: >>>>> da == 0: IOVMF_DA_ANON >>>>> da != 0: IOVMF_DA_FIXED >>>>> >>>>> It prevents IOMMU to map first page with fixed 'da'. To avoid such >>>>> issue, IOVMM will not automatically set IOVMF_DA_FIXED. It should now >>>>> come from the user. IOVMF_DA_ANON will be automatically set if >>>>> IOVMF_DA_FIXED isn't set. >>>>> >>>>> Signed-off-by: David Cohen <dacohen@gmail.com> >>>>> --- >>>>> arch/arm/plat-omap/iovmm.c | 12 ++++++++---- >>>>> 1 files changed, 8 insertions(+), 4 deletions(-) >>>>> >>>>> diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c >>>>> index 11c9b76..dde9cb0 100644 >>>>> --- a/arch/arm/plat-omap/iovmm.c >>>>> +++ b/arch/arm/plat-omap/iovmm.c >>>>> @@ -654,7 +654,8 @@ u32 iommu_vmap(struct iommu *obj, u32 da, const struct sg_table *sgt, >>>>> flags &= IOVMF_HW_MASK; >>>>> flags |= IOVMF_DISCONT; >>>>> flags |= IOVMF_MMIO; >>>>> - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); >>>>> + if (~flags & IOVMF_DA_FIXED) >>>>> + flags |= IOVMF_DA_ANON; >>>> >>>> could we use only one? both are mutual exclusive, what happen if flag >>>> is IOVMF_DA_FIXED | IOVMF_DA_ANON? so, I suggest to get rid of >>>> IOVMF_DA_ANON. >>> >>> Then, what about introducing some MACRO? Better names? >>> >>> #define set_iovmf_da_anon(flags) >>> #define set_iovmf_da_fix(flags) >>> #define set_iovmf_mmio(flags) >> >> will they be used by the users? >> >> I think people are more used to use >> >> iommu_vmap(obj, da, sgt, IOVMF_MMIO | IOVMF_DA_ANON); > > I'd be happier with this approach, instead of the macros. :) > It's intuitive and very common on kernel. > >> >> than >> >> set_iovmf_da_anon(flags) >> set_iovmf_mmio(flags) >> iommu_vmap(obj, da, sgt, flags); >> >> I don't have problem with the change, but I think how it is now is ok, >> just that we don't we two bits to handle anon/fixed da, it can be >> managed it only 1 bit (one flag), or is there a issue? > > We can exclude IOVMF_DA_ANON and stick with IOVMF_DA_FIXED only. > I can resend my patch if we agree it's OK. sounds perfect to me. Regards, Fernando. > > Regards, > > David > >> >> Regards, >> Fernando. >>> ...... >>> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[snip] >>>>>> - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); >>>>>> + if (~flags & IOVMF_DA_FIXED) >>>>>> + flags |= IOVMF_DA_ANON; >>>>> >>>>> could we use only one? both are mutual exclusive, what happen if flag >>>>> is IOVMF_DA_FIXED | IOVMF_DA_ANON? so, I suggest to get rid of >>>>> IOVMF_DA_ANON. >>>> >>>> Then, what about introducing some MACRO? Better names? >>>> >>>> #define set_iovmf_da_anon(flags) >>>> #define set_iovmf_da_fix(flags) >>>> #define set_iovmf_mmio(flags) >>> >>> will they be used by the users? >>> >>> I think people are more used to use >>> >>> iommu_vmap(obj, da, sgt, IOVMF_MMIO | IOVMF_DA_ANON); >> >> I'd be happier with this approach, instead of the macros. :) >> It's intuitive and very common on kernel. >> >>> >>> than >>> >>> set_iovmf_da_anon(flags) >>> set_iovmf_mmio(flags) >>> iommu_vmap(obj, da, sgt, flags); >>> >>> I don't have problem with the change, but I think how it is now is ok, >>> just that we don't we two bits to handle anon/fixed da, it can be >>> managed it only 1 bit (one flag), or is there a issue? >> >> We can exclude IOVMF_DA_ANON and stick with IOVMF_DA_FIXED only. >> I can resend my patch if we agree it's OK. > > sounds perfect to me. Not sure indeed if this change fits to this same patch. Looks like a 4th patch sounds better. Br, David Cohen -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Mar 8, 2011 at 9:46 PM, David Cohen <dacohen@gmail.com> wrote: > [snip] > >>>>>>> - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); >>>>>>> + if (~flags & IOVMF_DA_FIXED) >>>>>>> + flags |= IOVMF_DA_ANON; >>>>>> >>>>>> could we use only one? both are mutual exclusive, what happen if flag >>>>>> is IOVMF_DA_FIXED | IOVMF_DA_ANON? so, I suggest to get rid of >>>>>> IOVMF_DA_ANON. >>>>> >>>>> Then, what about introducing some MACRO? Better names? >>>>> >>>>> #define set_iovmf_da_anon(flags) >>>>> #define set_iovmf_da_fix(flags) >>>>> #define set_iovmf_mmio(flags) >>>> >>>> will they be used by the users? >>>> >>>> I think people are more used to use >>>> >>>> iommu_vmap(obj, da, sgt, IOVMF_MMIO | IOVMF_DA_ANON); >>> >>> I'd be happier with this approach, instead of the macros. :) >>> It's intuitive and very common on kernel. >>> >>>> >>>> than >>>> >>>> set_iovmf_da_anon(flags) >>>> set_iovmf_mmio(flags) >>>> iommu_vmap(obj, da, sgt, flags); >>>> >>>> I don't have problem with the change, but I think how it is now is ok, >>>> just that we don't we two bits to handle anon/fixed da, it can be >>>> managed it only 1 bit (one flag), or is there a issue? >>> >>> We can exclude IOVMF_DA_ANON and stick with IOVMF_DA_FIXED only. >>> I can resend my patch if we agree it's OK. >> >> sounds perfect to me. > > Not sure indeed if this change fits to this same patch. Looks like a > 4th patch sounds better. Indeed not. :) A new set is coming soon. Br, David > > Br, > > David Cohen > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c index 11c9b76..dde9cb0 100644 --- a/arch/arm/plat-omap/iovmm.c +++ b/arch/arm/plat-omap/iovmm.c @@ -654,7 +654,8 @@ u32 iommu_vmap(struct iommu *obj, u32 da, const struct sg_table *sgt, flags &= IOVMF_HW_MASK; flags |= IOVMF_DISCONT; flags |= IOVMF_MMIO; - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); + if (~flags & IOVMF_DA_FIXED) + flags |= IOVMF_DA_ANON; da = __iommu_vmap(obj, da, sgt, va, bytes, flags); if (IS_ERR_VALUE(da)) @@ -713,7 +714,8 @@ u32 iommu_vmalloc(struct iommu *obj, u32 da, size_t bytes, u32 flags) flags &= IOVMF_HW_MASK; flags |= IOVMF_DISCONT; flags |= IOVMF_ALLOC; - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); + if (~flags & IOVMF_DA_FIXED) + flags |= IOVMF_DA_ANON; sgt = sgtable_alloc(bytes, flags, da, 0); if (IS_ERR(sgt)) { @@ -803,7 +805,8 @@ u32 iommu_kmap(struct iommu *obj, u32 da, u32 pa, size_t bytes, flags &= IOVMF_HW_MASK; flags |= IOVMF_LINEAR; flags |= IOVMF_MMIO; - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); + if (~flags & IOVMF_DA_FIXED) + flags |= IOVMF_DA_ANON; da = __iommu_kmap(obj, da, pa, va, bytes, flags); if (IS_ERR_VALUE(da)) @@ -862,7 +865,8 @@ u32 iommu_kmalloc(struct iommu *obj, u32 da, size_t bytes, u32 flags) flags &= IOVMF_HW_MASK; flags |= IOVMF_LINEAR; flags |= IOVMF_ALLOC; - flags |= (da ? IOVMF_DA_FIXED : IOVMF_DA_ANON); + if (~flags & IOVMF_DA_FIXED) + flags |= IOVMF_DA_ANON; da = __iommu_kmap(obj, da, pa, va, bytes, flags); if (IS_ERR_VALUE(da))