1. 06 11月, 2013 2 次提交
  2. 04 11月, 2013 3 次提交
    • P
      vl: allow "cont" from panicked state · df390768
      Paolo Bonzini 提交于
      After reporting the GUEST_PANICKED monitor event, QEMU stops the VM.
      The reason for this is that events are edge-triggered, and can be lost if
      management dies at the wrong time.  Stopping a panicked VM lets management
      know of a panic even if it has crashed; management can learn about the
      panic when it restarts and queries running QEMU processes.  The downside
      is of course that the VM will be paused while management is not running,
      but that is acceptable if it only happens with explicit "-device pvpanic".
      
      Upon learning of a panic, management (if configured to do so) can pick a
      variety of behaviors: leave the VM paused, reset it, destroy it.  In
      addition to all of these behaviors, it is possible to dump the VM core
      from the host.
      
      However, right now, the panicked state is irreversible, and can only be
      exited by resetting the machine.  This means that any policy decision
      is entirely in the hands of the host.  In particular there is no way to
      use the "reboot on panic" option together with pvpanic.
      
      This patch makes the panicked state reversible (and removes various
      workarounds that were there because of the state being irreversible).
      With this change, management has a wider set of possible policies: it
      can just log the crash and leave policy to the guest, it can leave the
      VM paused.  In particular, the "log the crash and continue" is implemented
      simply by sending a "cont" as soon as management learns about the panic.
      Management could also implement the "irreversible paused state" itself.
      And again, all such actions can be coupled with dumping the VM core.
      
      Unfortunately we cannot change the behavior of 1.6.0.  Thus, even if
      it uses "-device pvpanic", management should check for "cont" failures.
      If "cont" fails, management can then log that the VM remained paused
      and urge the administrator to update QEMU.
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Reviewed-by: NLuiz Capitulino <lcapitulino@redhat.com>
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      df390768
    • M
      exec: limit system memory size · 818f86b8
      Michael S. Tsirkin 提交于
      The page table logic in exec.c assumes
      that memory addresses are at most TARGET_PHYS_ADDR_SPACE_BITS.
      
      But pci addresses are full 64 bit so if we try to render them ignoring
      the extra bits, we get strange effects with sections overlapping each
      other.
      
      To fix, simply limit the system memory size to
       1 << TARGET_PHYS_ADDR_SPACE_BITS,
      pci addresses will be rendered within that.
      
      Cc: qemu-stable@nongnu.org
      Reported-by: NAndreas Färber <afaerber@suse.de>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      818f86b8
    • M
      pc: disable acpi info for isapc and old pc machine · 98af2ac9
      Michael S. Tsirkin 提交于
      Disable acpi build for isapc and no_kvmclock machine
      types (used by xen), since acpi build currently expects pci.
      Reported-by: NAndreas Färber <afaerber@suse.de>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      98af2ac9
  3. 01 11月, 2013 6 次提交
    • A
      Merge remote-tracking branch 'kwolf/tags/for-anthony' into staging · a126050a
      Anthony Liguori 提交于
      Block patches for 1.7.0-rc0 (v2)
      
      # gpg: Signature made Thu 31 Oct 2013 04:44:39 PM CET using RSA key ID C88F2FD6
      # gpg: Can't check signature: public key not found
      
      * kwolf/tags/for-anthony: (30 commits)
        vmdk: Implment bdrv_get_specific_info
        qapi: Add optional field 'compressed' to ImageInfo
        qemu-iotests: prefill some data to test image
        sheepdog: check simultaneous create in resend_aioreq
        sheepdog: cancel aio requests if possible
        sheepdog: make add_aio_request and send_aioreq void functions
        sheepdog: try to reconnect to sheepdog after network error
        coroutine: add co_aio_sleep_ns() to allow sleep in block drivers
        sheepdog: reload inode outside of resend_aioreq
        sheepdog: handle vdi objects in resend_aio_req
        sheepdog: check return values of qemu_co_recv/send correctly
        qemu-iotests: Test case for backing file deletion
        qemu-iotests: drop duplicated "create_image"
        qemu-iotests: Fix 051 reference output
        block: Avoid unecessary drv->bdrv_getlength() calls
        block: Disable BDRV_O_COPY_ON_READ for the backing file
        ahci: fix win7 hang on boot
        sheepdog: pass copy_policy in the request
        sheepdog: explicitly set copies as type uint8_t
        block: Don't copy backing file name on error
        ...
      
      Message-id: 1383064269-27720-1-git-send-email-kwolf@redhat.com
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      a126050a
    • A
      Merge remote-tracking branch 'mjt/trivial-patches' into staging · ef5cfe5b
      Anthony Liguori 提交于
      * mjt/trivial-patches:
        audio/mixeng_template.h: fix inline declaration
        misc: Spelling and grammar fixes in comments
        docs/ccid.txt: fix the typo
        qapi: fix documentation example
        .gitignore: ignore qmp-commands.txt
        misc: New spelling fixes in comments
        configure: create fsdev/ directory
      
      Message-id: 1382779887-15971-1-git-send-email-mjt@msgid.tls.msk.ru
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      ef5cfe5b
    • A
      Merge remote-tracking branch 'agraf/ppc-for-upstream' into staging · 1ba1905a
      Anthony Liguori 提交于
      * agraf/ppc-for-upstream: (29 commits)
        spapr: Use DeviceClass::fw_name for device tree CPU node
        target-ppc: Fill in OpenFirmware names for some PowerPCCPU families
        target-ppc: dump-guest-memory support
        dump-guest-memory: Check for the correct return value
        target-ppc: Use #define for max slb entries
        target-ppc: Check for error on address translation in memsave command
        target-ppc: Update slb array with correct index values.
        spapr-pci: enable irqfd for INTx
        xics-kvm: enable irqfd for MSI
        xics: Implement H_XIRR_X
        xics: Implement H_IPOLL
        xics-kvm: Support for in-kernel XICS interrupt controller
        xics: add cpu_setup callback
        xics: split to xics and xics-common
        xics: add missing const specifiers to TypeInfo
        xics: convert init() to realize()
        xics: add pre_save/post_load dispatchers
        xics: replace fprintf with error_report
        spapr: move cpu_setup after kvmppc_set_papr
        xics: move reset and cpu_setup
        ...
      
      Message-id: 1382736474-32128-1-git-send-email-agraf@suse.de
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      1ba1905a
    • A
      Merge remote-tracking branch 'kraxel/audio.2' into staging · e2cb2902
      Anthony Liguori 提交于
      * kraxel/audio.2:
        audio: honor QEMU_AUDIO_TIMER_PERIOD instead of waking up every *nano* second
      
      Message-id: 1382622110-19460-1-git-send-email-kraxel@redhat.com
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      e2cb2902
    • A
      Merge remote-tracking branch 'kraxel/usb.91' into staging · cb95ec1b
      Anthony Liguori 提交于
      * kraxel/usb.91:
        usb-hcd-xhci: Update endpoint context dequeue pointer for streams too
        usb-hcd-xhci: Report completion of active transfer with CC_STOPPED on ep stop
        usb-hcd-xhci: Remove unused cancelled member from XHCITransfer
        usb-hcd-xhci: Remove unused sstreamsm member from XHCIStreamContext
        usb-host-libusb: Detach kernel drivers earlier
        usb-host-libusb: Configuration 0 may be a valid configuration
        usb-host-libusb: Fix reset handling
      
      Message-id: 1382620267-18065-1-git-send-email-kraxel@redhat.com
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      cb95ec1b
    • A
      Merge remote-tracking branch 'luiz/queue/qmp' into staging · 3fa4270a
      Anthony Liguori 提交于
      * luiz/queue/qmp:
        monitor: eliminate monitor_event_state_lock
      
      Message-id: 1382121003-5211-1-git-send-email-lcapitulino@redhat.com
      Signed-off-by: NAnthony Liguori <anthony@codemonkey.ws>
      3fa4270a
  4. 31 10月, 2013 10 次提交
  5. 30 10月, 2013 12 次提交
  6. 29 10月, 2013 7 次提交
    • K
      block: Avoid unecessary drv->bdrv_getlength() calls · b94a2610
      Kevin Wolf 提交于
      The block layer generally keeps the size of an image cached in
      bs->total_sectors so that it doesn't have to perform expensive
      operations to get the size whenever it needs it.
      
      This doesn't work however when using a backend that can change its size
      without qemu being aware of it, i.e. passthrough of removable media like
      CD-ROMs or floppy disks. For this reason, the caching is disabled when a
      removable device is used.
      
      It is obvious that checking whether the _guest_ device has removable
      media isn't the right thing to do when we want to know whether the size
      of the host backend can change. To make things worse, non-top-level
      BlockDriverStates never have any device attached, which makes qemu
      assume they are removable, so drv->bdrv_getlength() is always called on
      the protocol layer. In the case of raw-posix, this causes unnecessary
      lseek() system calls, which turned out to be rather expensive.
      
      This patch completely changes the logic and disables bs->total_sectors
      caching only for certain block driver types, for which a size change is
      expected: host_cdrom and host_floppy on POSIX, host_device on win32; also
      the raw format in case it sits on top of one of these protocols, but in
      the common case the nested bdrv_getlength() call on the protocol driver
      will use the cache again and avoid an expensive drv->bdrv_getlength()
      call.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Reviewed-by: NPaolo Bonzini <pbonzini@redhat.com>
      b94a2610
    • T
      block: Disable BDRV_O_COPY_ON_READ for the backing file · 87a5debd
      Thibaut LAURENT 提交于
      Since commit 0ebd24e0,
      bdrv_open_common will throw an error when trying to open a file
      read-only with the BDRV_O_COPY_ON_READ flag set.
      Although BDRV_O_RDWR is unset for the backing files,
      BDRV_O_COPY_ON_READ is still passed on if copy-on-read was requested
      for the drive. Let's unset this flag too before opening the backing
      file, or bdrv_open_common will fail.
      Signed-off-by: NThibaut LAURENT <thibaut.laurent@gmail.com>
      Reviewed-by: NBenoit Canet <benoit@irqsave.net>
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      87a5debd
    • A
      ahci: fix win7 hang on boot · 8464b273
      Alexander Graf 提交于
      When AHCI executes an asynchronous IDE command, it checked DRDY without
      checking either DRQ or BSY.  This sometimes caused interrupt to be sent
      before command is actually completed.
      
      This resulted in a race condition: if guest then managed to access the
      device before command has completed, it would hang waiting for an
      interrupt.
      This was observed with windows 7 guests.
      
      To fix, check for DRQ or BSY in additiona to DRDY, if set,
      the command is asynchronous so delay the interrupt until
      asynchronous done callback is invoked.
      Reported-by: NMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
      Tested-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      8464b273
    • L
      sheepdog: pass copy_policy in the request · 1841f880
      Liu Yuan 提交于
      Currently copy_policy isn't used. Recent sheepdog supports erasure coding, which
      make use of copy_policy internally, but require client explicitly passing
      copy_policy from base inode to newly creately inode for snapshot related
      operations.
      
      If connected sheep daemon doesn't utilize copy_policy, passing it to sheep
      daemon is just one extra null effect operation. So no compatibility problem.
      
      With this patch, sheepdog can provide erasure coded volume for QEMU VM.
      
      Cc: Kevin Wolf <kwolf@redhat.com>
      Cc: Stefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NLiu Yuan <namei.unix@gmail.com>
      Acked-by: NMORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      1841f880
    • L
      sheepdog: explicitly set copies as type uint8_t · 29a67f7e
      Liu Yuan 提交于
      'copies' is actually uint8_t since day one, but request headers and some helper
      functions parameterize it as uint32_t for unknown reasons and effectively
      reserve 24 bytes for possible future use. This patch explicitly set the correct
      for copies and reserve the left bytes.
      
      This is a preparation patch that allow passing copy_policy in request header.
      
      Cc: Kevin Wolf <kwolf@redhat.com>
      Cc: Stefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NLiu Yuan <namei.unix@gmail.com>
      Acked-by: NMORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      29a67f7e
    • M
      block: Don't copy backing file name on error · 61ed2684
      Max Reitz 提交于
      bdrv_open_backing_file() tries to copy the backing file name using
      pstrcpy directly after calling bdrv_open() to open the backing file
      without checking whether that was actually successful. If it was not,
      ps->backing_hd->file will probably be NULL and qemu will crash.
      
      Fix this by moving pstrcpy after checking whether bdrv_open() succeeded.
      Signed-off-by: NMax Reitz <mreitz@redhat.com>
      Reviewed-by: NBenoit Canet <benoit@irqsave.net>
      Reviewed-by: Amos_沧海桑田's avatarAmos Kong <kongjianjun@gmail.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      61ed2684
    • K
      tests: Multiboot mmap test case · d1f3a23b
      Kevin Wolf 提交于
      This adds a test case for Multiboot memory map in the tests/multiboot
      directory, where future i386 test kernels can be dropped. Because this
      requires an x86 build host and an installed 32 bit libgcc, the test is
      not part of a regular 'make check'.
      
      The reference output for the test is verified against test runs of the
      same multiboot kernel booted by some GRUB 0.97.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      d1f3a23b