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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.