* [PATCH][RESEND] Print a user-friendly message on failed vmentry
@ 2010-05-31 19:40 Mohammed Gamal
2010-06-01 8:59 ` Avi Kivity
0 siblings, 1 reply; 4+ messages in thread
From: Mohammed Gamal @ 2010-05-31 19:40 UTC (permalink / raw)
To: avi; +Cc: mtosatti, anthony, ryanh, kvm, Mohammed Gamal
This patch address bug report in https://bugs.launchpad.net/qemu/+bug/530077.
Failed vmentries were handled with handle_unhandled() which prints a rather
unfriendly message to the user. This patch separates handling vmentry failures
from unknown exit reasons and prints a friendly message to the user.
Signed-off-by: Mohammed Gamal <m.gamal005@gmail.com>
---
qemu-kvm.c | 27 ++++++++++++++++++++++++++-
1 files changed, 26 insertions(+), 1 deletions(-)
diff --git a/qemu-kvm.c b/qemu-kvm.c
index 9534b31..b8a9278 100644
--- a/qemu-kvm.c
+++ b/qemu-kvm.c
@@ -106,6 +106,31 @@ static int handle_unhandled(uint64_t reason)
return -EINVAL;
}
+#define VMX_INVALID_GUEST_STATE 0x80000021
+
+static int handle_failed_vmentry(uint64_t reason)
+{
+ fprintf(stderr, "kvm: vm entry failed with error 0x%" PRIx64 "\n\n", reason);
+
+ /* Perhaps we will need to check if this machine is intel since exit reason 0x21
+ has a different interpretation on SVM */
+ if (reason == VMX_INVALID_GUEST_STATE) {
+ fprintf(stderr, "If you're runnning a guest on an Intel machine without\n");
+ fprintf(stderr, "unrestricted mode support, the failure can be most likely\n");
+ fprintf(stderr, "due to the guest entering an invalid state for Intel VT.\n");
+ fprintf(stderr, "For example, the guest maybe running in big real mode\n");
+ fprintf(stderr, "which is not supported on less recent Intel processors.\n\n");
+ fprintf(stderr, "You may want to try enabling KVM real mode emulation. To\n");
+ fprintf(stderr, "enable it, you can run the following commands as root:\n");
+ fprintf(stderr, "# rmmod kvm_intel\n");
+ fprintf(stderr, "# rmmod kvm\n");
+ fprintf(stderr, "# modprobe kvm_intel emulate_invalid_guest_state=1\n\n");
+ fprintf(stderr, "WARNING: Real mode emulation is still work-in-progress\n");
+ fprintf(stderr, "and thus it is not always guaranteed to work.\n\n");
+ }
+
+ return -EINVAL;
+}
static inline void set_gsi(kvm_context_t kvm, unsigned int gsi)
{
@@ -586,7 +611,7 @@ int kvm_run(CPUState *env)
r = handle_unhandled(run->hw.hardware_exit_reason);
break;
case KVM_EXIT_FAIL_ENTRY:
- r = handle_unhandled(run->fail_entry.hardware_entry_failure_reason);
+ r = handle_failed_vmentry(run->fail_entry.hardware_entry_failure_reason);
break;
case KVM_EXIT_EXCEPTION:
fprintf(stderr, "exception %d (%x)\n", run->ex.exception,
--
1.7.0.4
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH][RESEND] Print a user-friendly message on failed vmentry
2010-05-31 19:40 [PATCH][RESEND] Print a user-friendly message on failed vmentry Mohammed Gamal
@ 2010-06-01 8:59 ` Avi Kivity
2010-06-01 10:55 ` Mohammed Gamal
0 siblings, 1 reply; 4+ messages in thread
From: Avi Kivity @ 2010-06-01 8:59 UTC (permalink / raw)
To: Mohammed Gamal; +Cc: mtosatti, anthony, ryanh, kvm
On 05/31/2010 10:40 PM, Mohammed Gamal wrote:
> This patch address bug report in https://bugs.launchpad.net/qemu/+bug/530077.
>
> Failed vmentries were handled with handle_unhandled() which prints a rather
> unfriendly message to the user. This patch separates handling vmentry failures
> from unknown exit reasons and prints a friendly message to the user.
>
>
>
> +#define VMX_INVALID_GUEST_STATE 0x80000021
> +
> +static int handle_failed_vmentry(uint64_t reason)
> +{
> + fprintf(stderr, "kvm: vm entry failed with error 0x%" PRIx64 "\n\n", reason);
> +
> + /* Perhaps we will need to check if this machine is intel since exit reason 0x21
> + has a different interpretation on SVM */
> + if (reason == VMX_INVALID_GUEST_STATE) {
> + fprintf(stderr, "If you're runnning a guest on an Intel machine without\n");
> + fprintf(stderr, "unrestricted mode support, the failure can be most likely\n");
> + fprintf(stderr, "due to the guest entering an invalid state for Intel VT.\n");
> + fprintf(stderr, "For example, the guest maybe running in big real mode\n");
> + fprintf(stderr, "which is not supported on less recent Intel processors.\n\n");
> + fprintf(stderr, "You may want to try enabling KVM real mode emulation. To\n");
> + fprintf(stderr, "enable it, you can run the following commands as root:\n");
> + fprintf(stderr, "# rmmod kvm_intel\n");
> + fprintf(stderr, "# rmmod kvm\n");
> + fprintf(stderr, "# modprobe kvm_intel emulate_invalid_guest_state=1\n\n");
> + fprintf(stderr, "WARNING: Real mode emulation is still work-in-progress\n");
> + fprintf(stderr, "and thus it is not always guaranteed to work.\n\n");
> + }
> +
> + return -EINVAL;
> +}
>
>
It's almost guaranteed to fail, isn't it? Is there any guest which
fails with emulated_invalid_guest_state=0 but works with e_i_g_s=1?
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH][RESEND] Print a user-friendly message on failed vmentry
2010-06-01 8:59 ` Avi Kivity
@ 2010-06-01 10:55 ` Mohammed Gamal
2010-06-01 12:40 ` Avi Kivity
0 siblings, 1 reply; 4+ messages in thread
From: Mohammed Gamal @ 2010-06-01 10:55 UTC (permalink / raw)
To: Avi Kivity; +Cc: mtosatti, anthony, ryanh, kvm
On Tue, Jun 1, 2010 at 11:59 AM, Avi Kivity <avi@redhat.com> wrote:
> On 05/31/2010 10:40 PM, Mohammed Gamal wrote:
>>
>> This patch address bug report in
>> https://bugs.launchpad.net/qemu/+bug/530077.
>>
>> Failed vmentries were handled with handle_unhandled() which prints a
>> rather
>> unfriendly message to the user. This patch separates handling vmentry
>> failures
>> from unknown exit reasons and prints a friendly message to the user.
>>
>>
>>
>> +#define VMX_INVALID_GUEST_STATE 0x80000021
>> +
>> +static int handle_failed_vmentry(uint64_t reason)
>> +{
>> + fprintf(stderr, "kvm: vm entry failed with error 0x%" PRIx64 "\n\n",
>> reason);
>> +
>> + /* Perhaps we will need to check if this machine is intel since exit
>> reason 0x21
>> + has a different interpretation on SVM */
>> + if (reason == VMX_INVALID_GUEST_STATE) {
>> + fprintf(stderr, "If you're runnning a guest on an Intel machine
>> without\n");
>> + fprintf(stderr, "unrestricted mode support, the failure can be
>> most likely\n");
>> + fprintf(stderr, "due to the guest entering an invalid state for
>> Intel VT.\n");
>> + fprintf(stderr, "For example, the guest maybe running in big real
>> mode\n");
>> + fprintf(stderr, "which is not supported on less recent Intel
>> processors.\n\n");
>> + fprintf(stderr, "You may want to try enabling KVM real mode
>> emulation. To\n");
>> + fprintf(stderr, "enable it, you can run the following commands as
>> root:\n");
>> + fprintf(stderr, "# rmmod kvm_intel\n");
>> + fprintf(stderr, "# rmmod kvm\n");
>> + fprintf(stderr, "# modprobe kvm_intel
>> emulate_invalid_guest_state=1\n\n");
>> + fprintf(stderr, "WARNING: Real mode emulation is still
>> work-in-progress\n");
>> + fprintf(stderr, "and thus it is not always guaranteed to
>> work.\n\n");
>> + }
>> +
>> + return -EINVAL;
>> +}
>>
>>
>
> It's almost guaranteed to fail, isn't it? Is there any guest which fails
> with emulated_invalid_guest_state=0 but works with e_i_g_s=1?
>
You're right! Perhaps I should remove the e_i_g_s bit from the
message. What do you think?
> --
> error compiling committee.c: too many arguments to function
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH][RESEND] Print a user-friendly message on failed vmentry
2010-06-01 10:55 ` Mohammed Gamal
@ 2010-06-01 12:40 ` Avi Kivity
0 siblings, 0 replies; 4+ messages in thread
From: Avi Kivity @ 2010-06-01 12:40 UTC (permalink / raw)
To: Mohammed Gamal; +Cc: mtosatti, anthony, ryanh, kvm
On 06/01/2010 01:55 PM, Mohammed Gamal wrote:
> On Tue, Jun 1, 2010 at 11:59 AM, Avi Kivity<avi@redhat.com> wrote:
>
>> On 05/31/2010 10:40 PM, Mohammed Gamal wrote:
>>
>>> This patch address bug report in
>>> https://bugs.launchpad.net/qemu/+bug/530077.
>>>
>>> Failed vmentries were handled with handle_unhandled() which prints a
>>> rather
>>> unfriendly message to the user. This patch separates handling vmentry
>>> failures
>>> from unknown exit reasons and prints a friendly message to the user.
>>>
>>>
>>>
>>> +#define VMX_INVALID_GUEST_STATE 0x80000021
>>> +
>>> +static int handle_failed_vmentry(uint64_t reason)
>>> +{
>>> + fprintf(stderr, "kvm: vm entry failed with error 0x%" PRIx64 "\n\n",
>>> reason);
>>> +
>>> + /* Perhaps we will need to check if this machine is intel since exit
>>> reason 0x21
>>> + has a different interpretation on SVM */
>>> + if (reason == VMX_INVALID_GUEST_STATE) {
>>> + fprintf(stderr, "If you're runnning a guest on an Intel machine
>>> without\n");
>>> + fprintf(stderr, "unrestricted mode support, the failure can be
>>> most likely\n");
>>> + fprintf(stderr, "due to the guest entering an invalid state for
>>> Intel VT.\n");
>>> + fprintf(stderr, "For example, the guest maybe running in big real
>>> mode\n");
>>> + fprintf(stderr, "which is not supported on less recent Intel
>>> processors.\n\n");
>>> + fprintf(stderr, "You may want to try enabling KVM real mode
>>> emulation. To\n");
>>> + fprintf(stderr, "enable it, you can run the following commands as
>>> root:\n");
>>> + fprintf(stderr, "# rmmod kvm_intel\n");
>>> + fprintf(stderr, "# rmmod kvm\n");
>>> + fprintf(stderr, "# modprobe kvm_intel
>>> emulate_invalid_guest_state=1\n\n");
>>> + fprintf(stderr, "WARNING: Real mode emulation is still
>>> work-in-progress\n");
>>> + fprintf(stderr, "and thus it is not always guaranteed to
>>> work.\n\n");
>>> + }
>>> +
>>> + return -EINVAL;
>>> +}
>>>
>>>
>>>
>> It's almost guaranteed to fail, isn't it? Is there any guest which fails
>> with emulated_invalid_guest_state=0 but works with e_i_g_s=1?
>>
>>
> You're right! Perhaps I should remove the e_i_g_s bit from the
> message. What do you think?
>
Sure. Better than the current message.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-06-01 12:40 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-31 19:40 [PATCH][RESEND] Print a user-friendly message on failed vmentry Mohammed Gamal
2010-06-01 8:59 ` Avi Kivity
2010-06-01 10:55 ` Mohammed Gamal
2010-06-01 12:40 ` Avi Kivity
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).