From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oa1-f42.google.com (mail-oa1-f42.google.com [209.85.160.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A57C235C18D for ; Tue, 27 Jan 2026 13:59:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769522372; cv=none; b=f7CHCJZ6VMM3hHPpd73Fv4p7j9s86DNX21FslxO5kp4gj3xSPlnw31716DPFgmn787XY+bmw8PN7a0NOTwDxy7JwFnEk9puTqUeu5Y5IhuZ8/3zVnnmaKGc+OhS+U5NXulGmRp6pXsqmmwDQQJ8b3uHJ/kkhbKbV1nRCoRWAqLw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769522372; c=relaxed/simple; bh=0HDVlUmXqJZht+Y9T7EqdTkfQ5g8PjMtq9xZD965xOg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fcJKWnVEQA71m+0WyN86Uu6B6cp+934E7J6tXVK4MW82FX937wr76cuSUXJUhflyq/J0c/PeskRIYCgpbE97jF3uxKhsqPShoRj67MoJgYtP9e9SEdVCXQahQuGCN+cOdYCNgcZeLCVrJfTKuYyPgnSUg+xZOVeCmPnFYFbQHc8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=minyard.net; spf=pass smtp.mailfrom=minyard.net; dkim=pass (2048-bit key) header.d=minyard.net header.i=@minyard.net header.b=WVvKoAIt; arc=none smtp.client-ip=209.85.160.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=minyard.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=minyard.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=minyard.net header.i=@minyard.net header.b="WVvKoAIt" Received: by mail-oa1-f42.google.com with SMTP id 586e51a60fabf-4094b31a037so187450fac.1 for ; Tue, 27 Jan 2026 05:59:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minyard.net; s=google; t=1769522369; x=1770127169; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=x2LPkniD2Jah+bnHAFdMSt2ma4HBjujXhV2ExysNqRM=; b=WVvKoAItPhBhI3THrvvaJfDqeE0YWtbeamNTvu/HKpUaOUgMYM/OzcYRpvKapvfs5N BgYtMUxXB5gKE49IrbV5ZmGj9Up3Cd6L1YVb5RQp0afZgi3s9yNMdpNopOI2+8mGGAK6 az7O9FP3RMYvKxOhwralWSLWpiiMoMn2PVN5VIwDnZdNRsNeyO6YIetTJ19VyxVpNsdl si38VWP9PVb4TERVp+DS9H/VYj9mDxRyk1zzxH6AeP9qfqOJp2UgS1pBBZpn7y6WSqbj BgCysjNR3lYLYZUUJgXU3hDJ0UjOA5kAQbuvhGpCH/+5xcAUHpjuVmKJFYHG2CiL3dbf FNSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769522369; x=1770127169; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=x2LPkniD2Jah+bnHAFdMSt2ma4HBjujXhV2ExysNqRM=; b=sX1OMHMgyhbKvkUVdMCxjYjqPee5sJFEyEsBi3OBEr5wSx0ProaIvnz/gZh4v8dMtB BARRGS6nkp/fUiF9HOLge5yN2g8Pn8O8gjmxh0GpEiGFVYaXq5Kv1g6tHvMKLjnuOojN qGEX2TdaVAy1tFvWfaBTSN9+E5Eu6dkuqs5jnjB2IDwAs4VAy6gBo3+2bsBs/ejj4faN NByjtmPTBJVHzr0v27unxStAWbT/LIjQhm2jF8gWM5x6lC8ocIMDl9+/U7eQKIXnmPJJ sZjUYh3YttxzwI9l9UjCv5NwqtfCdEm5ZnsFdBvkk63f07Pn8V0J7rAFCPr5wmbVva9u 7bOA== X-Forwarded-Encrypted: i=1; AJvYcCVHhMIDv0gq/fqbFmq2XYweTlljP8nbhISOGsy3XvjvDVnGQGKshng9n0KjzaC4yr9zWxbQ/+pgJBBCb2A=@vger.kernel.org X-Gm-Message-State: AOJu0Yw8kotgFgL9PBpc4tl1DZEQyX1MOFqYT2CunMJ/SkqXwyC8425k wm1/55m/2hMaX7oi+s7YOrsbKR0QPR0CXVwnffxpCPtX68Q6mR/kNPML98KPu/AJ8Mk= X-Gm-Gg: AZuq6aLXLwH7/0Pjfe7hwduuR+wlMp3iglhNivm+IgGeGyXs+YuyN99OzBUKPSXFkoV n7dO+UdFJjYNBHN/t2iuVEA4JnzLQL0ZHP8S3K6Kgq85U+ff9aEeyu2/qNRcos39ALutfyKp9Fr azV/8Efamo7mDJTcaRDPNr/tEpA9W4p1NEozisYzieikm89yAmKQBjoyl9RWmQ2YbusZ+oY9Wf0 mzxRxzVJa+FAAh/Rjs+0GVyEPD7E38sS2XEpIS7ZJ8rbjaEq9xRVaNvYyI9x+KtJutrGzOXCrEZ 3lCX6Vgc55kPsUmld9gdNphx+SW/p8kYi/kfZXgsfYetLr2G+zC4ug3A+pUY1ofR4S7J/LVXeBZ GfLevZBv+WPcJKkT+xHrEKwM5CKsRHAYw53NVCpbVjkH6ygO1VfKbmPs22wLJtH9gdYC+Jtm6V1 xp4IXvu92eVWwFyGLji1LB6jXfeBe2IpCNN+AkMY8TjSM5hz2XsyujELgjwaWkml5O9A== X-Received: by 2002:a05:6870:b627:b0:3d4:876:34b1 with SMTP id 586e51a60fabf-4093ff09acdmr1047607fac.33.1769522367981; Tue, 27 Jan 2026 05:59:27 -0800 (PST) Received: from localhost ([2001:470:b8f6:1b:a1a5:d807:e7a1:53eb]) by smtp.gmail.com with UTF8SMTPSA id 586e51a60fabf-408af88d1c2sm9407794fac.8.2026.01.27.05.59.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 27 Jan 2026 05:59:27 -0800 (PST) From: Corey Minyard To: Breno Leitao , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: openipmi-developer@lists.sourceforge.net, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, kernel-team@meta.com, Corey Minyard Subject: [PATCH 2/2] ipmi: Consolidate the run to completion checking for xmit msgs lock Date: Tue, 27 Jan 2026 07:54:40 -0600 Message-ID: <20260127135917.1597762-3-corey@minyard.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260127135917.1597762-1-corey@minyard.net> References: <20260127-ipmi-v1-0-ba5cc90f516f@debian.org> <20260127135917.1597762-1-corey@minyard.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit It made things hard to read, move the check to a function. Signed-off-by: Corey Minyard --- drivers/char/ipmi/ipmi_msghandler.c | 40 ++++++++++++++++------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c index a590a67294e2..030828cdb778 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c @@ -602,6 +602,20 @@ static int __ipmi_bmc_register(struct ipmi_smi *intf, static int __scan_channels(struct ipmi_smi *intf, struct ipmi_device_id *id, bool rescan); +static void ipmi_lock_xmit_msgs(struct ipmi_smi *intf, int run_to_completion, + unsigned long *flags) +{ + if (!run_to_completion) + spin_lock_irqsave(&intf->xmit_msgs_lock, *flags); +} + +static void ipmi_unlock_xmit_msgs(struct ipmi_smi *intf, int run_to_completion, + unsigned long *flags) +{ + if (!run_to_completion) + spin_unlock_irqrestore(&intf->xmit_msgs_lock, *flags); +} + static void free_ipmi_user(struct kref *ref) { struct ipmi_user *user = container_of(ref, struct ipmi_user, refcount); @@ -1878,11 +1892,9 @@ static void smi_send(struct ipmi_smi *intf, int run_to_completion = READ_ONCE(intf->run_to_completion); unsigned long flags = 0; - if (!run_to_completion) - spin_lock_irqsave(&intf->xmit_msgs_lock, flags); + ipmi_lock_xmit_msgs(intf, run_to_completion, &flags); smi_msg = smi_add_send_msg(intf, smi_msg, priority); - if (!run_to_completion) - spin_unlock_irqrestore(&intf->xmit_msgs_lock, flags); + ipmi_unlock_xmit_msgs(intf, run_to_completion, &flags); if (smi_msg) handlers->sender(intf->send_info, smi_msg); @@ -4826,8 +4838,7 @@ static void smi_work(struct work_struct *t) * message delivery. */ restart: - if (!run_to_completion) - spin_lock_irqsave(&intf->xmit_msgs_lock, flags); + ipmi_lock_xmit_msgs(intf, run_to_completion, &flags); if (intf->curr_msg == NULL && !intf->in_shutdown) { struct list_head *entry = NULL; @@ -4843,8 +4854,7 @@ static void smi_work(struct work_struct *t) intf->curr_msg = newmsg; } } - if (!run_to_completion) - spin_unlock_irqrestore(&intf->xmit_msgs_lock, flags); + ipmi_unlock_xmit_msgs(intf, run_to_completion, &flags); if (newmsg) { cc = intf->handlers->sender(intf->send_info, newmsg); @@ -4852,13 +4862,9 @@ static void smi_work(struct work_struct *t) if (newmsg->recv_msg) deliver_err_response(intf, newmsg->recv_msg, cc); - if (!run_to_completion) - spin_lock_irqsave(&intf->xmit_msgs_lock, - flags); + ipmi_lock_xmit_msgs(intf, run_to_completion, &flags); intf->curr_msg = NULL; - if (!run_to_completion) - spin_unlock_irqrestore(&intf->xmit_msgs_lock, - flags); + ipmi_unlock_xmit_msgs(intf, run_to_completion, &flags); ipmi_free_smi_msg(newmsg); newmsg = NULL; goto restart; @@ -4928,16 +4934,14 @@ void ipmi_smi_msg_received(struct ipmi_smi *intf, spin_unlock_irqrestore(&intf->waiting_rcv_msgs_lock, flags); - if (!run_to_completion) - spin_lock_irqsave(&intf->xmit_msgs_lock, flags); + ipmi_lock_xmit_msgs(intf, run_to_completion, &flags); /* * We can get an asynchronous event or receive message in addition * to commands we send. */ if (msg == intf->curr_msg) intf->curr_msg = NULL; - if (!run_to_completion) - spin_unlock_irqrestore(&intf->xmit_msgs_lock, flags); + ipmi_unlock_xmit_msgs(intf, run_to_completion, &flags); if (run_to_completion) smi_work(&intf->smi_work); -- 2.43.0