Re: [PATCH v7 0/5] clocksource/timer-econet-en751221: Support irq number per timer
Daniel Lezcano <[email protected]>
| Newsgroups | org.kernel.vger.linux-mips,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 7/31/26 14:02, Caleb James DeLisle wrote:
> This timer appears on both the EcoNet EN751221 (34Kc) and on the
> EN751627 / EN7528 (1004Kc) SoCs. On the 34Kc the interrupt controller
> uses a percpu interrupt while on the others it uses an individual
> IRQ number for each CPU timer. Add support for EN751627 and EN7528.
> Add support for IRQ number for each CPU timer under the
> econet,en751627-timer compatible.
>
> Changes since v6:
> * Rebase to tip/timers/core (base-commit below)
Got this:
In file included from
/home/dlezcano/Work/src/linux/timers/include/asm-generic/bug.h:31,
from
/home/dlezcano/Work/src/linux/timers/arch/arm64/include/asm/bug.h:26,
from
/home/dlezcano/Work/src/linux/timers/arch/arm64/include/asm/pgtable.h:8,
from
/home/dlezcano/Work/src/linux/timers/include/linux/pgtable.h:6,
from
/home/dlezcano/Work/src/linux/timers/arch/arm64/include/asm/io.h:12,
from
/home/dlezcano/Work/src/linux/timers/include/linux/io.h:12,
from
/home/dlezcano/Work/src/linux/timers/drivers/clocksource/timer-econet-en751221.c:8:
/home/dlezcano/Work/src/linux/timers/drivers/clocksource/timer-econet-en751221.c:
In function ‘timer_init’:
/home/dlezcano/Work/src/linux/timers/include/linux/kern_levels.h:5:25:
warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has
type ‘long unsigned int’ [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
/home/dlezcano/Work/src/linux/timers/include/linux/printk.h:483:25:
note: in definition of macro ‘printk_index_wrap’
483 | _p_func(_fmt, ##__VA_ARGS__);
\
| ^~~~
/home/dlezcano/Work/src/linux/timers/include/linux/printk.h:554:9: note:
in expansion of macro ‘printk’
554 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~
/home/dlezcano/Work/src/linux/timers/include/linux/kern_levels.h:11:25:
note: in expansion of macro ‘KERN_SOH’
11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
| ^~~~~~~~
/home/dlezcano/Work/src/linux/timers/include/linux/printk.h:554:16:
note: in expansion of macro ‘KERN_ERR’
554 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~
/home/dlezcano/Work/src/linux/timers/drivers/clocksource/timer-econet-en751221.c:201:17:
note: in expansion of macro ‘pr_err’
201 | pr_err("%pOFn: Too many IRQs max %d got %d\n", np,
| ^~~~~~
/home/dlezcano/Work/src/linux/timers/include/linux/kern_levels.h:5:25:
warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has
type ‘long unsigned int’ [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
/home/dlezcano/Work/src/linux/timers/include/linux/printk.h:483:25:
note: in definition of macro ‘printk_index_wrap’
483 | _p_func(_fmt, ##__VA_ARGS__);
\
| ^~~~
/home/dlezcano/Work/src/linux/timers/include/linux/printk.h:554:9: note:
in expansion of macro ‘printk’
554 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~
/home/dlezcano/Work/src/linux/timers/include/linux/kern_levels.h:11:25:
note: in expansion of macro ‘KERN_SOH’
11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
| ^~~~~~~~
/home/dlezcano/Work/src/linux/timers/include/linux/printk.h:554:16:
note: in expansion of macro ‘KERN_ERR’
554 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~
/home/dlezcano/Work/src/linux/timers/drivers/clocksource/timer-econet-en751221.c:206:17:
note: in expansion of macro ‘pr_err’
206 | pr_err("%pOFn: Too many regs: max %d got %d\n", np,
| ^~~~~~
> Changes since v5:
> * Integrate patch fix refcount leak from:
> Link: https://lore.kernel.org/linux-mips/[email protected]/
> * NULL econet_timer.membase after unmapping
> * NULL check dev->event_handler in case clockevents_config_and_register
> failed to fully register.
> * v5: https://lore.kernel.org/linux-mips/[email protected]/
>
> Changes from v4:
> * Fixed incorrect compatible in DT schema
> * Bracing in out_irq_free if statement
> * I did not move cpuhp_setup_state past the point of no return
> * v4: https://lore.kernel.org/linux-mips/[email protected]
>
> Changes from v3:
> * off-by-one in out_irq_free
> * Gracefully fail if too many address resources are provided in the DT
> * Allow fewer actual timers than num_possible_cpus, as long as they
> never start
> * v3: https://lore.kernel.org/linux-mips/[email protected]
>
> v3 note:
>
> I decided to take this patchset in a slightly different direction from
> v2. There is a certain amount of initialization that once it has run,
> it cannot be reverted in case of error. The original driver init was a
> mixture of revertible and non-revertible code which made it too easy
> for code which is designed with best practices in mind to in fact
> introduce a bug. Therefore I start by making the init process more
> legible but without any business logic changes, then fix a race
> condition by keeping IRQ disabled until after cevt is setup, then
> finally add non-percpu IRQ support.
>
> * v2: https://lore.kernel.org/linux-mips/[email protected]
>
> Changes from v1:
> * Split changes over 3 refactoring patches + main patch
> * Remove driver discussion from dt commit message
> * v1: https://lore.kernel.org/linux-mips/[email protected]/
>
>
> Alexander A. Klimov (1):
> clocksource/timer-econet-en751221: fix refcount leak
>
> Caleb James DeLisle (4):
> dt-bindings: timer: econet: Update EN751627 for multi-IRQ
> clocksource/timer-econet-en751221: Init teardown on error if possible
> clocksource/timer-econet-en751221: Disable IRQ until cevt registered
> clocksource/timer-econet-en751221: Support EN751627 without percpu IRQ
>
> .../bindings/timer/econet,en751221-timer.yaml | 31 +--
> drivers/clocksource/timer-econet-en751221.c | 181 ++++++++++++++----
> 2 files changed, 159 insertions(+), 53 deletions(-)
>
>
> base-commit: ecc330e3096173f433659aa64ab3674d0d48440e