Re: [PATCH 07/18] kvm: Add MCE signal support for !CONFIG_IOTHREAD

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

 



On Mon, Jan 10, 2011 at 09:32:00AM +0100, Jan Kiszka wrote:
> From: Jan Kiszka <jan.kiszka@xxxxxxxxxxx>
> 
> Currently, we only configure and process MCE-related SIGBUS events if
> CONFIG_IOTHREAD is enabled. Fix this by factoring out the required
> handler registration and system configuration. Make sure that events
> happening over a VCPU context in non-threaded mode get dispatched as
> VCPU MCEs.
> 
> We also need to call qemu_kvm_eat_signals in non-threaded mode now, so
> move it (unmodified) and add the required Windows stub.
> 
> Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx>
> CC: Huang Ying <ying.huang@xxxxxxxxx>
> ---
>  cpus.c |  200 +++++++++++++++++++++++++++++++++++++++------------------------
>  1 files changed, 124 insertions(+), 76 deletions(-)
> 
> diff --git a/cpus.c b/cpus.c
> index 6da0f8f..b6f1cfb 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -34,9 +34,6 @@
>  
>  #include "cpus.h"
>  #include "compatfd.h"
> -#ifdef CONFIG_LINUX
> -#include <sys/prctl.h>
> -#endif
>  
>  #ifdef SIGRTMIN
>  #define SIG_IPI (SIGRTMIN+4)
> @@ -44,10 +41,24 @@
>  #define SIG_IPI SIGUSR1
>  #endif
>  

> @@ -912,6 +954,8 @@ static int qemu_cpu_exec(CPUState *env)
>  
>  bool cpu_exec_all(void)
>  {
> +    int r;
> +
>      if (next_cpu == NULL)
>          next_cpu = first_cpu;
>      for (; next_cpu != NULL && !exit_request; next_cpu = next_cpu->next_cpu) {
> @@ -923,7 +967,11 @@ bool cpu_exec_all(void)
>          if (qemu_alarm_pending())
>              break;
>          if (cpu_can_run(env)) {
> -            if (qemu_cpu_exec(env) == EXCP_DEBUG) {
> +            r = qemu_cpu_exec(env);
> +            if (kvm_enabled()) {
> +                qemu_kvm_eat_signals(env);
> +            }
> +            if (r == EXCP_DEBUG) {
>                  break;
>              }

SIGBUS should be processed outside of vcpu execution context, think of a
non MCE SIGBUS while vm is stopped. Could use signalfd for that.

But the SIGBUS handler for !IOTHREAD case should not ignore Action
Required, since it might have been generated in vcpu context.

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux