scmi: correctly configure MMU for SCMI buffer
authorPatrick Delaunay <patrick.delaunay@foss.st.com>
Tue, 16 Mar 2021 08:29:40 +0000 (09:29 +0100)
committerTom Rini <trini@konsulko.com>
Mon, 12 Apr 2021 21:44:55 +0000 (17:44 -0400)
Align the MMU area for SCMI shared buffer on section size;
use the ALIGN macro in mmu_set_region_dcache_behaviour call.

Since commit d877f8fd0f09 ("arm: provide a function for boards init
code to modify MMU virtual-physical map") the parameter of
mmu_set_region_dcache_behaviour need to be MMU_SECTION_SIZE
aligned.

Fixes: 240720e9052f ("firmware: scmi: mailbox/smt agent device")
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
drivers/firmware/scmi/smt.c

index 60b9d49..4954355 100644 (file)
@@ -56,8 +56,10 @@ int scmi_dt_get_smt_buffer(struct udevice *dev, struct scmi_smt *smt)
 
 #ifdef CONFIG_ARM
        if (dcache_status())
-               mmu_set_region_dcache_behaviour((uintptr_t)smt->buf,
-                                               smt->size, DCACHE_OFF);
+               mmu_set_region_dcache_behaviour(ALIGN_DOWN((uintptr_t)smt->buf, MMU_SECTION_SIZE),
+                                               ALIGN(smt->size, MMU_SECTION_SIZE),
+                                               DCACHE_OFF);
+
 #endif
 
        return 0;