lib: Invalid all tlb entries that belong to an asid to workaroud c920 bug

Signed-off-by: Xiaoguang Xing <xiaoguang.xing@sophgo.com>
This commit is contained in:
Xiaoguang Xing
2024-08-21 19:13:04 +08:00
parent 725bce31fb
commit 7c4563b652

View File

@@ -148,7 +148,7 @@ static void sbi_tlb_local_sfence_vma_asid(struct sbi_tlb_info *tinfo)
unsigned long start = tinfo->start; unsigned long start = tinfo->start;
unsigned long size = tinfo->size; unsigned long size = tinfo->size;
unsigned long asid = tinfo->asid; unsigned long asid = tinfo->asid;
unsigned long i; //unsigned long i;
sbi_pmu_ctr_incr_fw(SBI_PMU_FW_SFENCE_VMA_ASID_RCVD); sbi_pmu_ctr_incr_fw(SBI_PMU_FW_SFENCE_VMA_ASID_RCVD);
@@ -161,12 +161,19 @@ static void sbi_tlb_local_sfence_vma_asid(struct sbi_tlb_info *tinfo)
return; return;
} }
#if 0
for (i = 0; i < size; i += PAGE_SIZE) { for (i = 0; i < size; i += PAGE_SIZE) {
__asm__ __volatile__("sfence.vma %0, %1" __asm__ __volatile__("sfence.vma %0, %1"
: :
: "r"(start + i), "r"(asid) : "r"(start + i), "r"(asid)
: "memory"); : "memory");
} }
#else
__asm__ __volatile__("sfence.vma x0, %0"
:
: "r"(asid)
: "memory");
#endif
} }
static void sbi_tlb_local_fence_i(struct sbi_tlb_info *tinfo) static void sbi_tlb_local_fence_i(struct sbi_tlb_info *tinfo)