qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Re: [PATCH 08/10] MCE: Relay UCR MCE to guest


From: Marcelo Tosatti
Subject: Re: [Qemu-devel] Re: [PATCH 08/10] MCE: Relay UCR MCE to guest
Date: Wed, 20 Oct 2010 19:28:47 -0200
User-agent: Mutt/1.5.20 (2009-08-17)

On Wed, Oct 20, 2010 at 02:51:56PM -0500, Anthony Liguori wrote:
> >+        e = errno;
> >+
> >+        qemu_mutex_lock(&qemu_global_mutex);
> >+
> >+        if (r == -1&&  !(e == EAGAIN || e == EINTR)) {
> >+            fprintf(stderr, "sigtimedwait: %s\n", strerror(e));
> >+            exit(1);
> >+        }
> >+
> >+        switch (r) {
> >+        case SIGBUS:
> >+#ifdef TARGET_I386
> >+            if (kvm_on_sigbus_vcpu(env, siginfo.si_code, siginfo.si_addr))
> >+#endif
> >+                sigbus_reraise();
> >+            break;
> >+        default:
> >+            break;
> >+        }
> >+
> >+        r = sigpending(&chkset);
> >+        if (r == -1) {
> >+            fprintf(stderr, "sigpending: %s\n", strerror(e));
> >+            exit(1);
> >+        }
> >+    } while (sigismember(&chkset, SIG_IPI) || sigismember(&chkset, SIGBUS));
> >  }
> 
> I don't understand why this loop is needed but we specifically wait
> for a signal to get delivered that's either SIG_IPI or SIGBUS.  We
> then check whether a SIG_IPI or SIGBUS is pending and loop waiting
> for signals again.
>
> Shouldn't we be looping on just sigismember(SIGBUS)?

Think of SIG_IPI and SIGBUS pending. SIGBUS must be processed
immediately.

Yes, sigismember(SIGBUS) would be fine. But the current code too.

> BTW, we're no longer respecting timeout because we're not adjusting
> ts after each iteration.

Right, timeout not used at the moment.



reply via email to

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