All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Henrique Barboza <danielhb413@gmail.com>
To: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org, danielhb413@gmail.com,
	peter.maydell@linaro.org, richard.henderson@linaro.org,
	"Nicholas Piggin" <npiggin@gmail.com>,
	"Cédric Le Goater" <clg@kaod.org>
Subject: [PULL 6/7] target/ppc: Fix pending HDEC when entering PM state
Date: Fri,  4 Aug 2023 12:29:54 -0300	[thread overview]
Message-ID: <20230804152955.22316-7-danielhb413@gmail.com> (raw)
In-Reply-To: <20230804152955.22316-1-danielhb413@gmail.com>

From: Nicholas Piggin <npiggin@gmail.com>

HDEC is defined to not wake from PM state. There is a check in the HDEC
timer to avoid setting the interrupt if we are in a PM state, but no
check on PM entry to lower HDEC if it already fired. This can cause a
HDECR wake up and  QEMU abort with unsupported exception in Power Save
mode.

Fixes: 4b236b621bf ("ppc: Initial HDEC support")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Message-ID: <20230726182230.433945-4-npiggin@gmail.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
 target/ppc/excp_helper.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index 003805b202..9aa8e46566 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -2685,6 +2685,12 @@ void helper_pminsn(CPUPPCState *env, uint32_t insn)
     env->resume_as_sreset = (insn != PPC_PM_STOP) ||
         (env->spr[SPR_PSSCR] & PSSCR_EC);
 
+    /* HDECR is not to wake from PM state, it may have already fired */
+    if (env->resume_as_sreset) {
+        PowerPCCPU *cpu = env_archcpu(env);
+        ppc_set_irq(cpu, PPC_INTERRUPT_HDECR, 0);
+    }
+
     ppc_maybe_interrupt(env);
 }
 #endif /* defined(TARGET_PPC64) */
-- 
2.41.0



  parent reply	other threads:[~2023-08-04 15:30 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-04 15:29 [PULL 0/7] ppc queue Daniel Henrique Barboza
2023-08-04 15:29 ` [PULL 1/7] ppc/pegasos2: Fix reset state of USB functions Daniel Henrique Barboza
2023-08-04 15:29 ` [PULL 2/7] ppc/pegasos2: Fix reg property of ROM BARs Daniel Henrique Barboza
2023-08-04 15:29 ` [PULL 3/7] ppc/pegasos2: Fix naming of device tree nodes Daniel Henrique Barboza
2023-08-04 15:29 ` [PULL 4/7] ppc/pegasos2: Fix reg property of 64 bit BARs in device tree Daniel Henrique Barboza
2023-08-04 15:29 ` [PULL 5/7] target/ppc: Implement ASDR register for ISA v3.0 for HPT Daniel Henrique Barboza
2023-08-04 15:29 ` Daniel Henrique Barboza [this message]
2023-08-04 15:29 ` [PULL 7/7] target/ppc: Fix VRMA page size for ISA v3.0 Daniel Henrique Barboza
2023-08-04 19:37 ` [PULL 0/7] ppc queue Richard Henderson
2023-08-05  6:56 ` Michael Tokarev
2023-08-06 20:09   ` Cédric Le Goater

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=20230804152955.22316-7-danielhb413@gmail.com \
    --to=danielhb413@gmail.com \
    --cc=clg@kaod.org \
    --cc=npiggin@gmail.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=richard.henderson@linaro.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.