diff mbox series

[v5,04/11] irqchip/mips-gic: Support multi-cluster in for_each_online_cpu_gic()

Message ID 20240711082656.1889440-5-arikalo@gmail.com (mailing list archive)
State Superseded
Headers show
Series MIPS: Support I6500 multi-cluster configuration | expand

Commit Message

Aleksandar Rikalo July 11, 2024, 8:26 a.m. UTC
From: Paul Burton <paulburton@kernel.org>

Use CM's GCR_CL_REDIRECT register to access registers in remote clusters,
so users of gic_with_each_online_cpu() gain support for multi-cluster with
no further changes.

Signed-off-by: Paul Burton <paulburton@kernel.org>
Signed-off-by: Chao-ying Fu <cfu@wavecomp.com>
Signed-off-by: Dragan Mladjenovic <dragan.mladjenovic@syrmia.com>
Signed-off-by: Aleksandar Rikalo <arikalo@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Serge Semin <fancer.lancer@gmail.com>
---
 drivers/irqchip/irq-mips-gic.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

kernel test robot July 12, 2024, 4:38 a.m. UTC | #1
Hi Aleksandar,

kernel test robot noticed the following build warnings:

[auto build test WARNING on tip/irq/core]
[also build test WARNING on tip/timers/core linus/master v6.10-rc7]
[cannot apply to daniel-lezcano/clockevents/next next-20240711]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Aleksandar-Rikalo/MIPS-CPS-Add-a-couple-of-multi-cluster-utility-functions/20240711-164850
base:   tip/irq/core
patch link:    https://lore.kernel.org/r/20240711082656.1889440-5-arikalo%40gmail.com
patch subject: [PATCH v5 04/11] irqchip/mips-gic: Support multi-cluster in for_each_online_cpu_gic()
config: mips-allnoconfig (https://download.01.org/0day-ci/archive/20240712/202407121224.kUAil6pa-lkp@intel.com/config)
compiler: mips-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240712/202407121224.kUAil6pa-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407121224.kUAil6pa-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/irqchip/irq-mips-gic.c:102: warning: expecting prototype for for_each_online_cpu_gic(). Prototype was for gic_unlock_cluster() instead


vim +102 drivers/irqchip/irq-mips-gic.c

    90	
    91	/**
    92	 * for_each_online_cpu_gic() - Iterate over online CPUs, access local registers
    93	 * @cpu: An integer variable to hold the current CPU number
    94	 * @gic_lock: A pointer to raw spin lock used as a guard
    95	 *
    96	 * Iterate over online CPUs & configure the other/redirect register region to
    97	 * access each CPUs GIC local register block, which can be accessed from the
    98	 * loop body using read_gic_vo_*() or write_gic_vo_*() accessor functions or
    99	 * their derivatives.
   100	 */
   101	static inline void gic_unlock_cluster(void)
 > 102	{
   103		if (mips_cps_multicluster_cpus())
   104			mips_cm_unlock_other();
   105	}
   106
diff mbox series

Patch

diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c
index 6c7a7d2f0438..e7358d3f4e74 100644
--- a/drivers/irqchip/irq-mips-gic.c
+++ b/drivers/irqchip/irq-mips-gic.c
@@ -98,10 +98,17 @@  static int __gic_with_next_online_cpu(int prev)
  * loop body using read_gic_vo_*() or write_gic_vo_*() accessor functions or
  * their derivatives.
  */
+static inline void gic_unlock_cluster(void)
+{
+	if (mips_cps_multicluster_cpus())
+		mips_cm_unlock_other();
+}
+
 #define for_each_online_cpu_gic(cpu, gic_lock)		\
 	guard(raw_spinlock_irqsave)(gic_lock);		\
 	for ((cpu) = __gic_with_next_online_cpu(-1);	\
 	     (cpu) < nr_cpu_ids;			\
+	     gic_unlock_cluster(),			\
 	     (cpu) = __gic_with_next_online_cpu(cpu))
 
 static void gic_clear_pcpu_masks(unsigned int intr)