All of lore.kernel.org
 help / color / mirror / Atom feed
From: catalin.marinas@arm.com (Catalin Marinas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 2/5] irqchip: gic: use dmb ishst instead of dsb when raising a softirq
Date: Wed, 19 Feb 2014 12:32:28 +0000	[thread overview]
Message-ID: <20140219123228.GH30457@arm.com> (raw)
In-Reply-To: <1392812917-29302-2-git-send-email-will.deacon@arm.com>

On Wed, Feb 19, 2014 at 12:28:34PM +0000, Will Deacon wrote:
> When sending an SGI to another CPU, we require a barrier to ensure that
> any pending stores to normal memory are made visible to the recipient
> before the interrupt arrives.
> 
> Rather than use a vanilla dsb() (which will soon cause an assembly error
> on arm64) before the writel_relaxed, we can instead use dsb(ishst),
> since we just need to ensure that any pending normal writes are visible
> within the inner-shareable domain before we poke the GIC.
> 
> With this observation, we can then further weaken the barrier to a
> dmb(ishst), since other CPUs in the inner-shareable domain must observe
> the write to the distributor before the SGI is generated.
> 
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Marc Zyngier <marc.zyngier@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  drivers/irqchip/irq-gic.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
> index 341c6016812d..500e533b9648 100644
> --- a/drivers/irqchip/irq-gic.c
> +++ b/drivers/irqchip/irq-gic.c
> @@ -661,9 +661,9 @@ void gic_raise_softirq(const struct cpumask *mask, unsigned int irq)
>  
>  	/*
>  	 * Ensure that stores to Normal memory are visible to the
> -	 * other CPUs before issuing the IPI.
> +	 * other CPUs before they observe us issuing the IPI.
>  	 */
> -	dsb();
> +	dmb(ishst);

Oh well ;)

Acked-by: Catalin Marinas <catalin.marinas@arm.com>

  reply	other threads:[~2014-02-19 12:32 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-19 12:28 [PATCH v3 1/5] arm64: barriers: make use of barrier options with explicit barriers Will Deacon
2014-02-19 12:28 ` [PATCH v3 2/5] irqchip: gic: use dmb ishst instead of dsb when raising a softirq Will Deacon
2014-02-19 12:32   ` Catalin Marinas [this message]
2014-02-19 13:21   ` Marc Zyngier
2014-02-19 12:28 ` [PATCH v3 3/5] iommu/arm-smmu: provide option to dsb macro when publishing tables Will Deacon
2014-02-19 12:28 ` [PATCH v3 4/5] arm64: barriers: wire up new barrier options Will Deacon
2014-02-19 12:28 ` [PATCH v3 5/5] arm64: barriers: use barrier() instead of smp_mb() when !SMP Will Deacon

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=20140219123228.GH30457@arm.com \
    --to=catalin.marinas@arm.com \
    --cc=linux-arm-kernel@lists.infradead.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.