qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] 3/5: Bugfix needed for FreeBSD/amd64 guests


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH] 3/5: Bugfix needed for FreeBSD/amd64 guests
Date: Tue, 14 Oct 2008 12:06:11 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

On Wed, Oct 01, 2008 at 08:38:39PM +0200, Juergen Lock wrote:
> This was originally posted as:
>       
> http://www.nabble.com/-PATCH--i386-hard-interrupt-generation-bug-fix-p14921171.html

If I understand correctly, the problem appears when running
FreeBSD/amd64 as a guest. Could you please give more details about that?
(FreeBSD version, how to reproduce the problem, symptoms).

Thanks.

> Index: qemu/cpu-exec.c
> @@ -394,16 +394,18 @@
>                                       (env->eflags & IF_MASK && 
>                                        !(env->hflags & 
> HF_INHIBIT_IRQ_MASK))))) {
>                              int intno;
> -                            svm_check_intercept(SVM_EXIT_INTR);
>                              env->interrupt_request &= ~(CPU_INTERRUPT_HARD | 
> CPU_INTERRUPT_VIRQ);
>                              intno = cpu_get_pic_interrupt(env);
> -                            if (loglevel & CPU_LOG_TB_IN_ASM) {
> -                                fprintf(logfile, "Servicing hardware 
> INT=0x%02x\n", intno);
> +                            if (intno>=0) {
> +                                svm_check_intercept(SVM_EXIT_INTR);
> +                                if (loglevel & CPU_LOG_TB_IN_ASM) {
> +                                    fprintf(logfile, "Servicing hardware 
> INT=0x%02x\n", intno);
> +                                }
> +                                do_interrupt(intno, 0, 0, 0, 1);
> +                                /* ensure that no TB jump will be modified as
> +                                   the program flow was changed */
> +                                next_tb = 0;
>                              }
> -                            do_interrupt(intno, 0, 0, 0, 1);
> -                            /* ensure that no TB jump will be modified as
> -                               the program flow was changed */
> -                            next_tb = 0;
>  #if !defined(CONFIG_USER_ONLY)
>                          } else if ((interrupt_request & CPU_INTERRUPT_VIRQ) 
> &&
>                                     (env->eflags & IF_MASK) && 
> 
> Signed-off-by: Juergen Lock <address@hidden>
> 
> 
> 

-- 
  .''`.  Aurelien Jarno             | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   address@hidden         | address@hidden
   `-    people.debian.org/~aurel32 | www.aurel32.net




reply via email to

[Prev in Thread] Current Thread [Next in Thread]