All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Herrmann <andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
To: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>
Cc: "iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
	<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
	Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH 5/9] iommu/arm-smmu: Clear global and context bank fault status registers
Date: Mon, 30 Sep 2013 15:54:01 +0200	[thread overview]
Message-ID: <20130930135401.GV3315@alberich> (raw)
In-Reply-To: <20130927085255.GC8319-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>

On Fri, Sep 27, 2013 at 04:52:56AM -0400, Will Deacon wrote:
> On Thu, Sep 26, 2013 at 11:36:17PM +0100, Andreas Herrmann wrote:
> > After reset these registers have unknown values.
> > This might cause problems when evaluating SMMU_GFSR and/or SMMU_CB_FSR
> > in handlers for combined interrupts.
> > 
> > Signed-off-by: Andreas Herrmann <andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
> > ---
> >  drivers/iommu/arm-smmu.c |    6 ++++++
> >  1 file changed, 6 insertions(+)
> 
> <pedantry> Your capitalisation of fsr vs FSR is inconsistent </pedantry>
> 
> > diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
> > index de9dd60..9d31ad9 100644
> > --- a/drivers/iommu/arm-smmu.c
> > +++ b/drivers/iommu/arm-smmu.c
> > @@ -642,6 +642,9 @@ static void arm_smmu_init_context_bank(struct arm_smmu_domain *smmu_domain)
> >  	stage1 = root_cfg->cbar != CBAR_TYPE_S2_TRANS;
> >  	cb_base = ARM_SMMU_CB_BASE(smmu) + ARM_SMMU_CB(smmu, root_cfg->cbndx);
> >  
> > +	/* clear fsr */
> > +	writel_relaxed(0xffffffff, cb_base + ARM_SMMU_CB_FSR);
> 
> I think this is too late, since we've already requested the IRQ line for
> this context bank by the time we get here. There are two options (afaict):
> 
>  (1) Clear the CB FSRs during probe *and* during domain destruction
> 
>  (2) Delay request_irq until after the context bank has been initialised

I'd do kind of (2) and clear the FSR of that context bank before
request_irq is called.
 
> Also, rather than 0xffffffff, FSR_IGN | FSR_FAULT is probably clearer.

Yep.

> >  	/* CBAR */
> >  	reg = root_cfg->cbar;
> >  	if (smmu->version == 1)
> > @@ -1564,6 +1567,9 @@ static void arm_smmu_device_reset(struct arm_smmu_device *smmu)
> >  	int i = 0;
> >  	u32 scr0 = readl_relaxed(gr0_base + ARM_SMMU_GR0_sCR0);
> >  
> > +	/* clear global FSRs */
> > +	writel(0xffffffff, gr0_base + ARM_SMMU_GR0_sGFSR);
> 
> For this guy, a read of the register and a write back is probably better than
> writing 1s to all the reserved bits.

Ok.

Andreas

WARNING: multiple messages have this Message-ID (diff)
From: andreas.herrmann@calxeda.com (Andreas Herrmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/9] iommu/arm-smmu: Clear global and context bank fault status registers
Date: Mon, 30 Sep 2013 15:54:01 +0200	[thread overview]
Message-ID: <20130930135401.GV3315@alberich> (raw)
In-Reply-To: <20130927085255.GC8319@mudshark.cambridge.arm.com>

On Fri, Sep 27, 2013 at 04:52:56AM -0400, Will Deacon wrote:
> On Thu, Sep 26, 2013 at 11:36:17PM +0100, Andreas Herrmann wrote:
> > After reset these registers have unknown values.
> > This might cause problems when evaluating SMMU_GFSR and/or SMMU_CB_FSR
> > in handlers for combined interrupts.
> > 
> > Signed-off-by: Andreas Herrmann <andreas.herrmann@calxeda.com>
> > ---
> >  drivers/iommu/arm-smmu.c |    6 ++++++
> >  1 file changed, 6 insertions(+)
> 
> <pedantry> Your capitalisation of fsr vs FSR is inconsistent </pedantry>
> 
> > diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
> > index de9dd60..9d31ad9 100644
> > --- a/drivers/iommu/arm-smmu.c
> > +++ b/drivers/iommu/arm-smmu.c
> > @@ -642,6 +642,9 @@ static void arm_smmu_init_context_bank(struct arm_smmu_domain *smmu_domain)
> >  	stage1 = root_cfg->cbar != CBAR_TYPE_S2_TRANS;
> >  	cb_base = ARM_SMMU_CB_BASE(smmu) + ARM_SMMU_CB(smmu, root_cfg->cbndx);
> >  
> > +	/* clear fsr */
> > +	writel_relaxed(0xffffffff, cb_base + ARM_SMMU_CB_FSR);
> 
> I think this is too late, since we've already requested the IRQ line for
> this context bank by the time we get here. There are two options (afaict):
> 
>  (1) Clear the CB FSRs during probe *and* during domain destruction
> 
>  (2) Delay request_irq until after the context bank has been initialised

