2022-11-03 14:29:03

by Maxim Levitsky

[permalink] [raw]
Subject: [PATCH v2 9/9] KVM: x86: remove exit_int_info warning in svm_handle_exit

It is valid to receive external interrupt and have broken IDT entry,
which will lead to #GP with exit_int_into that will contain the index of
the IDT entry (e.g any value).

Other exceptions can happen as well, like #NP or #SS
(if stack switch fails).

Thus this warning can be user triggred and has very little value.

Cc: [email protected]
Signed-off-by: Maxim Levitsky <[email protected]>
---
arch/x86/kvm/svm/svm.c | 9 ---------
1 file changed, 9 deletions(-)

diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index e9cec1b692051c..36f651ce842174 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -3428,15 +3428,6 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
return 0;
}

- if (is_external_interrupt(svm->vmcb->control.exit_int_info) &&
- exit_code != SVM_EXIT_EXCP_BASE + PF_VECTOR &&
- exit_code != SVM_EXIT_NPF && exit_code != SVM_EXIT_TASK_SWITCH &&
- exit_code != SVM_EXIT_INTR && exit_code != SVM_EXIT_NMI)
- printk(KERN_ERR "%s: unexpected exit_int_info 0x%x "
- "exit_code 0x%x\n",
- __func__, svm->vmcb->control.exit_int_info,
- exit_code);
-
if (exit_fastpath != EXIT_FASTPATH_NONE)
return 1;

--
2.34.3



2022-11-06 16:18:18

by Liam Merwick

[permalink] [raw]
Subject: Re: [PATCH v2 9/9] KVM: x86: remove exit_int_info warning in svm_handle_exit

On 03/11/2022 14:13, Maxim Levitsky wrote:
> It is valid to receive external interrupt and have broken IDT entry,
> which will lead to #GP with exit_int_into that will contain the index of
> the IDT entry (e.g any value).
>
> Other exceptions can happen as well, like #NP or #SS
> (if stack switch fails).
>
> Thus this warning can be user triggred and has very little value.
>
> Cc: [email protected]
> Signed-off-by: Maxim Levitsky <[email protected]>
> ---
> arch/x86/kvm/svm/svm.c | 9 ---------
> 1 file changed, 9 deletions(-)
>
> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
> index e9cec1b692051c..36f651ce842174 100644
> --- a/arch/x86/kvm/svm/svm.c
> +++ b/arch/x86/kvm/svm/svm.c
> @@ -3428,15 +3428,6 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
> return 0;
> }
>
> - if (is_external_interrupt(svm->vmcb->control.exit_int_info) &&
> - exit_code != SVM_EXIT_EXCP_BASE + PF_VECTOR &&
> - exit_code != SVM_EXIT_NPF && exit_code != SVM_EXIT_TASK_SWITCH &&
> - exit_code != SVM_EXIT_INTR && exit_code != SVM_EXIT_NMI)
> - printk(KERN_ERR "%s: unexpected exit_int_info 0x%x "
> - "exit_code 0x%x\n",
> - __func__, svm->vmcb->control.exit_int_info,
> - exit_code);
> -
> if (exit_fastpath != EXIT_FASTPATH_NONE)
> return 1;
>

This was the only caller of is_external_interrupt() - should the
definition be removed also to avoid a 'defined but not used' warning?

Regards,
Liam

2022-11-09 09:42:13

by Maxim Levitsky

[permalink] [raw]
Subject: Re: [PATCH v2 9/9] KVM: x86: remove exit_int_info warning in svm_handle_exit

