qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 09/13] target/ppc: Prevent supervisor from modifying MSR[ME]


From: Harsh Prateek Bora
Subject: Re: [PATCH 09/13] target/ppc: Prevent supervisor from modifying MSR[ME]
Date: Tue, 12 Mar 2024 15:57:54 +0530
User-agent: Mozilla Thunderbird



On 3/12/24 00:21, Nicholas Piggin wrote:
Prevent guest state modifying the MSR[ME] bit. Per ISA:

   An attempt to modify MSRME in privileged but non-hypervisor state is

s/MSRME/MSR[ME] ?

   ignored (i.e., the bit is not changed).

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
  target/ppc/helper_regs.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c
index 410b39c231..25258986e3 100644
--- a/target/ppc/helper_regs.c
+++ b/target/ppc/helper_regs.c
@@ -264,6 +264,11 @@ int hreg_store_msr(CPUPPCState *env, target_ulong value, 
int alter_hv)
          value &= ~MSR_HVB;
          value |= env->msr & MSR_HVB;
      }
+    /* Attempt to modify MSR[ME] in guest state is ignored */
+    if (is_book3s_arch2x(env) && !(env->msr & MSR_HVB)) {
+        value &= ~(1 << MSR_ME);
+        value |= env->msr & (1 << MSR_ME);
+    }

Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>

      if ((value ^ env->msr) & (R_MSR_IR_MASK | R_MSR_DR_MASK)) {
          cpu_interrupt_exittb(cs);
      }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]