I'd do kind of (2) and clear the FSR of that context bank before
request_irq is called.
 
> Also, rather than 0xffffffff, FSR_IGN | FSR_FAULT is probably clearer.

Yep.

> >  	/* CBAR */
> >  	reg = root_cfg->cbar;
> >  	if (smmu->version == 1)
> > @@ -1564,6 +1567,9 @@ static void arm_smmu_device_reset(struct arm_smmu_device *smmu)
> >  	int i = 0;
> >  	u32 scr0 = readl_relaxed(gr0_base + ARM_SMMU_GR0_sCR0);
> >  
> > +	/* clear global FSRs */
> > +	writel(0xffffffff, gr0_base + ARM_SMMU_GR0_sGFSR);
> 
> For this guy, a read of the register and a write back is probably better than
> writing 1s to all the reserved bits.

Ok.

Andreas

  parent reply	other threads:[~2013-09-30 13:54 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-26 22:36 [PATCH 0/9] arm-smmu: Misc changes/Calxeda ECX-2000 support Andreas Herrmann
2013-09-26 22:36 ` Andreas Herrmann
     [not found] ` <1380234982-1677-1-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2013-09-26 22:36   ` [PATCH 1/9] iommu/arm-smmu: Switch to arch_initcall for driver registration Andreas Herrmann
2013-09-26 22:36     ` Andreas Herrmann
     [not found]     ` <1380234982-1677-2-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2013-09-27  8:58       ` Will Deacon
2013-09-27  8:58         ` Will Deacon
2013-09-27  9:24         ` Andreas Herrmann
2013-09-27  9:24           ` Andreas Herrmann
2013-09-27 10:02           ` [PATCH] iommu/arm-smmu: Switch to subsys_initcall " Andreas Herrmann
2013-09-27 10:02             ` Andreas Herrmann
2013-09-26 22:36   ` [PATCH 2/9] iommu/arm-smmu: Calculate SMMU_CB_BASE from smmu register values Andreas Herrmann
2013-09-26 22:36     ` Andreas Herrmann
     [not found]     ` <1380234982-1677-3-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2013-09-27  9:51       ` Will Deacon
2013-09-27  9:51         ` Will Deacon
     [not found]         ` <20130927095157.GA9057-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-27 10:23           ` Andreas Herrmann
2013-09-27 10:23             ` Andreas Herrmann
2013-09-27 10:51             ` Will Deacon
2013-09-27 10:51               ` Will Deacon
     [not found]               ` <20130927105153.GG9057-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-27 11:05                 ` Andreas Herrmann
2013-09-27 11:05                   ` Andreas Herrmann
2013-09-27 11:08                   ` Will Deacon
2013-09-27 11:08                     ` Will Deacon
     [not found]                     ` <20130927110832.GC9520-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-27 14:33                       ` [PATCH] iommu/arm-smmu: Refine check for proper size of mapped region Andreas Herrmann
2013-09-27 14:33                         ` Andreas Herrmann
2013-09-26 22:36   ` [PATCH 3/9] ARM: dma-mapping: Always pass proper prot flags to iommu_map() Andreas Herrmann
2013-09-26 22:36     ` Andreas Herrmann
     [not found]     ` <1380234982-1677-4-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2013-09-27  8:35       ` Will Deacon
2013-09-27  8:35         ` Will Deacon
2013-09-30 13:40       ` Marek Szyprowski
2013-09-30 13:40         ` Marek Szyprowski
2013-09-26 22:36   ` [PATCH 4/9] iommu/arm-smmu: Check for num_context_irqs > 0 to avoid divide by zero exception Andreas Herrmann
2013-09-26 22:36     ` Andreas Herrmann
     [not found]     ` <1380234982-1677-5-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2013-09-27  8:41       ` Will Deacon
2013-09-27  8:41         ` Will Deacon
     [not found]         ` <20130927084154.GB8319-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-27  9:03           ` Andreas Herrmann
2013-09-27  9:03             ` Andreas Herrmann
2013-09-27 10:23             ` Will Deacon
2013-09-27 10:23               ` Will Deacon
     [not found]               ` <20130927102307.GE9057-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-27 10:39                 ` Andreas Herrmann
2013-09-27 10:39                   ` Andreas Herrmann
2013-09-27 10:48                   ` Will Deacon
2013-09-27 10:48                     ` Will Deacon
     [not found]                     ` <20130927104802.GF9057-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-27 11:07                       ` Andreas Herrmann
2013-09-27 11:07                         ` Andreas Herrmann
2013-09-27 14:30                         ` [PATCH] " Andreas Herrmann
2013-09-27 14:30                           ` Andreas Herrmann
2013-09-26 22:36   ` [PATCH 5/9] iommu/arm-smmu: Clear global and context bank fault status registers Andreas Herrmann
2013-09-26 22:36     ` Andreas Herrmann
     [not found]     ` <1380234982-1677-6-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2013-09-27  8:52       ` Will Deacon
2013-09-27  8:52         ` Will Deacon
     [not found]         ` <20130927085255.GC8319-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-30 13:54           ` Andreas Herrmann [this message]
2013-09-30 13:54             ` Andreas Herrmann
2013-09-30 13:56             ` [PATCH] " Andreas Herrmann
2013-09-30 13:56               ` Andreas Herrmann
2013-09-30 16:06               ` Will Deacon
2013-09-30 16:06                 ` Will Deacon
     [not found]                 ` <20130930160615.GG26036-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-30 17:17                   ` Andreas Herrmann
2013-09-30 17:17                     ` Andreas Herrmann
2013-09-30 18:30                     ` Will Deacon
2013-09-30 18:30                       ` Will Deacon
     [not found]                       ` <20130930183006.GK26036-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-30 21:06                         ` Andreas Herrmann
2013-09-30 21:06                           ` Andreas Herrmann
2013-09-26 22:36   ` [PATCH 6/9] iommu/arm-smmu: Support buggy implemenations where all config accesses are secure Andreas Herrmann
2013-09-26 22:36     ` Andreas Herrmann
     [not found]     ` <1380234982-1677-7-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2013-09-27 13:05       ` Will Deacon
2013-09-27 13:05         ` Will Deacon
     [not found]         ` <20130927130527.GH9520-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-27 13:48           ` Andreas Herrmann
2013-09-27 13:48             ` Andreas Herrmann
2013-09-26 22:36   ` [PATCH 7/9] iommu/arm-smmu: Add function that conditionally isolates all masters of all SMMUs Andreas Herrmann
2013-09-26 22:36     ` Andreas Herrmann
     [not found]     ` <1380234982-1677-8-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2013-09-27 13:00       ` Will Deacon
2013-09-27 13:00         ` Will Deacon
     [not found]         ` <20130927130001.GF9520-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-10-07 15:42           ` Andreas Herrmann
2013-10-07 15:42             ` Andreas Herrmann
2013-10-08 10:43             ` Will Deacon
2013-10-08 10:43               ` Will Deacon
2013-09-26 22:36   ` [PATCH 8/9] iommu/arm-smmu: Introduce a default fault handler Andreas Herrmann
2013-09-26 22:36     ` Andreas Herrmann
     [not found]     ` <1380234982-1677-9-git-send-email-andreas.herrmann-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>
2013-09-27 10:09       ` Will Deacon
2013-09-27 10:09         ` Will Deacon
     [not found]         ` <20130927100902.GD9057-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-09-27 10:45           ` Andreas Herrmann
2013-09-27 10:45             ` Andreas Herrmann
2013-09-27 21:22             ` [PATCH] iommu/arm-smmu: Print context fault information Andreas Herrmann
2013-09-27 21:22               ` Andreas Herrmann
2013-09-26 22:36   ` [PATCH 9/9] ARM: dts: Add nodes for SMMUs on Calxeda ECX-2000 Andreas Herrmann
2013-09-26 22:36     ` 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=20130930135401.GV3315@alberich \
    --to=andreas.herrmann-bsgfqqb8/dxbdgjk7y7tuq@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=robherring2-Re5JQEeQqe8AvxtiuMwx3w@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.