1. 03 11月, 2012 22 次提交
  2. 02 11月, 2012 7 次提交
    • A
      Merge remote-tracking branch 'kraxel/usb.69' into staging · de0a36cd
      Anthony Liguori 提交于
      * kraxel/usb.69: (31 commits)
        usb-redir: Allow redirecting super speed devices to high speed controllers
        usb-redir: Allow to attach USB 2.0 devices to 1.1 host controller
        usb-redir: Use reject rather the disconnect on bad ep info
        usb-redir: Add an usbredir_setup_usb_eps() helper function
        usb-redir: Add support for input pipelining
        usb-redir: Add support for 32 bits bulk packet length
        combined-packet: Add a workaround for Linux usbfs + live migration
        usb: Add packet combining functions
        uhci: Don't crash on device disconnect
        uhci: Add a uhci_handle_td_error() helper function
        usb/ehci-pci: add helper to create ich9 usb controllers
        usb/ehci-pci: add ich9 00:1a.* variant
        usb/ehci-pci: dynamic type generation
        uhci: add ich9 00:1a.* variants
        uhci: stick irq routing info into UHCIInfo too.
        uhci: dynamic type generation
        xilinx_zynq: add USB controllers
        usb/ehci: add sysbus variant
        usb/ehci: split into multiple source files
        usb/ehci: Guard definition of EHCI_DEBUG
        ...
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      de0a36cd
    • A
      Merge remote-tracking branch 'kraxel/pixman.v3' into staging · 4ba79505
      Anthony Liguori 提交于
      * kraxel/pixman.v3: (22 commits)
        pixman: drop obsolete fields from DisplaySurface
        pixman/vnc: remove dead code.
        pixman/vnc: remove rgb_prepare_row* functions
        pixman/vnc: use pixman images in vnc.
        pixman: switch screendump function.
        vga: stop direct access to DisplaySurface fields.
        qxl: stop direct access to DisplaySurface fields.
        console: don't set PixelFormat alpha fields for 32bpp
        console: make qemu_alloc_display static
        pixman: add pixman image to DisplaySurface
        pixman: helper functions
        pixman: windup in configure & makefiles
        pixman: add submodule
        console: remove DisplayAllocator
        console: remove dpy_gfx_fill
        vga: fix text mode updating
        console: init displaychangelisteners on register
        console: untangle gfx & txt updates
        console: s/TextConsole/QemuConsole/
        console: move set_mouse + cursor_define callbacks
        ...
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      4ba79505
    • A
      Merge remote-tracking branch 'stefanha/net' into staging · d971919f
      Anthony Liguori 提交于
      * stefanha/net:
        e1000: pre-initialize RAH/RAL registers
        net: Reject non-netdevs in qmp_netdev_del()
        net: use "socket" model name for UDP sockets
        e1000: drop check_rxov, always treat RX ring with RDH == RDT as empty
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      d971919f
    • A
      Merge remote-tracking branch 'bonzini/threadpool' into staging · 5a34dbb5
      Anthony Liguori 提交于
      * bonzini/threadpool: (39 commits)
        raw-win32: implement native asynchronous I/O
        raw-posix: move linux-aio.c to block/
        raw-win32: add emulated AIO support
        raw-posix: rename raw-posix-aio.h, hide unavailable prototypes
        raw: merge posix-aio-compat.c into block/raw-posix.c
        block: switch posix-aio-compat to threadpool
        threadpool: do not take lock in event_notifier_ready
        aio: add generic thread-pool facility
        qemu-thread: add QemuSemaphore
        linux-aio: use event notifiers
        aio: clean up now-unused functions
        main-loop: use aio_notify for qemu_notify_event
        main-loop: use GSource to poll AIO file descriptors
        aio: call aio_notify after setting I/O handlers
        aio: add aio_notify
        aio: make AioContexts GSources
        aio: add Win32 implementation
        aio: prepare for introducing GSource-based dispatch
        aio: add non-blocking variant of aio_wait
        aio: test node->deleted before calling io_flush
        ...
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      5a34dbb5
    • A
      Merge remote-tracking branch 'qemu-kvm/uq/master' into staging · 43552994
      Anthony Liguori 提交于
      * qemu-kvm/uq/master: (28 commits)
        update-linux-headers.sh: Handle new kernel uapi/ directories
        target-i386: kvm_cpu_fill_host: use GET_SUPPORTED_CPUID
        target-i386: cpu: make -cpu host/check/enforce code KVM-specific
        target-i386: make cpu_x86_fill_host() void
        Emulate qemu-kvms -no-kvm option
        Issue warning when deprecated -tdf option is used
        Issue warning when deprecated drive parameter boot=on|off is used
        Use global properties to emulate -no-kvm-pit-reinjection
        Issue warning when deprecated -no-kvm-pit is used
        Use machine options to emulate -no-kvm-irqchip
        cirrus_vga: allow configurable vram size
        target-i386: Add missing kvm cpuid feature name
        i386: cpu: add missing CPUID[EAX=7,ECX=0] flag names
        i386: kvm: filter CPUID leaf 7 based on GET_SUPPORTED_CPUID, too
        i386: kvm: reformat filter_features_for_kvm() code
        i386: kvm: filter CPUID feature words earlier, on cpu.c
        i386: kvm: mask cpuid_ext4_features bits earlier
        i386: kvm: mask cpuid_kvm_features earlier
        i386: kvm: x2apic is not supported without in-kernel irqchip
        i386: kvm: set CPUID_EXT_TSC_DEADLINE_TIMER on kvm_arch_get_supported_cpuid()
        ...
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      43552994
    • A
      Merge remote-tracking branch 'afaerber/qom-cpu' into staging · 98c8a73b
      Anthony Liguori 提交于
      * afaerber/qom-cpu: (35 commits)
        target-i386: Pass X86CPU to kvm_handle_halt()
        target-i386: Pass X86CPU to kvm_get_mp_state()
        cpu: Move thread_id to CPUState
        cpus: Pass CPUState to run_on_cpu()
        target-i386: Pass X86CPU to cpu_x86_inject_mce()
        target-i386: Pass X86CPU to kvm_mce_inject()
        cpus: Pass CPUState to [qemu_]cpu_has_work()
        spapr: Pass PowerPCCPU to hypercalls
        spapr: Pass PowerPCCPU to spapr_hypercall()
        target-ppc: Pass PowerPCCPU to cpu_ppc_hypercall
        target-ppc: Pass PowerPCCPU to powerpc_excp()
        xtensa_pic: Pass XtensaCPU to xtensa_ccompare_cb()
        cpus: Pass CPUState to qemu_wait_io_event_common()
        cpus: Pass CPUState to flush_queued_work()
        cpu: Move queued_work_{first,last} to CPUState
        cpus: Pass CPUState to qemu_cpu_kick()
        target-ppc: Rename kvm_kick_{env => cpu} and pass PowerPCCPU
        ppc: Pass PowerPCCPU to {ppc6xx,ppc970,power7,ppc40x,ppce500}_set_irq()
        cpus: Pass CPUState to qemu_tcg_init_vcpu()
        cpus: Pass CPUState to qemu_tcg_cpu_thread_fn
        ...
      Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
      98c8a73b
    • P
      arm_boot: Change initrd load address to "halfway through RAM" · fc53b7d4
      Peter Maydell 提交于
      To avoid continually having to bump the initrd load address
      to account for larger kernel images, put the initrd halfway
      through RAM. This allows large kernels on new boards with lots
      of RAM to work OK, without breaking existing usecases for
      boards with only 32MB of RAM.
      
      Note that this change fixes in passing a bug where we were
      passing an overly large max_size to load_image_targphys()
      for the initrd, which meant that we wouldn't correctly refuse
      to load an enormous initrd that didn't actually fit into RAM.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NAurelien Jarno <aurelien@aurel32.net>
      Reviewed-by: NIgor Mitsyanko <i.mitsyanko@samsung.com>
      Tested-by: NCole Robinson <crobinso@redhat.com>
      Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
      fc53b7d4
  3. 01 11月, 2012 11 次提交
    • A
      Merge branch 'ppc-for-upstream' of git://repo.or.cz/qemu/agraf · 46a3f234
      Aurelien Jarno 提交于
      * 'ppc-for-upstream' of git://repo.or.cz/qemu/agraf:
        pseries: Cleanup duplications of ics_valid_irq() code
        pseries: Clean up inconsistent variable name in xics.c
        target-ppc: Extend FPU state for newer POWER CPUs
        target-ppc: Rework storage of VPA registration state
        Revert "PPC: pseries: Remove hack for PIO window"
      46a3f234
    • A
      Merge branch 'arm-devs.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm · 735c1eeb
      Aurelien Jarno 提交于
      * 'arm-devs.for-upstream' of git://git.linaro.org/people/pmaydell/qemu-arm: (28 commits)
        hw/sd.c: add SD card save/load support
        vmstate: Add support for saving/loading bitmaps
        hw/sd.c: Fix erase for high capacity cards
        pflash_cfi01: Fix debug mode printfery
        pflash_cfi0x: QOMified
        pflash_cfi01: remove unused total_len field
        pflash_cfi0x: remove unused base field
        hw/versatile_i2c: Use LOG_GUEST_ERROR
        hw/arm_l2x0: Use LOG_GUEST_ERROR
        hw/arm_sysctl: Use LOG_GUEST_ERROR
        hw/armv7m_nvic: Use LOG_GUEST_ERROR and LOG_UNIMP
        hw/arm_timer: Use LOG_GUEST_ERROR and LOG_UNIMP
        hw/arm_gic: Use LOG_GUEST_ERROR
        hw/arm11mpcore: Use LOG_GUEST_ERROR rather than hw_error()
        hw/pl190: Use LOG_UNIMP rather than hw_error()
        hw/pl110: Use LOG_GUEST_ERROR rather than hw_error()
        hw/pl080: Use LOG_GUEST_ERROR and LOG_UNIMP
        hw/pl061: Use LOG_GUEST_ERROR
        hw/pl050: Use LOG_GUEST_ERROR
        hw/exynos4_boards: Don't prematurely explode QEMUMachineInitArgs
        ...
      735c1eeb
    • H
    • J
      usb-redir: Allow to attach USB 2.0 devices to 1.1 host controller · cdfd3530
      Jan Kiszka 提交于
      This follows the logic of host-linux: If a 2.0 device has no ISO
      endpoint and no interrupt endpoint with a packet size > 64, we can
      attach it also to an 1.1 host controller. In case the redir server does
      not report endpoint sizes, play safe and remove the 1.1 compatibility as
      well. Moreover, if we detect a conflicting change in the configuration
      after the device was already attached, it will be disconnected
      immediately.
      
      HdG: Several small cleanups and fixes
      Signed-off-by: NJan Kiszka <jan.kiszka@siemens.com>
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      cdfd3530
    • H
      usb-redir: Use reject rather the disconnect on bad ep info · 24ac283a
      Hans de Goede 提交于
      So that the client gets a notification about us disconnecting the device.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      24ac283a
    • H
      7e03d178
    • H
      usb-redir: Add support for input pipelining · 1b36c4d8
      Hans de Goede 提交于
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      1b36c4d8
    • H
      c19a7981
    • H
      combined-packet: Add a workaround for Linux usbfs + live migration · 579967be
      Hans de Goede 提交于
      Older versions (anything but the latest) of Linux usbfs + libusb(x),
      will submit larger (bulk) transfers split into multiple 16k submissions,
      which means that rather then all tds getting linked into the queue in
      one atomic operarion they get linked in a bunch at a time, which could
      cause problems if:
      1) We scan the queue while libusb is in the middle of submitting a split
         bulk transfer
      2) While this bulk transfer is pending we migrate to another host.
      
      The problem is that after 2, the new host will rescan the queue and
      combine the packets in one large transfer, where as 1) has caused the
      original host to see them as 2 transfers. This patch fixes this by stopping
      combinging if we detect a 16k transfer with its int_req flag set.
      
      This should not adversely effect performance for other cases as:
      1) Linux never sets the interrupt flag on packets other then the last
      2) Windows does set the in_req flag on each td, but will submit large
      transfers in 20k tds thus never triggering the check
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      579967be
    • H
      usb: Add packet combining functions · a552a966
      Hans de Goede 提交于
      Currently we only do pipelining for output endpoints, since to properly
      support short-not-ok semantics we can only have one outstanding input
      packet. Since the ehci and uhci controllers have a limited per td packet
      size guests will split large input transfers to into multiple packets,
      and since we don't pipeline these, this comes with a serious performance
      penalty.
      
      This patch adds helper functions to (re-)combine packets which belong to 1
      transfer at the guest device-driver level into 1 large transger. This can be
      used by (redirection) usb-devices to enable pipelining for input endpoints.
      
      This patch will combine packets together until a transfer terminating packet
      is encountered. A terminating packet is a packet which meets one or more of
      the following conditions:
      1) The packet size is *not* a multiple of the endpoint max packet size
      2) The packet does *not* have its short-not-ok flag set
      3) The packet has its interrupt-on-complete flag set
      
      The short-not-ok flag of the combined packet is that of the terminating packet.
      Multiple combined packets may be submitted to the device, if the combined
      packets do not have their short-not-ok flag set, enabling true pipelining.
      
      If a combined packet does have its short-not-ok flag set the queue will
      wait with submitting further packets to the device until that packet has
      completed.
      
      Once enabled in the usb-redir and ehci code, this improves the speed (MB/s)
      of a Linux guest reading from a USB mass storage device by a factor of
      1.2 - 1.5.
      
      And the main reason why I started working on this, when reading from a pl2303
      USB<->serial converter, it combines the previous 4 packets submitted per
      device-driver level read into 1 big read, reducing the number of packets / sec
      by a factor 4, and it allows to have multiple reads outstanding. This allows
      for much better latency tolerance without the pl2303's internal buffer
      overflowing (which was happening at 115200 bps, without serial flow control).
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      a552a966
    • H
      uhci: Don't crash on device disconnect · 7f102ebe
      Hans de Goede 提交于
      My recent uhci cleanup series has introduced a regression, where
      qemu sometimes crashes on a device disconnect. The problem is that
      the uhci code never checked for a device not / no longer existing, instead
      it was relying on usb_handle_packet accepting a NULL device.
      
      But since we now pass usb_handle_packet q->ep->dev, rather then just
      a local dev variable, we crash as q->ep == NULL due to the device no longer
      existing.
      
      This patch fixes this. Note that this patch also improves over
      the old behavior were we would:
      1) create a queue for the device
      2) create an async for the packet
      3) have usb_handle_packet fail
      4) destroy the async
      5) wait for the queue to be idle for 32 frames
      6) destroy the queue
      
      Which was rather sub-optimal.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      7f102ebe