All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fabien DESSENNE <fabien.dessenne@st.com>
To: Marc Zyngier <marc.zyngier@arm.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jason Cooper <jason@lakedaemon.net>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Alexandre TORGUE <alexandre.torgue@st.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-stm32@st-md-mailman.stormreply.com" 
	<linux-stm32@st-md-mailman.stormreply.com>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>
Cc: Benjamin GAIGNARD <benjamin.gaignard@st.com>
Subject: RE: [PATCH] irqchip: stm32: don't set rising configuration registers at init
Date: Thu, 7 Mar 2019 17:57:45 +0000	[thread overview]
Message-ID: <d6e4ee19fb014f0b95a6ad636e3bffa8@SFHDAG5NODE3.st.com> (raw)
In-Reply-To: <bd9a176c-42cc-1238-0578-4c994c864151@arm.com>



> -----Original Message-----
> From: Marc Zyngier <marc.zyngier@arm.com>
> Sent: jeudi 7 mars 2019 18:46
> To: Fabien DESSENNE <fabien.dessenne@st.com>; Thomas Gleixner
> <tglx@linutronix.de>; Jason Cooper <jason@lakedaemon.net>; Maxime Coquelin
> <mcoquelin.stm32@gmail.com>; Alexandre TORGUE
> <alexandre.torgue@st.com>; linux-kernel@vger.kernel.org; linux-stm32@st-md-
> mailman.stormreply.com; linux-arm-kernel@lists.infradead.org
> Cc: Benjamin GAIGNARD <benjamin.gaignard@st.com>
> Subject: Re: [PATCH] irqchip: stm32: don't set rising configuration registers at init
> 
> On 07/03/2019 17:24, Fabien DESSENNE wrote:
> > Hi
> >
> >
> >> -----Original Message-----
> >> From: Marc Zyngier <marc.zyngier@arm.com>
> >> Sent: jeudi 7 mars 2019 17:40
> >> To: Fabien DESSENNE <fabien.dessenne@st.com>; Thomas Gleixner
> >> <tglx@linutronix.de>; Jason Cooper <jason@lakedaemon.net>; Maxime
> >> Coquelin <mcoquelin.stm32@gmail.com>; Alexandre TORGUE
> >> <alexandre.torgue@st.com>; linux-kernel@vger.kernel.org;
> >> linux-stm32@st-md- mailman.stormreply.com;
> >> linux-arm-kernel@lists.infradead.org
> >> Cc: Benjamin GAIGNARD <benjamin.gaignard@st.com>
> >> Subject: Re: [PATCH] irqchip: stm32: don't set rising configuration
> >> registers at init
> >>
> >> On 07/03/2019 16:15, Fabien Dessenne wrote:
> >>> The rising configuration status register (rtsr) is not banked.
> >>> As it is shared with the co-processor, it should not be written at
> >>> probe time, else the co-processor configuration will be lost.
> >>>
> >>> Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com>
> >>
> >> Fixes:?
> >>
> >>> ---
> >>>  drivers/irqchip/irq-stm32-exti.c | 5 -----
> >>>  1 file changed, 5 deletions(-)
> >>>
> >>> diff --git a/drivers/irqchip/irq-stm32-exti.c
> >>> b/drivers/irqchip/irq-stm32-exti.c
> >>> index 6edfd4b..ff8a84f 100644
> >>> --- a/drivers/irqchip/irq-stm32-exti.c
> >>> +++ b/drivers/irqchip/irq-stm32-exti.c
> >>> @@ -716,7 +716,6 @@ stm32_exti_chip_data
> >>> *stm32_exti_chip_init(struct
> >> stm32_exti_host_data *h_data,
> >>>  	const struct stm32_exti_bank *stm32_bank;
> >>>  	struct stm32_exti_chip_data *chip_data;
> >>>  	void __iomem *base = h_data->base;
> >>> -	u32 irqs_mask;
> >>>
> >>>  	stm32_bank = h_data->drv_data->exti_banks[bank_idx];
> >>>  	chip_data = &h_data->chips_data[bank_idx]; @@ -725,10 +724,6 @@
> >>> stm32_exti_chip_data *stm32_exti_chip_init(struct
> >>> stm32_exti_host_data *h_data,
> >>>
> >>>  	raw_spin_lock_init(&chip_data->rlock);
> >>>
> >>> -	/* Determine number of irqs supported */
> >>> -	writel_relaxed(~0UL, base + stm32_bank->rtsr_ofst);
> >>> -	irqs_mask = readl_relaxed(base + stm32_bank->rtsr_ofst);
> >>> -
> >>
> >> And I guess you don't need to find out the number of supported IRQs?
> >
> > That's correct, this informed is useless : irqs_mask is never used (it
> > used to be output in a log for debug purpose.and the log has been
> > removed)
> >
> >
> >>
> >> Also, a handful of lines down, you're writing again to the same
> >> register. Why isn't that a problem?
> >
> > It's obviously a problem : another patch is missing, I am going to add it in v2.
> > Thanks for pointing this out!
> 
> You are also happily writing to that register in other places via stm32_exti_set_bit
> and co. All that is done without any cooperation with the coprocessor (whatever
> that is...), so I really wonder if it all works by magic or luck...

There is certainly some magic and luck! But there is a bit more : the access to both rtsr and ftsr regs are controlled with a call to stm32_exti_hwspin_lock() which uses an HWSpinlock shared with the coprocessor.
The other registers are not accessed by the coprocessor, hence are not hwspinlock-protected.


> 
> Thanks,
> 
> 	M.
> --
> Jazz is not dead. It just smells funny...

WARNING: multiple messages have this Message-ID (diff)
From: Fabien DESSENNE <fabien.dessenne@st.com>
To: Marc Zyngier <marc.zyngier@arm.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	 Jason Cooper <jason@lakedaemon.net>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Alexandre TORGUE <alexandre.torgue@st.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-stm32@st-md-mailman.stormreply.com"
	<linux-stm32@st-md-mailman.stormreply.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Cc: Benjamin GAIGNARD <benjamin.gaignard@st.com>
Subject: RE: [PATCH] irqchip: stm32: don't set rising configuration registers at init
Date: Thu, 7 Mar 2019 17:57:45 +0000	[thread overview]
Message-ID: <d6e4ee19fb014f0b95a6ad636e3bffa8@SFHDAG5NODE3.st.com> (raw)
In-Reply-To: <bd9a176c-42cc-1238-0578-4c994c864151@arm.com>



> -----Original Message-----
> From: Marc Zyngier <marc.zyngier@arm.com>
> Sent: jeudi 7 mars 2019 18:46
> To: Fabien DESSENNE <fabien.dessenne@st.com>; Thomas Gleixner
> <tglx@linutronix.de>; Jason Cooper <jason@lakedaemon.net>; Maxime Coquelin
> <mcoquelin.stm32@gmail.com>; Alexandre TORGUE
> <alexandre.torgue@st.com>; linux-kernel@vger.kernel.org; linux-stm32@st-md-
> mailman.stormreply.com; linux-arm-kernel@lists.infradead.org
> Cc: Benjamin GAIGNARD <benjamin.gaignard@st.com>
> Subject: Re: [PATCH] irqchip: stm32: don't set rising configuration registers at init
> 
> On 07/03/2019 17:24, Fabien DESSENNE wrote:
> > Hi
> >
> >
> >> -----Original Message-----
> >> From: Marc Zyngier <marc.zyngier@arm.com>
> >> Sent: jeudi 7 mars 2019 17:40
> >> To: Fabien DESSENNE <fabien.dessenne@st.com>; Thomas Gleixner
> >> <tglx@linutronix.de>; Jason Cooper <jason@lakedaemon.net>; Maxime
> >> Coquelin <mcoquelin.stm32@gmail.com>; Alexandre TORGUE
> >> <alexandre.torgue@st.com>; linux-kernel@vger.kernel.org;
> >> linux-stm32@st-md- mailman.stormreply.com;
> >> linux-arm-kernel@lists.infradead.org
> >> Cc: Benjamin GAIGNARD <benjamin.gaignard@st.com>
> >> Subject: Re: [PATCH] irqchip: stm32: don't set rising configuration
> >> registers at init
> >>
> >> On 07/03/2019 16:15, Fabien Dessenne wrote:
> >>> The rising configuration status register (rtsr) is not banked.
> >>> As it is shared with the co-processor, it should not be written at
> >>> probe time, else the co-processor configuration will be lost.
> >>>
> >>> Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com>
> >>
> >> Fixes:?
> >>
> >>> ---
> >>>  drivers/irqchip/irq-stm32-exti.c | 5 -----
> >>>  1 file changed, 5 deletions(-)
> >>>
> >>> diff --git a/drivers/irqchip/irq-stm32-exti.c
> >>> b/drivers/irqchip/irq-stm32-exti.c
> >>> index 6edfd4b..ff8a84f 100644
> >>> --- a/drivers/irqchip/irq-stm32-exti.c
> >>> +++ b/drivers/irqchip/irq-stm32-exti.c
> >>> @@ -716,7 +716,6 @@ stm32_exti_chip_data
> >>> *stm32_exti_chip_init(struct
> >> stm32_exti_host_data *h_data,
> >>>  	const struct stm32_exti_bank *stm32_bank;
> >>>  	struct stm32_exti_chip_data *chip_data;
> >>>  	void __iomem *base = h_data->base;
> >>> -	u32 irqs_mask;
> >>>
> >>>  	stm32_bank = h_data->drv_data->exti_banks[bank_idx];
> >>>  	chip_data = &h_data->chips_data[bank_idx]; @@ -725,10 +724,6 @@
> >>> stm32_exti_chip_data *stm32_exti_chip_init(struct
> >>> stm32_exti_host_data *h_data,
> >>>
> >>>  	raw_spin_lock_init(&chip_data->rlock);
> >>>
> >>> -	/* Determine number of irqs supported */
> >>> -	writel_relaxed(~0UL, base + stm32_bank->rtsr_ofst);
> >>> -	irqs_mask = readl_relaxed(base + stm32_bank->rtsr_ofst);
> >>> -
> >>
> >> And I guess you don't need to find out the number of supported IRQs?
> >
> > That's correct, this informed is useless : irqs_mask is never used (it
> > used to be output in a log for debug purpose.and the log has been
> > removed)
> >
> >
> >>
> >> Also, a handful of lines down, you're writing again to the same
> >> register. Why isn't that a problem?
> >
> > It's obviously a problem : another patch is missing, I am going to add it in v2.
> > Thanks for pointing this out!
> 
> You are also happily writing to that register in other places via stm32_exti_set_bit
> and co. All that is done without any cooperation with the coprocessor (whatever
> that is...), so I really wonder if it all works by magic or luck...

There is certainly some magic and luck! But there is a bit more : the access to both rtsr and ftsr regs are controlled with a call to stm32_exti_hwspin_lock() which uses an HWSpinlock shared with the coprocessor.
The other registers are not accessed by the coprocessor, hence are not hwspinlock-protected.


> 
> Thanks,
> 
> 	M.
> --
> Jazz is not dead. It just smells funny...
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-03-07 17:58 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-07 16:15 [PATCH] irqchip: stm32: don't set rising configuration registers at init Fabien Dessenne
2019-03-07 16:15 ` Fabien Dessenne
2019-03-07 16:39 ` Marc Zyngier
2019-03-07 16:39   ` Marc Zyngier
2019-03-07 17:24   ` Fabien DESSENNE
2019-03-07 17:24     ` Fabien DESSENNE
2019-03-07 17:46     ` Marc Zyngier
2019-03-07 17:46       ` Marc Zyngier
2019-03-07 17:57       ` Fabien DESSENNE [this message]
2019-03-07 17:57         ` Fabien DESSENNE

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=d6e4ee19fb014f0b95a6ad636e3bffa8@SFHDAG5NODE3.st.com \
    --to=fabien.dessenne@st.com \
    --cc=alexandre.torgue@st.com \
    --cc=benjamin.gaignard@st.com \
    --cc=jason@lakedaemon.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=marc.zyngier@arm.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=tglx@linutronix.de \
    /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.