OSDN Git Service

target/ppc: Fix regression in Radix MMU
authorLeandro Lupori <leandro.lupori@eldorado.org.br>
Fri, 28 Oct 2022 18:36:17 +0000 (15:36 -0300)
committerDaniel Henrique Barboza <danielhb413@gmail.com>
Sat, 29 Oct 2022 09:34:52 +0000 (06:34 -0300)
commitfb22d743b93b49b73930aff40d3ba9d252f81a56
treee6ea55504519b9d0aa62378aeade62bd6327a0e2
parent63e4bf8e84721231ea447b0e4afcb0a4378763c2
target/ppc: Fix regression in Radix MMU

Commit 47e83d9107 ended up unintentionally changing the control flow
of ppc_radix64_process_scoped_xlate(). When guest_visible is false,
it must not raise an exception, even if the radix configuration is
not valid.

This regression prevented Linux boot in a nested environment with
L1 using TCG and emulating KVM (cap-nested-hv=on) and L2 using
KVM. L2 would hang on Linux's futex_init(), when it tested how a
futex_atomic_cmpxchg_inatomic() handled a fault, because L1 would
start a loop of trying to perform partition scoped translations
and raising exceptions.

Fixes: 47e83d9107 ("target/ppc: Improve Radix xlate level validation")
Reported-by: Victor Colombo <victor.colombo@eldorado.org.br>
Signed-off-by: Leandro Lupori <leandro.lupori@eldorado.org.br>
Tested-by: VĂ­ctor Colombo <victor.colombo@eldorado.org.br>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <20221028183617.121786-1-leandro.lupori@eldorado.org.br>
[danielhb: use %"PRIu64" to print 'nls']
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
target/ppc/mmu-radix64.c