To avoid compiler reordering stores to LMT line and ldeor, add clobber attribute to ldeor, steor etc.
Signed-off-by: Nithin Dabilpuram <ndabilpu...@marvell.com> --- drivers/common/cnxk/roc_io.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/common/cnxk/roc_io.h b/drivers/common/cnxk/roc_io.h index 1e5c1f8c04..af1a10cd66 100644 --- a/drivers/common/cnxk/roc_io.h +++ b/drivers/common/cnxk/roc_io.h @@ -130,7 +130,8 @@ roc_lmt_submit_ldeor(plt_iova_t io_address) asm volatile(PLT_CPU_FEATURE_PREAMBLE "ldeor xzr, %x[rf], [%[rs]]" : [rf] "=r"(result) - : [rs] "r"(io_address)); + : [rs] "r"(io_address) + : "memory"); return result; } @@ -141,7 +142,8 @@ roc_lmt_submit_ldeorl(plt_iova_t io_address) asm volatile(PLT_CPU_FEATURE_PREAMBLE "ldeorl xzr,%x[rf],[%[rs]]" : [rf] "=r"(result) - : [rs] "r"(io_address)); + : [rs] "r"(io_address) + : "memory"); return result; } @@ -150,7 +152,8 @@ roc_lmt_submit_steor(uint64_t data, plt_iova_t io_address) { asm volatile(PLT_CPU_FEATURE_PREAMBLE "steor %x[d], [%[rs]]" ::[d] "r"(data), - [rs] "r"(io_address)); + [rs] "r"(io_address) + : "memory"); } static __plt_always_inline void @@ -158,7 +161,8 @@ roc_lmt_submit_steorl(uint64_t data, plt_iova_t io_address) { asm volatile(PLT_CPU_FEATURE_PREAMBLE "steorl %x[d], [%[rs]]" ::[d] "r"(data), - [rs] "r"(io_address)); + [rs] "r"(io_address) + : "memory"); } static __plt_always_inline void -- 2.25.1