In message: [linux-yocto][v5.15/standard/preempt-rt/sdkv5.15/xlnx-soc][PATCH] 
driver: soc: xilinx: rename cpu_number1 to dummy_cpu_number
on 17/01/2024 [email protected] wrote:

> From: Quanyang Wang <[email protected]>
> 
> The per cpu variable cpu_number1 is passed to xlnx_event_handler as
> argument "dev_id", but is not used in this function. So drop the
> initialization of this variable and rename it to dummy_cpu_number.
> This patch is to fix the following calltrace when the kernel option
> CONFIG_DEBUG_ATOMIC_SLEEP is enabled:
> 
>     BUG: sleeping function called from invalid context at 
> include/linux/sched/mm.h:274
>     in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1, name: swapper/0
>     preempt_count: 1, expected: 0
>     CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.1.0 #53
>     Hardware name: Xilinx Versal vmk180 Eval board rev1.1 (QSPI) (DT)
>     Call trace:
>      dump_backtrace+0xd0/0xe0
>      show_stack+0x18/0x40
>      dump_stack_lvl+0x7c/0xa0
>      dump_stack+0x18/0x34
>      __might_resched+0x10c/0x140
>      __might_sleep+0x4c/0xa0
>      __kmem_cache_alloc_node+0xf4/0x168
>      kmalloc_trace+0x28/0x38
>      __request_percpu_irq+0x74/0x138
>      xlnx_event_manager_probe+0xf8/0x298
>      platform_probe+0x68/0xd8
> 
> Signed-off-by: Quanyang Wang <[email protected]>
> ---
> Hi Bruce,
> Would you please help merge this patch to the branches:
>       v5.15/standard/preempt-rt/sdkv5.15/xlnx-soc
>       v5.15/standard/sdkv5.15/xlnx-soc

merged.

Bruce


> Thanks,
> Quanyang
> ---
>  drivers/soc/xilinx/xlnx_event_manager.c | 14 +++-----------
>  1 file changed, 3 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/soc/xilinx/xlnx_event_manager.c 
> b/drivers/soc/xilinx/xlnx_event_manager.c
> index cf152eb58d87a..1ab3486e64f95 100644
> --- a/drivers/soc/xilinx/xlnx_event_manager.c
> +++ b/drivers/soc/xilinx/xlnx_event_manager.c
> @@ -20,7 +20,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/slab.h>
>  
> -static DEFINE_PER_CPU_READ_MOSTLY(int, cpu_number1);
> +static DEFINE_PER_CPU_READ_MOSTLY(int, dummy_cpu_number);
>  
>  static int virq_sgi;
>  static int event_manager_availability = -EACCES;
> @@ -552,7 +552,6 @@ static void xlnx_disable_percpu_irq(void *data)
>  static int xlnx_event_init_sgi(struct platform_device *pdev)
>  {
>       int ret = 0;
> -     int cpu;
>       /*
>        * IRQ related structures are used for the following:
>        * for each SGI interrupt ensure its mapped by GIC IRQ domain
> @@ -589,11 +588,8 @@ static int xlnx_event_init_sgi(struct platform_device 
> *pdev)
>       sgi_fwspec.param[0] = sgi_num;
>       virq_sgi = irq_create_fwspec_mapping(&sgi_fwspec);
>  
> -     cpu = get_cpu();
> -     per_cpu(cpu_number1, cpu) = cpu;
>       ret = request_percpu_irq(virq_sgi, xlnx_event_handler, 
> "xlnx_event_mgmt",
> -                              &cpu_number1);
> -     put_cpu();
> +                              &dummy_cpu_number);
>  
>       WARN_ON(ret);
>       if (ret) {
> @@ -609,16 +605,12 @@ static int xlnx_event_init_sgi(struct platform_device 
> *pdev)
>  
>  static void xlnx_event_cleanup_sgi(struct platform_device *pdev)
>  {
> -     int cpu = smp_processor_id();
> -
> -     per_cpu(cpu_number1, cpu) = cpu;
> -
>       cpuhp_remove_state(CPUHP_AP_ONLINE_DYN);
>  
>       on_each_cpu(xlnx_disable_percpu_irq, NULL, 1);
>  
>       irq_clear_status_flags(virq_sgi, IRQ_PER_CPU);
> -     free_percpu_irq(virq_sgi, &cpu_number1);
> +     free_percpu_irq(virq_sgi, &dummy_cpu_number);
>       irq_dispose_mapping(virq_sgi);
>  }
>  
> -- 
> 2.36.1
> 
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#13499): 
https://lists.yoctoproject.org/g/linux-yocto/message/13499
Mute This Topic: https://lists.yoctoproject.org/mt/103780752/21656
Group Owner: [email protected]
Unsubscribe: 
https://lists.yoctoproject.org/g/linux-yocto/leave/6687884/21656/624485779/xyzzy
 [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to