Commit c917a36f authored by Vineet Gupta's avatar Vineet Gupta

ARC: [mm] serious bug in vaddr based icache flush

vaddr used to index the cache was clipped from the wrong end, and thus
would potentially fail to flush the correct lines.

The problem was dorment for so long because up until the recent
optimizations it was only used for ptrace break-point only flushes.
Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
parent eacd0e95
...@@ -421,7 +421,7 @@ static void __ic_line_inv_vaddr(unsigned long phy_start, unsigned long vaddr, ...@@ -421,7 +421,7 @@ static void __ic_line_inv_vaddr(unsigned long phy_start, unsigned long vaddr,
num_lines = DIV_ROUND_UP(sz, ARC_ICACHE_LINE_LEN); num_lines = DIV_ROUND_UP(sz, ARC_ICACHE_LINE_LEN);
#if (CONFIG_ARC_MMU_VER > 2) #if (CONFIG_ARC_MMU_VER > 2)
vaddr &= ~ICACHE_LINE_MASK; vaddr &= ICACHE_LINE_MASK;
addr = phy_start; addr = phy_start;
#else #else
/* bits 17:13 of vaddr go as bits 4:0 of paddr */ /* bits 17:13 of vaddr go as bits 4:0 of paddr */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment