From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> On some architectures (e.g. arm64), ____cachline_aligned only aligns to the cacheline size of the L1 cache size. L1_CACHE_BYTES in arch64/include/asm/cache.h Unfortunately DMA safety on these architectures requires the buffer no share a last level cache cacheline given by ARCH_DMA_MINALIGN which has a greater granularity. ARCH_DMA_MINALIGN is not defined for all architectures, but when it is defined it is used to set the size of ARCH_KMALLOC_MINALIGN to allow DMA safe buffer allocations. As such the correct alignment requirement is __aligned(ARCH_KMALLOC_MINALIGN). This has recently been fixed in other subsystems such as IIO. Fixes tag for this is complex as at the time of original introduction, it is likely that there were no cases where the two alignments were different. Fixes: 4065d1e7b216 ("Input: add Cypress TTSP capacitive multi-touch screen support") Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> Cc: Javier Martinez Canillas <javier@xxxxxxxxxxxx> Cc: Linus Walleij <linus.walleij@xxxxxxxxxx> --- drivers/input/touchscreen/cyttsp_core.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/input/touchscreen/cyttsp_core.h b/drivers/input/touchscreen/cyttsp_core.h index 075509e695a2..e87cb323623c 100644 --- a/drivers/input/touchscreen/cyttsp_core.h +++ b/drivers/input/touchscreen/cyttsp_core.h @@ -131,7 +131,7 @@ struct cyttsp { u8 lp_intrvl; u8 *bl_keys; - u8 xfer_buf[] ____cacheline_aligned; + u8 xfer_buf[] __aligned(ARCH_KMALLOC_MINALIGN); }; struct cyttsp *cyttsp_probe(const struct cyttsp_bus_ops *bus_ops, -- 2.38.1