On 10/11/2016 09:00 AM, Artyom Tarasenko wrote:
On Mon, Oct 10, 2016 at 11:14 PM, Richard Henderson <r...@twiddle.net> wrote:
On 10/01/2016 05:05 AM, Artyom Tarasenko wrote:
if (is_exec) {
- helper_raise_exception(env, TT_CODE_ACCESS);
+ if (env->lsu & (IMMU_E)) {
+ helper_raise_exception(env, TT_CODE_ACCESS);
+ }
} else {
- helper_raise_exception(env, TT_DATA_ACCESS);
+ if (env->lsu & (DMMU_E)) {
+ helper_raise_exception(env, TT_DATA_ACCESS);
+ }
The cpu really does no kind of machine check for a hypervisor write to
0x1122334455667788?
A bare metal machine would raise Real Translation Exception. But since
we don't do real addresses...
I was asking about an errant access from the hypervisor itself. I would have
thought the guest running without an mmu would be running with real addresses,
but the hypervisor itself would be running in physical addresses.
But that said, we can't just let the access go completely unreported, surely.
We can think as if we do real addresses, but with a 1-1 mapping to physical.
So at least for !cpu_hypervisor_mode(env), a Real Translation Exception would
seem to be totally justified.
r~