• - MCE features are initialized when VCPU is intialized according to CPUID.
    - A monitor command "mce" is added to inject a MCE.
    - A new interrupt mask: CPU_INTERRUPT_MCE is added to inject the MCE.
    
    aliguori: fix build for linux-user
    
    Signed-off-by: Huang Ying <ying.huang@intel.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Huang Ying authored
     
    Browse Code »

  • This should fix compilation problem in case of CONFIG_USER_ONLY.
    
    Currently INIT/SIPI is handled in the context of CPU that sends IPI.
    This patch changes this to handle them like all other events in a main
    cpu exec loop. When KVM will gain thread per vcpu capability it will
    be much more clear to handle those event by cpu thread itself and not
    modify one cpu's state from the context of the other.
    
    Signed-off-by: Gleb Natapov <gleb@redhat.com>
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    Gleb Natapov authored
     
    Browse Code »








  • env->interrupt_request is accessed as the bit level from both main code
    and signal handler, making a race condition possible even on CISC CPU.
    This causes freeze of QEMU under high load when running the dyntick
    clock.
    
    The patch below move the bit corresponding to CPU_INTERRUPT_EXIT in a
    separate variable, declared as volatile sig_atomic_t, so it should be
    work even on RISC CPU.
    
    We may want to move the cpu_interrupt(env, CPU_INTERRUPT_EXIT) case in
    its own function and get rid of CPU_INTERRUPT_EXIT. That can be done
    later, I wanted to keep the patch short for easier review.
    
    Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6728 c046a42c-6fe2-441c-8c8c-71466251a162
    aurel32 authored
     
    Browse Code »






  • SVM specifies that the V_IRQ mask is only to be removed, if the
    interrupt that is to be delivered actually is delivered.
    
    As of the SVM rewrite, this mask is always unmasked when the main cpu
    loop is processed, leaving a corner case where calling the interrupt
    handler causes a #PF. In that case (booting Linux / starting gfxboot)
    the current implementation tells the VMM the interrupt is taken, even
    though it is not.
    
    This patch modifies the VIRQ unmasking to occur after do_interrupt,
    making gfxboot work again.
    
    Signed-off-by: Alexander Graf <agraf@suse.de>
    Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6008 c046a42c-6fe2-441c-8c8c-71466251a162
    aurel32 authored
     
    Browse Code »








  • Commit #5620 revealed an issue of the SSTEP_NOIRQ masking that was
    applied on all interrupt sources (including internal ones) when single
    stepping through the guest. Due to that commit, we now ended up in an
    infinite loop when CPU_INTERRUPT_EXIT was pending on SSTEP resume. That
    was due to #5620 eating all TBs while CPU_INTERRUPT_EXIT is pending, but
    SSTEP_NOIRQ preventing CPU_INTERRUPT_EXIT to be processed.
    
    What SSTEP_NOIRQ should actually do is to block the delivery of all
    external, guest visible interrupts. With the fix below applied, single
    stepping now works again.
    
    Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5643 c046a42c-6fe2-441c-8c8c-71466251a162
    malc authored
     
    Browse Code »
  • No longer used, remove it.
    
    Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
    Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5641 c046a42c-6fe2-441c-8c8c-71466251a162
    aurel32 authored
     
    Browse File »

  • This patch adds very basic KVM support.  KVM is a kernel module for Linux that
    allows userspace programs to make use of hardware virtualization support.  It
    current supports x86 hardware virtualization using Intel VT-x or AMD-V.  It
    also supports IA64 VT-i, PPC 440, and S390.
    
    This patch only implements the bare minimum support to get a guest booting.  It
    has very little impact the rest of QEMU and attempts to integrate nicely with
    the rest of QEMU.
    
    Even though this implementation is basic, it is significantly faster than TCG.
    Booting and shutting down a Linux guest:
    
    w/TCG:  1:32.36 elapsed  84% CPU
    
    w/KVM:  0:31.14 elapsed  59% CPU
    
    Right now, KVM is disabled by default and must be explicitly enabled with
     -enable-kvm.  We can enable it by default later when we have had better
    testing.
    
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    
    
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5627 c046a42c-6fe2-441c-8c8c-71466251a162
    aliguori authored
     
    Browse Code »

  • cpu_interrupt might be called while translating the TB, but before it
    is linked into a potentially infinite loop and becomes env->current_tb.
    
    Currently this can (and does) cause huge problems only when using
    dyntick clock, with other (periodic) clocks host_alarm_handler will
    eventually be executed resulting in a call to cpu_interrupt which will
    reset the recursion of running TB and the damage is "only" latency.
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5620 c046a42c-6fe2-441c-8c8c-71466251a162
    malc authored
     
    Browse Code »