[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [PATCH for-2.12 0/4] Fix various BRK/BKPT related bugs
From: |
Peter Maydell |
Subject: |
[Qemu-arm] [PATCH for-2.12 0/4] Fix various BRK/BKPT related bugs |
Date: |
Tue, 20 Mar 2018 13:41:10 +0000 |
The main aim of this patchset is to fix the bug reported in
https://bugs.launchpad.net/qemu/+bug/1756927 where we don't
report the correct FSR when a BKPT instruction causes us to
take an exception to AArch32 with LPAE enabled. The other
patches fix some minor bugs found along the way:
* we weren't honouring MDCR_EL2.TDE when delivering an
exception caused by a BRK or BKPT insn, so we'd always
send it to EL1 even if it should have gone to EL2
* our logic to decide whether to report a short-format or
long-format LPAE for hardware breakpoint and watchpoint
exceptions would get it wrong in some corner cases: we could
select the short format because we're at EL0 and the EL1
translation regime is not using LPAE, but then route the
debug exception to EL2 because of MDCR_EL2.TDE and hand
EL2 the wrong format FSR.
* when taking a debug exception in AArch32, we would set the
guest visible IFAR to whatever old value was lying around
in env->exception.vaddress. IFAR in this situation is
architecturally UNKNOWN, but letting it be possibly set
to an old value that the guest shouldn't be able to see
at its current security/exception level is not permitted,
and setting it to a non-deterministic value is bad for
record-and-replay.
(This patchset further reduces the set of places that are
calling the somewhat dubious extended_addresses_enabled()
function. The last callsite is in the CONTEXTIDR write
function, and that should probably be updated something along
the lines of the ideas I wrote in this email last year:
https://www.mail-archive.com/address@hidden/msg491671.html
but that is a cleanup for another day.)
thanks
-- PMM
Peter Maydell (4):
target/arm: Honour MDCR_EL2.TDE when routing exceptions due to
BKPT/BRK
target/arm: Factor out code to calculate FSR for debug exceptions
target/arm: Set FSR for BKPT, BRK when raising exception
target/arm: Always set FAR to a known unknown value for debug
exceptions
target/arm/helper.h | 1 +
target/arm/internals.h | 25 +++++++++++++++++++++++++
target/arm/helper.c | 1 -
target/arm/op_helper.c | 33 ++++++++++++++++++++++-----------
target/arm/translate-a64.c | 15 +++++++++++++--
target/arm/translate.c | 19 ++++++++++++++-----
6 files changed, 75 insertions(+), 19 deletions(-)
--
2.16.2
- [Qemu-arm] [PATCH for-2.12 0/4] Fix various BRK/BKPT related bugs,
Peter Maydell <=