From: "Cédric Le Goater" <clg@kaod.org>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Cedric Le Goater <clg@kaod.org>
Subject: [Qemu-devel] [PATCH 05/12] ppc: Fix hreg_store_msr() so that non-HV mode cannot alter MSR:HV
Date: Tue, 3 May 2016 18:03:27 +0200 [thread overview]
Message-ID: <1462291414-8343-6-git-send-email-clg@kaod.org> (raw)
In-Reply-To: <1462291414-8343-1-git-send-email-clg@kaod.org>
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This helper is only used by the various instructions that can alter
MSR and not interrupts. Add a comment to that effect to the interrupt
code as well in case somebody wants to change this
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
target-ppc/excp_helper.c | 8 ++++++--
target-ppc/helper_regs.h | 4 ++--
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/target-ppc/excp_helper.c b/target-ppc/excp_helper.c
index 85f38640bdf4..b48a34bfab8b 100644
--- a/target-ppc/excp_helper.c
+++ b/target-ppc/excp_helper.c
@@ -708,8 +708,12 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp)
}
}
#endif
- /* XXX: we don't use hreg_store_msr here as already have treated
- * any special case that could occur. Just store MSR and update hflags
+ /* We don't use hreg_store_msr here as already have treated
+ * any special case that could occur. Just store MSR and update hflags
+ *
+ * Note: We *MUST* not use hreg_store_msr() as-is anyway because it
+ * will prevent setting of the HV bit which some exceptions might need
+ * to do.
*/
env->msr = new_msr & env->msr_mask;
hreg_compute_hflags(env);
diff --git a/target-ppc/helper_regs.h b/target-ppc/helper_regs.h
index 57da931e3c4d..12af61cbf19b 100644
--- a/target-ppc/helper_regs.h
+++ b/target-ppc/helper_regs.h
@@ -114,8 +114,8 @@ static inline int hreg_store_msr(CPUPPCState *env, target_ulong value,
excp = 0;
value &= env->msr_mask;
#if !defined(CONFIG_USER_ONLY)
- if (!alter_hv) {
- /* mtmsr cannot alter the hypervisor state */
+ /* Neither mtmsr nor guest state can alter HV */
+ if (!alter_hv || !(env->msr & MSR_HVB)) {
value &= ~MSR_HVB;
value |= env->msr & MSR_HVB;
}
--
2.1.4
next prev parent reply other threads:[~2016-05-03 16:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-03 16:03 [Qemu-devel] [PATCH 00/12] ppc: preparing pnv landing (round 2) Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 01/12] ppc: Remove MMU_MODEn_SUFFIX definitions Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 02/12] ppc: Use split I/D mmu modes to avoid flushes on interrupts Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 03/12] ppc: Do some batching of TCG tlb flushes Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 04/12] ppc: Add a bunch of hypervisor SPRs to Book3s Cédric Le Goater
2016-05-03 16:03 ` Cédric Le Goater [this message]
2016-05-03 16:03 ` [Qemu-devel] [PATCH 06/12] ppc: Fix rfi/rfid/hrfi/... emulation Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 07/12] ppc: Better figure out if processor has HV mode Cédric Le Goater
2016-05-27 3:38 ` [Qemu-devel] [Qemu-ppc] " David Gibson
2016-05-27 4:41 ` Thomas Huth
2016-05-27 8:10 ` Cédric Le Goater
2016-05-27 7:56 ` Cédric Le Goater
2016-05-28 9:52 ` David Gibson
2016-05-28 11:04 ` Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 08/12] ppc: tlbie, tlbia and tlbisync are HV only Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 09/12] ppc: Change 'invalid' bit mask of tlbiel and tlbie Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 10/12] ppc: Fix sign extension issue in mtmsr(d) emulation Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 11/12] ppc: Get out of emulation on SMT "OR" ops Cédric Le Goater
2016-05-03 16:03 ` [Qemu-devel] [PATCH 12/12] ppc: Add PPC_64H instruction flag to POWER7 and POWER8 Cédric Le Goater
2016-05-03 16:52 ` [Qemu-devel] [PATCH 00/12] ppc: preparing pnv landing (round 2) David Gibson
2016-05-27 3:54 ` [Qemu-devel] [Qemu-ppc] " David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1462291414-8343-6-git-send-email-clg@kaod.org \
--to=clg@kaod.org \
--cc=benh@kernel.crashing.org \
--cc=david@gibson.dropbear.id.au \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).