[PATCH v2] platform/x86/intel/tpmi: Use 32 bit aligned address for debugfs mem write
From: Srinivas Pandruvada
Date: Thu Mar 26 2026 - 14:37:33 EST
The memory write feature supports 32-bit writes to any TPMI offset.
However, future hardware generations may not allow writes to non-32-bit
aligned addresses due to hardware optimizations.
Since all TPMI addresses are 64-bit aligned and correspond to 64-bit
registers, enforce 32-bit alignment for write operations.
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>
---
v2:
Use IS_ALIGNED()
Here <linux/align.h> is explicitly added, but also included in
include chain of other included header files in this file.
drivers/platform/x86/intel/vsec_tpmi.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/platform/x86/intel/vsec_tpmi.c b/drivers/platform/x86/intel/vsec_tpmi.c
index 98846e88d3d0..b16968f76726 100644
--- a/drivers/platform/x86/intel/vsec_tpmi.c
+++ b/drivers/platform/x86/intel/vsec_tpmi.c
@@ -46,6 +46,7 @@
* provided by the Intel VSEC driver.
*/
+#include <linux/align.h>
#include <linux/auxiliary_bus.h>
#include <linux/bitfield.h>
#include <linux/debugfs.h>
@@ -479,6 +480,9 @@ static ssize_t mem_write(struct file *file, const char __user *userbuf, size_t l
addr = array[2];
value = array[3];
+ if (!IS_ALIGNED(addr, sizeof(u32)))
+ return -EINVAL;
+
if (punit >= pfs->pfs_header.num_entries) {
ret = -EINVAL;
goto exit_write;
--
2.52.0