All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Herrmann <herrmann.der.user-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>
To: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>
Cc: Andreas Herrmann
	<andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
	<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH 05/11] iommu/arm-smmu: Check for duplicate stream IDs when registering master devices
Date: Thu, 23 Jan 2014 22:17:49 +0100	[thread overview]
Message-ID: <20140123211749.GE26399@alberich> (raw)
In-Reply-To: <20140122155302.GF14108-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>

On Wed, Jan 22, 2014 at 03:53:02PM +0000, Will Deacon wrote:
> On Thu, Jan 16, 2014 at 12:44:17PM +0000, Andreas Herrmann wrote:
> > Cc: Andreas Herrmann <herrmann.der.user@googlemail.com>
> > Signed-off-by: Andreas Herrmann <andreas.herrmann@calxeda.com>
> > ---
> >  drivers/iommu/arm-smmu.c |   25 ++++++++++++++++++++++---
> >  1 file changed, 22 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
> > index 02a871e..a4e0c93 100644
> > --- a/drivers/iommu/arm-smmu.c
> > +++ b/drivers/iommu/arm-smmu.c
> > @@ -56,6 +56,9 @@
> >  /* Maximum number of stream IDs assigned to a single device */
> >  #define MAX_MASTER_STREAMIDS		8
> >  
> > +/* Maximum stream ID */
> > +#define ARM_SMMU_MAX_STREAMID		(SZ_64K - 1)
> > +
> >  /* Maximum number of context banks per SMMU */
> >  #define ARM_SMMU_MAX_CBS		128
> >  
> > @@ -386,6 +389,8 @@ struct arm_smmu_device {
> >  	u32				smr_mask_mask;
> >  	u32				smr_id_mask;
> >  
> > +	unsigned long			*sids;
> 
> DECLARE_BITMAP instead?

I wanted to allocate the bitmap which btw allows us to ... [→ see end
of mail]

> However, that's an 8k bitmap just for sanity checking, which I'm not
> too fond of.

Yes, I thought the same. But finally I thought it's worth it.

> Given that the motivation for the checking was your smr allocator,
> perhaps it's sufficient just to do the checking on a per-master
> basis, which we can do with the exhaustive search each time.

A per-master basis is not sufficient. If you argue that someone could
have specified the same stream ID twice for one master in DT how are
chances that the same stream ID shows up twice but for different
master devices?

I think we have to check this (independent of my smr allocator).
If two masters accidentially share the/an ID:

* Stream ID matching (w/o a mask, just use one SMR to map one stream
  ID): It proably will cause a multi match with undifined behaviour.

* Stream ID indexing: You would overwrite an already used S2CR (if
  there are no further precautions).

That is why I think a check to reject duplicate stream IDs among all
masters for one SMMU is required.

If this is needed, exhaustive search doesn't seem to be a good idea,
because if you have a distributed SMMU -- one TCU (I think that's
where the SMRs are), and many TBUs -- you might have several master
devices attached (many more than in current systems). Each master
potentially has several stream IDs ...  Esp. in this case 8k for doing
the check isn't an issue.

Maybe a compromise is to 

... free the bitmap after the check is done.


Andreas
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: herrmann.der.user@googlemail.com (Andreas Herrmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 05/11] iommu/arm-smmu: Check for duplicate stream IDs when registering master devices
Date: Thu, 23 Jan 2014 22:17:49 +0100	[thread overview]
Message-ID: <20140123211749.GE26399@alberich> (raw)
In-Reply-To: <20140122155302.GF14108@mudshark.cambridge.arm.com>

On Wed, Jan 22, 2014 at 03:53:02PM +0000, Will Deacon wrote:
> On Thu, Jan 16, 2014 at 12:44:17PM +0000, Andreas Herrmann wrote:
> > Cc: Andreas Herrmann <herrmann.der.user@googlemail.com>
> > Signed-off-by: Andreas Herrmann <andreas.herrmann@calxeda.com>
> > ---
> >  drivers/iommu/arm-smmu.c |   25 ++++++++++++++++++++++---
> >  1 file changed, 22 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
> > index 02a871e..a4e0c93 100644
> > --- a/drivers/iommu/arm-smmu.c
> > +++ b/drivers/iommu/arm-smmu.c
> > @@ -56,6 +56,9 @@
> >  /* Maximum number of stream IDs assigned to a single device */
> >  #define MAX_MASTER_STREAMIDS		8
> >  
> > +/* Maximum stream ID */
> > +#define ARM_SMMU_MAX_STREAMID		(SZ_64K - 1)
> > +
> >  /* Maximum number of context banks per SMMU */
> >  #define ARM_SMMU_MAX_CBS		128
> >  
> > @@ -386,6 +389,8 @@ struct arm_smmu_device {
> >  	u32				smr_mask_mask;
> >  	u32				smr_id_mask;
> >  
> > +	unsigned long			*sids;
> 
> DECLARE_BITMAP instead?

I wanted to allocate the bitmap which btw allows us to ... [? see end
of mail]

> However, that's an 8k bitmap just for sanity checking, which I'm not
> too fond of.

Yes, I thought the same. But finally I thought it's worth it.

> Given that the motivation for the checking was your smr allocator,
> perhaps it's sufficient just to do the checking on a per-master
> basis, which we can do with the exhaustive search each time.

A per-master basis is not sufficient. If you argue that someone could
have specified the same stream ID twice for one master in DT how are
chances that the same stream ID shows up twice but for different
master devices?

I think we have to check this (independent of my smr allocator).
If two masters accidentially share the/an ID:

* Stream ID matching (w/o a mask, just use one SMR to map one stream
  ID): It proably will cause a multi match with undifined behaviour.

* Stream ID indexing: You would overwrite an already used S2CR (if
  there are no further precautions).

That is why I think a check to reject duplicate stream IDs among all
masters for one SMMU is required.

If this is needed, exhaustive search doesn't seem to be a good idea,
because if you have a distributed SMMU -- one TCU (I think that's
where the SMRs are), and many TBUs -- you might have several master
devices attached (many more than in current systems). Each master
potentially has several stream IDs ...  Esp. in this case 8k for doing
the check isn't an issue.

Maybe a compromise is to 

... free the bitmap after the check is done.


Andreas

  parent reply	other threads:[~2014-01-23 21:17 UTC|newest]

Thread overview: 134+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-16 12:44 [PATCH v4 0/11] iommu/arm-smmu: Misc modifications to support SMMUs on Calxeda ECX-2000 Andreas Herrmann
2014-01-16 12:44 ` Andreas Herrmann
     [not found] ` <1389876263-25759-1-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-16 12:44   ` [PATCH 01/11] iommu/arm-smmu: Introduce driver option handling Andreas Herrmann
2014-01-16 12:44     ` Andreas Herrmann
     [not found]     ` <1389876263-25759-2-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-22 11:51       ` Will Deacon
2014-01-22 11:51         ` Will Deacon
     [not found]         ` <20140122115143.GI1621-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-23 20:16           ` Andreas Herrmann
2014-01-23 20:16             ` Andreas Herrmann
2014-01-16 12:44   ` [PATCH 02/11] iommu/arm-smmu: Introduce bus notifier block Andreas Herrmann
2014-01-16 12:44     ` Andreas Herrmann
     [not found]     ` <1389876263-25759-3-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-18 20:59       ` Varun Sethi
2014-01-18 20:59         ` Varun Sethi
     [not found]         ` <419c2609cab14842b5258f7048ce6d43-AZ66ij2kwaacCcN9WK45f+O6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-01-20 21:29           ` Andreas Herrmann
2014-01-20 21:29             ` Andreas Herrmann
2014-01-20 21:53       ` [PATCH v2 02/11] iommu/arm-smmu: Introduce iommu_group " Andreas Herrmann
2014-01-20 21:53         ` Andreas Herrmann
2014-01-20 21:56         ` Andreas Herrmann
2014-01-20 21:56           ` Andreas Herrmann
2014-01-20 22:28       ` [PATCH v3 " Andreas Herrmann
2014-01-20 22:28         ` Andreas Herrmann
2014-01-21 17:48         ` Varun Sethi
2014-01-21 17:48           ` Varun Sethi
     [not found]           ` <e92c5fd617fb4068b4ec5de696527ee3-AZ66ij2kwaacCcN9WK45f+O6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-01-22 12:25             ` Will Deacon
2014-01-22 12:25               ` Will Deacon
     [not found]               ` <20140122122550.GA14108-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-22 13:14                 ` Varun Sethi
2014-01-22 13:14                   ` Varun Sethi
2014-01-22 13:40                   ` Will Deacon
2014-01-22 13:40                     ` Will Deacon
     [not found]                     ` <20140122134028.GB14108-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-22 13:54                       ` Varun Sethi
2014-01-22 13:54                         ` Varun Sethi
     [not found]                         ` <aeebc7cf4084486790a5166cf83cb332-AZ66ij2kwaacCcN9WK45f+O6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-01-22 15:33                           ` Will Deacon
2014-01-22 15:33                             ` Will Deacon
     [not found]                             ` <20140122153352.GE14108-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-22 19:07                               ` Varun Sethi
2014-01-22 19:07                                 ` Varun Sethi
     [not found]                                 ` <3d0a888e122f490ba6bbc80b1aaa977c-AZ66ij2kwaacCcN9WK45f+O6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-01-23 19:57                                   ` Andreas Herrmann
2014-01-23 19:57                                     ` Andreas Herrmann
2014-01-28 11:00                                     ` Varun Sethi
2014-01-28 11:00                                       ` Varun Sethi
     [not found]                                       ` <991cc0024ea54cdb964f31de89c0b0ea-AZ66ij2kwaacCcN9WK45f+O6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-01-29 14:14                                         ` Andreas Herrmann
2014-01-29 14:14                                           ` Andreas Herrmann
2014-01-29 19:19                                           ` Varun Sethi
2014-01-29 19:19                                             ` Varun Sethi
2014-01-23 19:24                               ` Andreas Herrmann
2014-01-23 19:24                                 ` Andreas Herrmann
2014-01-24  9:48                                 ` Andreas Herrmann
2014-01-24  9:48                                   ` Andreas Herrmann
2014-01-16 12:44   ` [PATCH 03/11] iommu/arm-smmu: Support buggy implementation where all config accesses are secure Andreas Herrmann
2014-01-16 12:44     ` Andreas Herrmann
2014-01-16 12:44   ` [PATCH 04/11] iommu/arm-smmu: Introduce automatic stream-id-masking Andreas Herrmann
2014-01-16 12:44     ` Andreas Herrmann
     [not found]     ` <1389876263-25759-5-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-22 15:26       ` Will Deacon
2014-01-22 15:26         ` Will Deacon
     [not found]         ` <20140122152622.GD14108-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-22 20:15           ` Andreas Herrmann
2014-01-22 20:15             ` Andreas Herrmann
2014-01-16 12:44   ` [PATCH 05/11] iommu/arm-smmu: Check for duplicate stream IDs when registering master devices Andreas Herrmann
2014-01-16 12:44     ` Andreas Herrmann
     [not found]     ` <1389876263-25759-6-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-22 15:53       ` Will Deacon
2014-01-22 15:53         ` Will Deacon
     [not found]         ` <20140122155302.GF14108-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-23 21:17           ` Andreas Herrmann [this message]
2014-01-23 21:17             ` Andreas Herrmann
2014-01-16 12:44   ` [PATCH 06/11] documentation/iommu: Update description of ARM System MMU binding Andreas Herrmann
2014-01-16 12:44     ` Andreas Herrmann
     [not found]     ` <1389876263-25759-7-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-16 14:31       ` Rob Herring
2014-01-16 14:31         ` Rob Herring
2014-01-16 12:44   ` [PATCH 07/11] iommu/arm-smmu: Set MAX_MASTER_STREAMIDS to MAX_PHANDLE_ARGS Andreas Herrmann
2014-01-16 12:44     ` Andreas Herrmann
2014-01-16 12:44 ` [PATCH 08/11] of: Increase MAX_PHANDLE_ARGS Andreas Herrmann
2014-01-16 12:44   ` Andreas Herrmann
     [not found]   ` <1389876263-25759-9-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-16 14:25     ` Rob Herring
2014-01-16 14:25       ` Rob Herring
     [not found]       ` <CAL_Jsq+fDUYne1OQAd4AeQw-JAoFBf0TCv4YVpy6Vt_UmdkA8A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-17 11:00         ` Andreas Herrmann
2014-01-17 11:00           ` Andreas Herrmann
2014-01-17 11:08     ` [PATCH v2 " Andreas Herrmann
2014-01-17 11:08       ` Andreas Herrmann
2014-01-29 16:11       ` Suravee Suthikulanit
2014-01-29 16:11         ` Suravee Suthikulanit
     [not found]         ` < CAL_JsqLhzp5jUJPA91rNkQ07kCDYCDZLxw8LxxFEVP9b12e1Jw@mail.gmail.com>
     [not found]         ` <52E92842.3000001-5C7GfCeVMHo@public.gmane.org>
2014-01-29 16:57           ` Rob Herring
2014-01-29 16:57             ` Rob Herring
     [not found]             ` <CAL_JsqLhzp5jUJPA91rNkQ07kCDYCDZLxw8LxxFEVP9b12e1Jw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-29 16:59               ` Suravee Suthikulanit
2014-01-29 16:59                 ` Suravee Suthikulanit
     [not found]                 ` <52E93360.1000904-5C7GfCeVMHo@public.gmane.org>
2014-01-29 17:16                   ` Andreas Herrmann
2014-01-29 17:16                     ` Andreas Herrmann
2014-01-29 17:26                     ` Suravee Suthikulanit
2014-01-29 17:26                       ` Suravee Suthikulanit
     [not found]                       ` <52E939CB.1020705-5C7GfCeVMHo@public.gmane.org>
2014-01-29 17:29                         ` Will Deacon
2014-01-29 17:29                           ` Will Deacon
     [not found]                           ` <20140129172932.GQ26622-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-29 17:57                             ` Suravee Suthikulanit
2014-01-29 17:57                               ` Suravee Suthikulanit
     [not found]                               ` <52E940FC.9050602-5C7GfCeVMHo@public.gmane.org>
2014-01-29 18:03                                 ` Will Deacon
2014-01-29 18:03                                   ` Will Deacon
     [not found]                                   ` <20140129180350.GS26622-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-30 22:53                                     ` Suravee Suthikulanit
2014-01-30 22:53                                       ` Suravee Suthikulanit
     [not found]                                       ` <52EAD7EF.3040305-5C7GfCeVMHo@public.gmane.org>
2014-01-31  0:18                                         ` Will Deacon
2014-01-31  0:18                                           ` Will Deacon
2014-01-30 17:45                         ` Andreas Herrmann
2014-01-30 17:45                           ` Andreas Herrmann
2014-01-31 16:24                           ` Rob Herring
2014-01-31 16:24                             ` Rob Herring
     [not found]                             ` <CAL_Jsq+=dm4kPk=e0h_up9=wvED4fd3MBtSNFxm2NEz_yag-uA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-02-03 16:44                               ` Will Deacon
2014-02-03 16:44                                 ` Will Deacon
2014-02-04 17:33                   ` Grant Likely
2014-02-04 17:33                     ` Grant Likely
2014-02-04 17:36       ` Grant Likely
2014-02-04 17:36         ` Grant Likely
2014-01-16 12:44 ` [PATCH 09/11] ARM: dts: Add nodes for SMMUs on Calxeda ECX-2000 Andreas Herrmann
2014-01-16 12:44   ` Andreas Herrmann
     [not found]   ` <1389876263-25759-10-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-16 14:30     ` Rob Herring
2014-01-16 14:30       ` Rob Herring
     [not found]       ` <CAL_JsqK2JUBEvCb-=eHFE_T=2AD0K_+V=NAeijzK2DrCwkaCOA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-17 11:01         ` Andreas Herrmann
2014-01-17 11:01           ` Andreas Herrmann
2014-01-17 11:16     ` [PATCH v2 " Andreas Herrmann
2014-01-17 11:16       ` Andreas Herrmann
2014-01-16 12:44 ` [PATCH 10/11] arm: dma-mapping: Add additional parameters to arm_iommu_create_mapping Andreas Herrmann
2014-01-16 12:44   ` Andreas Herrmann
     [not found]   ` <1389876263-25759-11-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-22 16:01     ` Will Deacon
2014-01-22 16:01       ` Will Deacon
2014-01-16 12:44 ` [PATCH 11/11] arm: dma-mapping: Add support to extend DMA IOMMU mappings Andreas Herrmann
2014-01-16 12:44   ` Andreas Herrmann
     [not found]   ` <1389876263-25759-12-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2014-01-22 16:10     ` Will Deacon
2014-01-22 16:10       ` Will Deacon
     [not found]       ` <20140122161010.GH14108-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-23 21:50         ` Andreas Herrmann
2014-01-23 21:50           ` Andreas Herrmann
2014-01-29 10:57     ` Marek Szyprowski
2014-01-29 10:57       ` Marek Szyprowski
     [not found]       ` <52E8DE7D.5020801-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-01-29 11:05         ` Will Deacon
2014-01-29 11:05           ` Will Deacon
     [not found]           ` <20140129110537.GG26622-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2014-01-29 14:40             ` Andreas Herrmann
2014-01-29 14:40               ` Andreas Herrmann
2014-01-30  8:28               ` Marek Szyprowski
2014-01-30  8:28                 ` Marek Szyprowski
     [not found]                 ` <52EA0D43.1010802-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-01-30  8:44                   ` Andreas Herrmann
2014-01-30  8:44                     ` Andreas Herrmann
2014-01-31 17:23                     ` [PATCH] " Andreas Herrmann
2014-01-31 17:23                       ` Andreas Herrmann

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=20140123211749.GE26399@alberich \
    --to=herrmann.der.user-gm/ye1e23mwn+bqq9rbeug@public.gmane.org \
    --cc=andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=will.deacon-5wv7dgnIgG8@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.