[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 19/19] target/ppc: Add support for LPCR:HEIC on PO
From: |
David Gibson |
Subject: |
Re: [Qemu-ppc] [PATCH 19/19] target/ppc: Add support for LPCR:HEIC on POWER9 |
Date: |
Wed, 13 Feb 2019 16:18:14 +1100 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
On Mon, Jan 28, 2019 at 10:46:25AM +0100, Cédric Le Goater wrote:
> From: Benjamin Herrenschmidt <address@hidden>
>
> This controls whether the External Interrupt (0x500) can be
> delivered to the hypervisor or not.
>
> Signed-off-by: Benjamin Herrenschmidt <address@hidden>
> Signed-off-by: Cédric Le Goater <address@hidden>
Reviewed-by: David Gibson <address@hidden>
> ---
> target/ppc/excp_helper.c | 5 ++++-
> target/ppc/translate_init.inc.c | 5 ++++-
> 2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
> index d171a5eb6236..39bedbb11db0 100644
> --- a/target/ppc/excp_helper.c
> +++ b/target/ppc/excp_helper.c
> @@ -827,7 +827,10 @@ static void ppc_hw_interrupt(CPUPPCState *env)
> /* External interrupt can ignore MSR:EE under some circumstances */
> if (env->pending_interrupts & (1 << PPC_INTERRUPT_EXT)) {
> bool lpes0 = !!(env->spr[SPR_LPCR] & LPCR_LPES0);
> - if (async_deliver || (env->has_hv_mode && msr_hv == 0 && !lpes0)) {
> + bool heic = !!(env->spr[SPR_LPCR] & LPCR_HEIC);
> + /* HEIC blocks delivery to the hypervisor */
> + if ((async_deliver && !(heic && msr_hv && !msr_pr)) ||
> + (env->has_hv_mode && msr_hv == 0 && !lpes0)) {
> powerpc_excp(cpu, env->excp_model, POWERPC_EXCP_EXTERNAL);
> return;
> }
> diff --git a/target/ppc/translate_init.inc.c b/target/ppc/translate_init.inc.c
> index 7f25215f0192..63ded33ea7ea 100644
> --- a/target/ppc/translate_init.inc.c
> +++ b/target/ppc/translate_init.inc.c
> @@ -8823,7 +8823,10 @@ static bool cpu_has_work_POWER9(CPUState *cs)
> /* External Exception */
> if ((env->pending_interrupts & (1u << PPC_INTERRUPT_EXT)) &&
> (env->spr[SPR_LPCR] & LPCR_EEE)) {
> - return true;
> + bool heic = !!(env->spr[SPR_LPCR] & LPCR_HEIC);
> + if (heic == 0 || !msr_hv || msr_pr) {
> + return true;
> + }
> }
> /* Decrementer Exception */
> if ((env->pending_interrupts & (1u << PPC_INTERRUPT_DECR)) &&
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-ppc] [PATCH 19/19] target/ppc: Add support for LPCR:HEIC on POWER9,
David Gibson <=