On Sun, 2022-11-06 at 15:53 +0000, Liam Merwick wrote:
> On 03/11/2022 14:13, Maxim Levitsky wrote:
> > It is valid to receive external interrupt and have broken IDT entry,
> > which will lead to #GP with exit_int_into that will contain the index of
> > the IDT entry (e.g any value).
> >
> > Other exceptions can happen as well, like #NP or #SS
> > (if stack switch fails).
> >
> > Thus this warning can be user triggred and has very little value.
> >
> > Cc: [email protected]
> > Signed-off-by: Maxim Levitsky <[email protected]>
> > ---
> >   arch/x86/kvm/svm/svm.c | 9 ---------
> >   1 file changed, 9 deletions(-)
> >
> > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
> > index e9cec1b692051c..36f651ce842174 100644
> > --- a/arch/x86/kvm/svm/svm.c
> > +++ b/arch/x86/kvm/svm/svm.c
> > @@ -3428,15 +3428,6 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
> >                 return 0;
> >         }
> >  
> > -       if (is_external_interrupt(svm->vmcb->control.exit_int_info) &&
> > -           exit_code != SVM_EXIT_EXCP_BASE + PF_VECTOR &&
> > -           exit_code != SVM_EXIT_NPF && exit_code != SVM_EXIT_TASK_SWITCH &&
> > -           exit_code != SVM_EXIT_INTR && exit_code != SVM_EXIT_NMI)
> > -               printk(KERN_ERR "%s: unexpected exit_int_info 0x%x "
> > -                      "exit_code 0x%x\n",
> > -                      __func__, svm->vmcb->control.exit_int_info,
> > -                      exit_code);
> > -
> >         if (exit_fastpath != EXIT_FASTPATH_NONE)
> >                 return 1;
> >  
>
> This was the only caller of is_external_interrupt() - should the
> definition be removed also to avoid a 'defined but not used' warning?

I hate to say it but I have seen a warning about an unused function,
but I really didn't expect that to come from this patch.
I somehow thought that its some leftover in kvm/queue.

I'll remove the unused function in a next version.

Best regards,
Maxim Levitsky

>
> Regards,
> Liam
>



2022-11-21 17:24:20

by Liam Merwick

[permalink] [raw]
Subject: Re: [PATCH v2 9/9] KVM: x86: remove exit_int_info warning in svm_handle_exit

On 09/11/2022 09:15, Maxim Levitsky wrote:
> On Sun, 2022-11-06 at 15:53 +0000, Liam Merwick wrote:
>> On 03/11/2022 14:13, Maxim Levitsky wrote:
>>> It is valid to receive external interrupt and have broken IDT entry,
>>> which will lead to #GP with exit_int_into that will contain the index of
>>> the IDT entry (e.g any value).
>>>
>>> Other exceptions can happen as well, like #NP or #SS
>>> (if stack switch fails).
>>>
>>> Thus this warning can be user triggred and has very little value.
>>>
>>> Cc: [email protected]
>>> Signed-off-by: Maxim Levitsky <[email protected]>
>>> ---
>>>   arch/x86/kvm/svm/svm.c | 9 ---------
>>>   1 file changed, 9 deletions(-)
>>>
>>> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
>>> index e9cec1b692051c..36f651ce842174 100644
>>> --- a/arch/x86/kvm/svm/svm.c
>>> +++ b/arch/x86/kvm/svm/svm.c
>>> @@ -3428,15 +3428,6 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
>>>                 return 0;
>>>         }
>>>
>>> -       if (is_external_interrupt(svm->vmcb->control.exit_int_info) &&
>>> -           exit_code != SVM_EXIT_EXCP_BASE + PF_VECTOR &&
>>> -           exit_code != SVM_EXIT_NPF && exit_code != SVM_EXIT_TASK_SWITCH &&
>>> -           exit_code != SVM_EXIT_INTR && exit_code != SVM_EXIT_NMI)
>>> -               printk(KERN_ERR "%s: unexpected exit_int_info 0x%x "
>>> -                      "exit_code 0x%x\n",
>>> -                      __func__, svm->vmcb->control.exit_int_info,
>>> -                      exit_code);
>>> -
>>>         if (exit_fastpath != EXIT_FASTPATH_NONE)
>>>                 return 1;
>>>
>>
>> This was the only caller of is_external_interrupt() - should the
>> definition be removed also to avoid a 'defined but not used' warning?
>
> I hate to say it but I have seen a warning about an unused function,
> but I really didn't expect that to come from this patch.
> I somehow thought that its some leftover in kvm/queue.
>
> I'll remove the unused function in a next version.
>

Reviewed-by: Liam Merwick <[email protected]>