diff mbox

target-i386: wake up processors that receive an SMI

Message ID 1432036024-29399-1-git-send-email-pbonzini@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini May 19, 2015, 11:47 a.m. UTC
An SMI should definitely wake up a processor in halted state!
This lets OVMF boot with SMM on multiprocessor systems, although
it halts very soon after that with a "CpuIndex != BspIndex"
assertion failure.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target-i386/cpu.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Laszlo Ersek May 19, 2015, 11:57 a.m. UTC | #1
On 05/19/15 13:47, Paolo Bonzini wrote:
> An SMI should definitely wake up a processor in halted state!
> This lets OVMF boot with SMM on multiprocessor systems, although
> it halts very soon after that with a "CpuIndex != BspIndex"
> assertion failure.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  target-i386/cpu.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 7b6f9e4..4c4496b 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -2982,6 +2982,7 @@ static bool x86_cpu_has_work(CPUState *cs)
>      return ((cs->interrupt_request & CPU_INTERRUPT_HARD) &&
>              (env->eflags & IF_MASK)) ||
>             (cs->interrupt_request & (CPU_INTERRUPT_NMI |
> +                                     CPU_INTERRUPT_SMI |
>                                       CPU_INTERRUPT_INIT |
>                                       CPU_INTERRUPT_SIPI |
>                                       CPU_INTERRUPT_MCE));
> 

Great, that's something I should look into then. I'll apply this and
then see what's up with the assertion failure.

Thanks!
Laszlo
diff mbox

Patch

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 7b6f9e4..4c4496b 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -2982,6 +2982,7 @@  static bool x86_cpu_has_work(CPUState *cs)
     return ((cs->interrupt_request & CPU_INTERRUPT_HARD) &&
             (env->eflags & IF_MASK)) ||
            (cs->interrupt_request & (CPU_INTERRUPT_NMI |
+                                     CPU_INTERRUPT_SMI |
                                      CPU_INTERRUPT_INIT |
                                      CPU_INTERRUPT_SIPI |
                                      CPU_INTERRUPT_MCE));