qemu-ppc
[Top][All Lists]
Advanced

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

Re: [PATCH] target/ppc: cpu_init: Clean up stop state on cpu reset


From: Cédric Le Goater
Subject: Re: [PATCH] target/ppc: cpu_init: Clean up stop state on cpu reset
Date: Wed, 15 Jun 2022 07:23:05 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0

On 6/14/22 10:29, Frederic Barrat wrote:
The 'resume_as_sreset' attribute of a cpu can be set when a thread is
entering a stop state on ppc books. It causes the thread to be
re-routed to vector 0x100 when woken up by an exception. So it must be
cleaned on reset or a thread might be re-routed unexpectedly after a
reset, when it was not in a stop state and/or when the appropriate
exception handler isn't set up yet.

What is the test scenario ? and what are the symptoms ?


Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>

Reviewed-by: Cédric Le Goater <clg@kaod.org>


---

I didn't find an appropriate commit to add a "Fixes:". It originates
when adding support for power management states but the code looked
quite different in 2016 and it's not clear whether we were supporting
reset then.

It was added when we needed some support for the POWER8 stop states.
About that time.

Thanks,

C.


target/ppc/cpu_init.c | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
index 0f891afa04..c16cb8dbe7 100644
--- a/target/ppc/cpu_init.c
+++ b/target/ppc/cpu_init.c
@@ -7186,6 +7186,9 @@ static void ppc_cpu_reset(DeviceState *dev)
          }
          pmu_update_summaries(env);
      }
+
+    /* clean any pending stop state */
+    env->resume_as_sreset = 0;
  #endif
      hreg_compute_hflags(env);
      env->reserve_addr = (target_ulong)-1ULL;




reply via email to

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