From ed9836c040bac2823dffd4e10c107206d88ac548 Mon Sep 17 00:00:00 2001 From: Abhijit Gangurde Date: Fri, 19 Sep 2025 17:43:00 +0530 Subject: RDMA/ionic: Fix build failure on SPARC due to xchg() operand size xchg() is used to safely handle the event queue arming. However SPARC xchg operates only 4B of variable. Change variable type from bool to int. Unverified Error/Warning (likely false positive, kindly check if interested): ERROR: modpost: "__xchg_called_with_bad_pointer" [drivers/infiniband/hw/ionic/ionic_rdma.ko] undefined! Error/Warning ids grouped by kconfigs: recent_errors `-- sparc-allmodconfig `-- ERROR:__xchg_called_with_bad_pointer-drivers-infiniband-hw-ionic-ionic_rdma.ko-undefined Fixes: f3bdbd42702c ("RDMA/ionic: Create device queues to support admin operations") Reported-by: Leon Romanovsky Closes: https://lore.kernel.org/lkml/20250918180750.GA135135@unreal/ Signed-off-by: Abhijit Gangurde Link: https://patch.msgid.link/20250919121301.1113759-1-abhijit.gangurde@amd.com Signed-off-by: Leon Romanovsky --- drivers/infiniband/hw/ionic/ionic_admin.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'drivers/infiniband/hw/ionic/ionic_admin.c') diff --git a/drivers/infiniband/hw/ionic/ionic_admin.c b/drivers/infiniband/hw/ionic/ionic_admin.c index 1ba7a8ecc073..d9221ef134c4 100644 --- a/drivers/infiniband/hw/ionic/ionic_admin.c +++ b/drivers/infiniband/hw/ionic/ionic_admin.c @@ -945,7 +945,7 @@ static void ionic_poll_eq_work(struct work_struct *work) npolled, 0); queue_work(ionic_evt_workq, &eq->work); } else { - xchg(&eq->armed, true); + xchg(&eq->armed, 1); ionic_intr_credits(eq->dev->lif_cfg.intr_ctrl, eq->intr, 0, IONIC_INTR_CRED_UNMASK); } @@ -954,10 +954,10 @@ static void ionic_poll_eq_work(struct work_struct *work) static irqreturn_t ionic_poll_eq_isr(int irq, void *eqptr) { struct ionic_eq *eq = eqptr; - bool was_armed; + int was_armed; u32 npolled; - was_armed = xchg(&eq->armed, false); + was_armed = xchg(&eq->armed, 0); if (unlikely(!eq->enable) || !was_armed) return IRQ_HANDLED; @@ -968,7 +968,7 @@ static irqreturn_t ionic_poll_eq_isr(int irq, void *eqptr) npolled, 0); queue_work(ionic_evt_workq, &eq->work); } else { - xchg(&eq->armed, true); + xchg(&eq->armed, 1); ionic_intr_credits(eq->dev->lif_cfg.intr_ctrl, eq->intr, 0, IONIC_INTR_CRED_UNMASK); } -- cgit v1.2.3