[PATCH] hwmon: (powerz) Avoid cacheline sharing for DMA buffer

Thomas Weißschuh posted 1 patch 2 months, 1 week ago
drivers/hwmon/powerz.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
[PATCH] hwmon: (powerz) Avoid cacheline sharing for DMA buffer
Posted by Thomas Weißschuh 2 months, 1 week ago
Depending on the architecture the transfer buffer may share a cacheline
with the following mutex. As the buffer may be used for DMA, that is
problematic.

Use the high-level DMA helpers to make sure that cacheline sharing can
not happen.

Also drop the comment, as the helpers are documentation enough.

https://sashiko.dev/#/message/20260408175814.934BFC19421%40smtp.kernel.org

Fixes: 4381a36abdf1c ("hwmon: add POWER-Z driver")
Cc: stable@vger.kernel.org # ca085faabb42: dma-mapping: add __dma_from_device_group_begin()/end()
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
 drivers/hwmon/powerz.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/hwmon/powerz.c b/drivers/hwmon/powerz.c
index 4e663d5b4e33..5e8397895613 100644
--- a/drivers/hwmon/powerz.c
+++ b/drivers/hwmon/powerz.c
@@ -6,6 +6,7 @@
 
 #include <linux/completion.h>
 #include <linux/device.h>
+#include <linux/dma-mapping.h>
 #include <linux/hwmon.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
@@ -33,7 +34,9 @@ struct powerz_sensor_data {
 } __packed;
 
 struct powerz_priv {
-	char transfer_buffer[64];	/* first member to satisfy DMA alignment */
+	__dma_from_device_group_begin();
+	char transfer_buffer[64];
+	__dma_from_device_group_end();
 	struct mutex mutex;
 	struct completion completion;
 	struct urb *urb;

---
base-commit: 3036cd0d3328220a1858b1ab390be8b562774e8a
change-id: 20260408-powerz-cacheline-alias-dfca016234c2

Best regards,
--  
Thomas Weißschuh <linux@weissschuh.net>

Re: [PATCH] hwmon: (powerz) Avoid cacheline sharing for DMA buffer
Posted by Guenter Roeck 2 months ago
On Wed, Apr 08, 2026 at 08:45:50PM +0200, Thomas Weißschuh wrote:
> Depending on the architecture the transfer buffer may share a cacheline
> with the following mutex. As the buffer may be used for DMA, that is
> problematic.
> 
> Use the high-level DMA helpers to make sure that cacheline sharing can
> not happen.
> 
> Also drop the comment, as the helpers are documentation enough.
> 
> https://sashiko.dev/#/message/20260408175814.934BFC19421%40smtp.kernel.org
> 
> Fixes: 4381a36abdf1c ("hwmon: add POWER-Z driver")
> Cc: stable@vger.kernel.org # ca085faabb42: dma-mapping: add __dma_from_device_group_begin()/end()
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>

Applied.

Thanks,
Guenter