From: Thomas Huth <thuth@redhat.com>
To: Alexander Graf <agraf@suse.com>,
Paul Mackerras <paulus@samba.org>,
kvm-ppc@vger.kernel.org
Cc: kvm@vger.kernel.org, lvivier@redhat.com
Subject: Re: [PATCH v2] KVM: PPC: Fix contents of SRR1 when injecting a program exception in kvm-pr
Date: Tue, 14 Jun 2016 17:51:49 +0000 [thread overview]
Message-ID: <57604435.3080808@redhat.com> (raw)
In-Reply-To: <1463650411-13597-1-git-send-email-thuth@redhat.com>
On 19.05.2016 11:33, Thomas Huth wrote:
> vcpu->arch.shadow_srr1 only contains usable values for injecting
> a program exception into the guest if we entered the function
> kvmppc_handle_exit_pr() with exit_nr = BOOK3S_INTERRUPT_PROGRAM.
> In other cases, the shadow_srr1 bits are zero. Since we want to
> pass an illegal-instruction program check to the guest, set
> "flags" to SRR1_PROGILL for these other cases.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> v2: Added a comment, as suggested by Alexander Graf
>
> arch/powerpc/kvm/book3s_pr.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
> index 95bceca..e67b8ea 100644
> --- a/arch/powerpc/kvm/book3s_pr.c
> +++ b/arch/powerpc/kvm/book3s_pr.c
> @@ -1031,7 +1031,17 @@ int kvmppc_handle_exit_pr(struct kvm_run *run, struct kvm_vcpu *vcpu,
> int emul;
>
> program_interrupt:
> - flags = vcpu->arch.shadow_srr1 & 0x1f0000ull;
> + /*
> + * shadow_srr1 only contains valid flags if we came here via
> + * a program exception. The other exceptions (emulation assist,
> + * FP unavailable, etc.) do not provide flags in SRR1, so use
> + * an illegal-instruction exception when injecting a program
> + * interrupt into the guest.
> + */
> + if (exit_nr = BOOK3S_INTERRUPT_PROGRAM)
> + flags = vcpu->arch.shadow_srr1 & 0x1f0000ull;
> + else
> + flags = SRR1_PROGILL;
>
> emul = kvmppc_get_last_inst(vcpu, INST_GENERIC, &last_inst);
> if (emul != EMULATE_DONE) {
>
*ping*
Thomas
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Huth <thuth@redhat.com>
To: Alexander Graf <agraf@suse.com>,
Paul Mackerras <paulus@samba.org>,
kvm-ppc@vger.kernel.org
Cc: kvm@vger.kernel.org, lvivier@redhat.com
Subject: Re: [PATCH v2] KVM: PPC: Fix contents of SRR1 when injecting a program exception in kvm-pr
Date: Tue, 14 Jun 2016 19:51:49 +0200 [thread overview]
Message-ID: <57604435.3080808@redhat.com> (raw)
In-Reply-To: <1463650411-13597-1-git-send-email-thuth@redhat.com>
On 19.05.2016 11:33, Thomas Huth wrote:
> vcpu->arch.shadow_srr1 only contains usable values for injecting
> a program exception into the guest if we entered the function
> kvmppc_handle_exit_pr() with exit_nr == BOOK3S_INTERRUPT_PROGRAM.
> In other cases, the shadow_srr1 bits are zero. Since we want to
> pass an illegal-instruction program check to the guest, set
> "flags" to SRR1_PROGILL for these other cases.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> v2: Added a comment, as suggested by Alexander Graf
>
> arch/powerpc/kvm/book3s_pr.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
> index 95bceca..e67b8ea 100644
> --- a/arch/powerpc/kvm/book3s_pr.c
> +++ b/arch/powerpc/kvm/book3s_pr.c
> @@ -1031,7 +1031,17 @@ int kvmppc_handle_exit_pr(struct kvm_run *run, struct kvm_vcpu *vcpu,
> int emul;
>
> program_interrupt:
> - flags = vcpu->arch.shadow_srr1 & 0x1f0000ull;
> + /*
> + * shadow_srr1 only contains valid flags if we came here via
> + * a program exception. The other exceptions (emulation assist,
> + * FP unavailable, etc.) do not provide flags in SRR1, so use
> + * an illegal-instruction exception when injecting a program
> + * interrupt into the guest.
> + */
> + if (exit_nr == BOOK3S_INTERRUPT_PROGRAM)
> + flags = vcpu->arch.shadow_srr1 & 0x1f0000ull;
> + else
> + flags = SRR1_PROGILL;
>
> emul = kvmppc_get_last_inst(vcpu, INST_GENERIC, &last_inst);
> if (emul != EMULATE_DONE) {
>
*ping*
Thomas
next prev parent reply other threads:[~2016-06-14 17:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-19 9:33 [PATCH v2] KVM: PPC: Fix contents of SRR1 when injecting a program exception in kvm-pr Thomas Huth
2016-05-19 9:33 ` Thomas Huth
2016-06-14 17:51 ` Thomas Huth [this message]
2016-06-14 17:51 ` Thomas Huth
2016-06-24 9:21 ` Paul Mackerras
2016-06-24 9:21 ` Paul Mackerras
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=57604435.3080808@redhat.com \
--to=thuth@redhat.com \
--cc=agraf@suse.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=kvm@vger.kernel.org \
--cc=lvivier@redhat.com \
--cc=paulus@samba.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.