mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
LoongArch: Fix hw_breakpoint_control() for watchpoints
In hw_breakpoint_control(), encode_ctrl_reg() has already encoded the MWPnCFG3_LoadEn/MWPnCFG3_StoreEn bits in info->ctrl. We don't need to add (1 << MWPnCFG3_LoadEn | 1 << MWPnCFG3_StoreEn) unconditionally. Otherwise we can't set read watchpoint and write watchpoint separately. Cc: stable@vger.kernel.org Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
This commit is contained in:
@@ -207,8 +207,7 @@ static int hw_breakpoint_control(struct perf_event *bp,
|
|||||||
write_wb_reg(CSR_CFG_CTRL, i, 0, CTRL_PLV_ENABLE);
|
write_wb_reg(CSR_CFG_CTRL, i, 0, CTRL_PLV_ENABLE);
|
||||||
} else {
|
} else {
|
||||||
ctrl = encode_ctrl_reg(info->ctrl);
|
ctrl = encode_ctrl_reg(info->ctrl);
|
||||||
write_wb_reg(CSR_CFG_CTRL, i, 1, ctrl | CTRL_PLV_ENABLE |
|
write_wb_reg(CSR_CFG_CTRL, i, 1, ctrl | CTRL_PLV_ENABLE);
|
||||||
1 << MWPnCFG3_LoadEn | 1 << MWPnCFG3_StoreEn);
|
|
||||||
}
|
}
|
||||||
enable = csr_read64(LOONGARCH_CSR_CRMD);
|
enable = csr_read64(LOONGARCH_CSR_CRMD);
|
||||||
csr_write64(CSR_CRMD_WE | enable, LOONGARCH_CSR_CRMD);
|
csr_write64(CSR_CRMD_WE | enable, LOONGARCH_CSR_CRMD);
|
||||||
|
|||||||
Reference in New Issue
Block a user