1. 12 Sep, 2022 2 commits
    • Pierre Gondois's avatar
      irqchip/gic-v3-its: Remove cpumask_var_t allocation · f55a9b59
      Pierre Gondois authored
      Running a PREEMPT_RT kernel based on v5.19-rc3-rt4 on an Ampere Altra
      triggers:
      
      [   22.616229] BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:46
      [   22.616239] in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 1884, name: kworker/80:1
      [   22.616243] preempt_count: 3, expected: 0
      [   22.616244] RCU nest depth: 0, expected: 0
      [...]
      [   22.616250] hardirqs last enabled at (33): _raw_spin_unlock_irq (/home/piegon01/linux/./arch/arm64/include/asm/irqflags.h:35)
      [   22.616273] hardirqs last disabled at (34): __schedule (/home/piegon01/linux/kernel/sched/core.c:6432 (discriminator 1))
      [   22.616283] softirqs last enabled at (0): copy_process (/home/piegon01/linux/./include/linux/lockdep.h:191)
      [   22.616297] softirqs last disabled at (0): 0x0
      [   22.616305] Preemption disabled at:
      [   22.616307] __setup_irq (/home/piegon01/linux/kernel/irq/manage.c:1612)
      [   22.616322] CPU: 80 PID: 1884 Comm: kworker/80:1 Tainted: G        W        [...]
      [   22.616328] Hardware name: WIWYNN Mt.Jade Server System B81.03001.0005/Mt.Jade Motherboard, BIOS 1.08.20220218 (SCP: 1.08.20220218) 2022/02/18
      [   22.616333] Workqueue: events work_for_cpu_fn
      [   22.616344] Call trace:
      [...]
      [   22.616403] alloc_cpumask_var_node (/home/piegon01/linux/lib/cpumask.c:115)
      [   22.616414] alloc_cpumask_var (/home/piegon01/linux/lib/cpumask.c:147)
      [   22.616417] its_select_cpu (/home/piegon01/linux/drivers/irqchip/irq-gic-v3-its.c:1580)
      [   22.616428] its_set_affinity (/home/piegon01/linux/drivers/irqchip/irq-gic-v3-its.c:1659)
      [   22.616431] msi_domain_set_affinity (/home/piegon01/linux/kernel/irq/msi.c:501)
      [   22.616440] irq_do_set_affinity (/home/piegon01/linux/kernel/irq/manage.c:276)
      [   22.616443] irq_setup_affinity (/home/piegon01/linux/kernel/irq/manage.c:633)
      [   22.616447] irq_startup (/home/piegon01/linux/kernel/irq/chip.c:280)
      [   22.616453] __setup_irq (/home/piegon01/linux/kernel/irq/manage.c:1777)
      
      Follow the pattern established in commit cba4235e ("genirq: Remove
      mask argument from setup_affinity()") and co to overcome this issue by
      defining a static struct cpumask and protecting it by a raw spinlock.
      
      Since its_select_cpu() can be executed with IRQs enabled or disabled,
      enforce that the cpumask computation is done with interrupts disabled.
      Signed-off-by: default avatarPierre Gondois <pierre.gondois@arm.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20220912141857.1391343-1-pierre.gondois@arm.com
      f55a9b59
    • Antonio Borneo's avatar
      irqchip/stm32-exti: Remove check on always false condition · 8fc7a619
      Antonio Borneo authored
      The field drv_data is assigned during driver's probe, where it's
      already checked to be not NULL.
      
      Remove the always false check '!host_data->drv_data'.
      
      This fixes a warning "variable dereferenced before check" detected
      by '0-DAY CI Kernel Test Service'.
      
      Fixes: c2974933 ("irqchip/stm32-exti: Simplify irq description table")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Link: https://lore.kernel.org/lkml/202208131739.gJvcs9ls-lkp@intel.com/Signed-off-by: default avatarAntonio Borneo <antonio.borneo@foss.st.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20220817125758.5975-1-antonio.borneo@foss.st.com
      8fc7a619
  2. 28 Aug, 2022 25 commits
  3. 27 Aug, 2022 13 commits