From: Harsh Prateek Bora <harshpb@linux.ibm.com>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>, qemu-devel@nongnu.org
Cc: Daniel Henrique Barboza <danielhb413@gmail.com>,
Richard Henderson <richard.henderson@linaro.org>,
qemu-ppc@nongnu.org, Nicholas Piggin <npiggin@gmail.com>
Subject: Re: [PATCH v2 14/15] target/ppc: Restrict ATTN / SCV / PMINSN helpers to TCG
Date: Wed, 29 Jan 2025 11:33:40 +0530 [thread overview]
Message-ID: <3bf9f4e7-c091-4dc3-99a5-cac148efbead@linux.ibm.com> (raw)
In-Reply-To: <20250127102620.39159-15-philmd@linaro.org>
On 1/27/25 15:56, Philippe Mathieu-Daudé wrote:
> Move helper_attn(), helper_scv() and helper_pminsn() to
> tcg-excp_helper.c.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
> ---
> target/ppc/excp_helper.c | 45 ------------------------------------
> target/ppc/tcg-excp_helper.c | 39 +++++++++++++++++++++++++++++++
> 2 files changed, 39 insertions(+), 45 deletions(-)
>
> diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
> index f0e734e1412..2deed155987 100644
> --- a/target/ppc/excp_helper.c
> +++ b/target/ppc/excp_helper.c
> @@ -400,21 +400,6 @@ static void powerpc_set_excp_state(PowerPCCPU *cpu, target_ulong vector,
> env->reserve_addr = -1;
> }
>
> -#ifdef CONFIG_TCG
> -#if defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY)
> -void helper_attn(CPUPPCState *env)
> -{
> - /* POWER attn is unprivileged when enabled by HID, otherwise illegal */
> - if ((*env->check_attn)(env)) {
> - powerpc_checkstop(env, "host executed attn");
> - } else {
> - raise_exception_err(env, POWERPC_EXCP_HV_EMU,
> - POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_INVAL);
> - }
> -}
> -#endif
> -#endif /* CONFIG_TCG */
> -
> static void powerpc_mcheck_checkstop(CPUPPCState *env)
> {
> /* KVM guests always have MSR[ME] enabled */
> @@ -2445,36 +2430,6 @@ void helper_ppc_maybe_interrupt(CPUPPCState *env)
> ppc_maybe_interrupt(env);
> }
>
> -#ifdef TARGET_PPC64
> -void helper_scv(CPUPPCState *env, uint32_t lev)
> -{
> - if (env->spr[SPR_FSCR] & (1ull << FSCR_SCV)) {
> - raise_exception_err(env, POWERPC_EXCP_SYSCALL_VECTORED, lev);
> - } else {
> - raise_exception_err(env, POWERPC_EXCP_FU, FSCR_IC_SCV);
> - }
> -}
> -
> -void helper_pminsn(CPUPPCState *env, uint32_t insn)
> -{
> - CPUState *cs = env_cpu(env);
> -
> - cs->halted = 1;
> -
> - /* Condition for waking up at 0x100 */
> - 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 /* TARGET_PPC64 */
> -
> static void do_rfi(CPUPPCState *env, target_ulong nip, target_ulong msr)
> {
> /* MSR:POW cannot be set by any form of rfi */
> diff --git a/target/ppc/tcg-excp_helper.c b/target/ppc/tcg-excp_helper.c
> index 5ad39cacc92..4517b458b79 100644
> --- a/target/ppc/tcg-excp_helper.c
> +++ b/target/ppc/tcg-excp_helper.c
> @@ -499,6 +499,45 @@ void ppc_tcg_hv_emu(CPUPPCState *env, target_ulong *new_msr,
> *new_msr |= env->msr & ((target_ulong)1 << MSR_RI);
> }
>
> +void helper_attn(CPUPPCState *env)
> +{
> + /* POWER attn is unprivileged when enabled by HID, otherwise illegal */
> + if ((*env->check_attn)(env)) {
> + powerpc_checkstop(env, "host executed attn");
> + } else {
> + raise_exception_err(env, POWERPC_EXCP_HV_EMU,
> + POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_INVAL);
> + }
> +}
> +
> +void helper_scv(CPUPPCState *env, uint32_t lev)
> +{
> + if (env->spr[SPR_FSCR] & (1ull << FSCR_SCV)) {
> + raise_exception_err(env, POWERPC_EXCP_SYSCALL_VECTORED, lev);
> + } else {
> + raise_exception_err(env, POWERPC_EXCP_FU, FSCR_IC_SCV);
> + }
> +}
> +
> +void helper_pminsn(CPUPPCState *env, uint32_t insn)
> +{
> + CPUState *cs = env_cpu(env);
> +
> + cs->halted = 1;
> +
> + /* Condition for waking up at 0x100 */
> + 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 /* TARGET_PPC64 */
>
> #endif /* !CONFIG_USER_ONLY */
next prev parent reply other threads:[~2025-01-29 6:04 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-27 10:26 [PATCH v2 00/15] target/ppc: Move TCG code from excp_helper.c to tcg-excp_helper.c Philippe Mathieu-Daudé
2025-01-27 10:26 ` [PATCH v2 01/15] hw/ppc/spapr: Restrict CONFER hypercall to TCG Philippe Mathieu-Daudé
2025-01-28 4:59 ` Harsh Prateek Bora
2025-01-27 10:26 ` [PATCH v2 02/15] hw/ppc/spapr: Restrict part of PAGE_INIT " Philippe Mathieu-Daudé
2025-01-28 5:02 ` Harsh Prateek Bora
2025-01-27 10:26 ` [PATCH v2 03/15] target/ppc: Make ppc_ldl_code() declaration public Philippe Mathieu-Daudé
2025-01-28 5:47 ` Harsh Prateek Bora
2025-01-27 10:26 ` [PATCH v2 04/15] target/ppc: Move TCG specific exception handlers to tcg-excp_helper.c Philippe Mathieu-Daudé
2025-01-28 6:07 ` Harsh Prateek Bora
2025-01-28 12:41 ` BALATON Zoltan
2025-01-28 13:44 ` Philippe Mathieu-Daudé
2025-01-27 10:26 ` [PATCH v2 05/15] target/ppc: Move ppc_ldl_code() " Philippe Mathieu-Daudé
2025-01-28 6:13 ` Harsh Prateek Bora
2025-01-28 7:41 ` Philippe Mathieu-Daudé
2025-01-27 10:26 ` [PATCH v2 06/15] target/ppc: Ensure powerpc_checkstop() is only called under TCG Philippe Mathieu-Daudé
2025-01-28 6:43 ` Harsh Prateek Bora
2025-01-28 6:49 ` Harsh Prateek Bora
2025-02-27 0:46 ` Nicholas Piggin
2025-01-27 10:26 ` [PATCH v2 07/15] target/ppc: Restrict powerpc_checkstop() to TCG Philippe Mathieu-Daudé
2025-01-28 9:31 ` Harsh Prateek Bora
2025-01-27 10:26 ` [PATCH v2 08/15] target/ppc: Remove raise_exception_ra() Philippe Mathieu-Daudé
2025-01-28 9:46 ` Harsh Prateek Bora
2025-01-28 10:08 ` Philippe Mathieu-Daudé
2025-01-27 10:26 ` [PATCH v2 09/15] target/ppc: Restrict exception helpers to TCG Philippe Mathieu-Daudé
2025-01-28 9:59 ` Harsh Prateek Bora
2025-01-28 10:03 ` Philippe Mathieu-Daudé
2025-01-27 10:26 ` [PATCH v2 10/15] target/ppc: Restrict ppc_tcg_hv_emu() " Philippe Mathieu-Daudé
2025-01-28 11:05 ` Harsh Prateek Bora
2025-01-27 10:26 ` [PATCH v2 11/15] target/ppc: Restrict various common helpers " Philippe Mathieu-Daudé
2025-01-29 5:43 ` Harsh Prateek Bora
2025-01-27 10:26 ` [PATCH v2 12/15] target/ppc: Fix style in excp_helper.c Philippe Mathieu-Daudé
2025-01-29 5:54 ` Harsh Prateek Bora
2025-01-27 10:26 ` [PATCH v2 13/15] target/ppc: Make powerpc_excp() prototype public Philippe Mathieu-Daudé
2025-01-29 5:58 ` Harsh Prateek Bora
2025-01-27 10:26 ` [PATCH v2 14/15] target/ppc: Restrict ATTN / SCV / PMINSN helpers to TCG Philippe Mathieu-Daudé
2025-01-29 6:03 ` Harsh Prateek Bora [this message]
2025-01-27 10:26 ` [PATCH v2 15/15] target/ppc: Restrict various system " Philippe Mathieu-Daudé
2025-03-11 6:22 ` [PATCH v2 00/15] target/ppc: Move TCG code from excp_helper.c to tcg-excp_helper.c Nicholas Piggin
2025-03-11 7:15 ` Philippe Mathieu-Daudé
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=3bf9f4e7-c091-4dc3-99a5-cac148efbead@linux.ibm.com \
--to=harshpb@linux.ibm.com \
--cc=danielhb413@gmail.com \
--cc=npiggin@gmail.com \
--cc=philmd@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.