riscv: pmp: Log pmp access errors as guest errors
Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
This commit is contained in:
parent
5371f5cd71
commit
aad5ac2311
@ -113,10 +113,11 @@ static void pmp_write_cfg(CPURISCVState *env, uint32_t pmp_index, uint8_t val)
|
||||
env->pmp_state.pmp[pmp_index].cfg_reg = val;
|
||||
pmp_update_rule(env, pmp_index);
|
||||
} else {
|
||||
PMP_DEBUG("ignoring write - locked");
|
||||
qemu_log_mask(LOG_GUEST_ERROR, "ignoring pmpcfg write - locked\n");
|
||||
}
|
||||
} else {
|
||||
PMP_DEBUG("ignoring write - out of bounds");
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"ignoring pmpcfg write - out of bounds\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -249,7 +250,8 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong addr,
|
||||
|
||||
/* partially inside */
|
||||
if ((s + e) == 1) {
|
||||
PMP_DEBUG("pmp violation - access is partially inside");
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"pmp violation - access is partially inside\n");
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
@ -306,7 +308,8 @@ void pmpcfg_csr_write(CPURISCVState *env, uint32_t reg_index,
|
||||
env->mhartid, reg_index, val);
|
||||
|
||||
if ((reg_index & 1) && (sizeof(target_ulong) == 8)) {
|
||||
PMP_DEBUG("ignoring write - incorrect address");
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"ignoring pmpcfg write - incorrect address\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -353,10 +356,12 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t addr_index,
|
||||
env->pmp_state.pmp[addr_index].addr_reg = val;
|
||||
pmp_update_rule(env, addr_index);
|
||||
} else {
|
||||
PMP_DEBUG("ignoring write - locked");
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"ignoring pmpaddr write - locked\n");
|
||||
}
|
||||
} else {
|
||||
PMP_DEBUG("ignoring write - out of bounds");
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"ignoring pmpaddr write - out of bounds\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -372,7 +377,8 @@ target_ulong pmpaddr_csr_read(CPURISCVState *env, uint32_t addr_index)
|
||||
if (addr_index < MAX_RISCV_PMPS) {
|
||||
return env->pmp_state.pmp[addr_index].addr_reg;
|
||||
} else {
|
||||
PMP_DEBUG("ignoring read - out of bounds");
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"ignoring pmpaddr read - out of bounds\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user