[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2026012047-delighted-unvisited-f151@gregkh>
Date: Tue, 20 Jan 2026 15:05:13 +0100
From: Greg KH <gregkh@...uxfoundation.org>
To: 2023060904@....edu.cn
Cc: dan.carpenter@...aro.org, guagua210311@...com,
linux-kernel@...r.kernel.org, linux-staging@...ts.linux.dev
Subject: Re: [PATCH] [rtl8723bs] Remove unnecessary atomic operations for
continual_io_error
On Tue, Jan 20, 2026 at 09:39:37PM +0800, 2023060904@....edu.cn wrote:
> Hi Dan,
>
> Thank you for the detailed feedback! I'll address each point below:
>
>
> > So you're saying that sd_read32() can only be called by one thread at a
> > time. What sort of locking enforces this? I don't see any at first
> > glance, but I also don't want to invest a lot of time into looking for
> > it. Please explain it clearly in the commit message so reviewers can
> > easily check.
>
> The single-thread guarantee for SDIO IO functions (sd_read32/sd_write8) comes from two key aspects:
> 1. **Linux kernel driver isolation mechanism**: In the Linux kernel, each SDIO device (e.g., the rtl8723bs wireless card) corresponds to an independent driver instance, and the kernel's device model inherently isolates IO requests for different devices. For a single SDIO device, the kernel serializes all IO requests to it — meaning only one IO operation can be processed for the rtl8723bs card at any time, no concurrent requests exist.
> 2. **Driver code logic**: Within the rtl8723bs driver, the sd_read32()/sd_write8() functions are only invoked by the driver's dedicated "IO processing thread". The entire IO execution flow is linear: the driver receives an IO request → processes it via sd_read32()/sd_write8() → completes the request before handling the next one. There is no multi-threaded branching that could call these functions concurrently, so race conditions are impossible.
Did you use AI to generate this? if so, always say so. If not, please
properly wrap your lines like the email client asked you to :)
> I will add this detailed explanation to the v2 patch's commit message (instead of code comments) as you suggested, so reviewers can quickly verify the single-thread guarantee.
No, please do not.
> > What's the motivation for this change?
>
> The motivation is to follow the kernel's principle of **minimizing unnecessary atomic operations**:
> - Atomic operations introduce small overhead (memory barriers) that's redundant here (no concurrent access).
> - Removing redundant atomic ops aligns the code with kernel best practices (only use atomic types when race conditions exist).
Again, please drive this check down lower in the call chain.
Again, read the mailing list archives where this has been discussed very
recently as to what should be done, AND examples of how not to do it.
thanks,
greg k-h
Powered by blists - more mailing lists