aboutsummaryrefslogtreecommitdiff
path: root/hw
AgeCommit message (Collapse)AuthorFilesLines
2012-12-03e1000: Discard packets that are too long if !SBP and !LPEMichael Contreras1-0/+10
The e1000_receive function for the e1000 needs to discard packets longer than 1522 bytes if the SBP and LPE flags are disabled. The linux driver assumes this behavior and allocates memory based on this assumption. Signed-off-by: Michael Contreras <michael@inetric.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-30Merge remote-tracking branch 'kwolf/for-anthony' into stagingAnthony Liguori2-11/+10
* kwolf/for-anthony: coroutine-sigaltstack.c: Use stack_t, not struct sigaltstack stream: fix ratelimit_set_speed atapi: make change media detection for guests easier Documentation: Update image format information Documentation: Update block cache mode information Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-30Merge remote-tracking branch 'spice/spice.v65' into stagingAnthony Liguori1-0/+1
* spice/spice.v65: qxl: reload memslots after migration, when qxl is in UNDEFINED mode Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-30Merge remote-tracking branch 'kraxel/usb.73' into stagingAnthony Liguori6-0/+12
* kraxel/usb.73: ehci-sysbus: Attach DMA context. usb: fail usbdevice_create() when there is no USB bus usb: tag usb host adapters as not hotpluggable. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-30atapi: make change media detection for guests easierPavel Hrdina2-11/+10
If you have a guest with a media in the optical drive and you change it, the windows guest cannot properly recognize this media change. Windows needs to detect sense "NOT_READY with ASC_MEDIUM_NOT_PRESENT" before we send sense "UNIT_ATTENTION with ASC_MEDIUM_MAY_HAVE_CHANGED". Signed-off-by: Pavel Hrdina <phrdina@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2012-11-29virtio: limit avail bytes lookaheadMichael S. Tsirkin4-12/+20
Commit 0d8d7690850eb0cf2b2b60933cf47669a6b6f18f introduced a regression in virtio-net performance because it looks into the ring aggressively while we really only care about a single packet worth of buffers. Reported as bugzilla 1066055 in launchpad. To fix, add parameters limiting lookahead, and use in virtqueue_avail_bytes. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reported-by: Edivaldo de Araujo Pereira <edivaldoapereira@yahoo.com.br> Tested-by: Edivaldo de Araujo Pereira <edivaldoapereira@yahoo.com.br> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-29qdev: relax bus type check in qdev_device_add() (v2)Anthony Liguori1-3/+2
We are currently checking for an exact type match. Use QOM dynamic_cast to check for a compatible type instead. Cc: Konrad Frederic <fred.konrad@greensocs.com> Cc: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> --- v1 -> v2: - also add cast to qbus_find_recursive (Peter) - simplify by doing object_dynamic_cast instead of messing with classes
2012-11-29ehci-sysbus: Attach DMA context.Peter Crosthwaite1-0/+1
This was left as NULL on the initial merge due to debate on the mailing list on how to handle DMA contexts for sysbus devices. Patch 9e11908f12f92e31ea94dc2a4c962c836cba9f2a was later merged to fix OHCI. This is the, equivalent fix for sysbus EHCI. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-29usb: fail usbdevice_create() when there is no USB busStefan Hajnoczi1-0/+7
Report an error instead of segfaulting when attaching a USB device to a machine with no USB busses: $ qemu-system-arm -machine vexpress-a9 \ -sd Fedora-17-armhfp-vexpress-mmcblk0.img \ -kernel vmlinuz-3.4.2-3.fc17.armv7hl \ -initrd initramfs-3.4.2-3.fc17.armv7hl.img \ -usbdevice disk:format=raw:test.img Note that the vexpress-a9 machine does not have a USB host controller. Reported-by: David Abdurachmanov <David.Abdurachmanov@cern.ch> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-29usb: tag usb host adapters as not hotpluggable.Gerd Hoffmann4-0/+4
Hotplugging them simply doesn't work, so tag them accordingly to avoid users trying and then crashing qemu. For xhci there is nothing fundamental which prevents hotplug from working, we'll "only" need a exit() function which cleans up everything properly. That isn't for 1.3 though. For ehci+uhci+ohci hotplug can't be supported until qemu gains the capability to hotplug multifunction pci devices. https://bugzilla.redhat.com/show_bug.cgi?id=879096 Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-29qxl: reload memslots after migration, when qxl is in UNDEFINED modeYonit Halperin1-0/+1
The devram memslot stays active when qxl enters UNDEFINED mode (i.e, no primary surface). If migration has occurred while the device is in UNDEFINED stae, the memslots have to be reloaded at the destination. Fixes rhbz#874574 Signed-off-by: Yonit Halperin <yhalperi@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-28Merge remote-tracking branch 'bonzini/scsi-next' into stagingAnthony Liguori1-5/+7
* bonzini/scsi-next: virtio-scsi: Fix subtle (guest) endian bug virtio-scsi: Fix some endian bugs with virtio-scsi iscsi: do not assume device is zero initialized iscsi: fix deadlock during login iscsi: fix segfault in url parsing Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-28Merge remote-tracking branch 'agraf/s390-for-upstream-1.3' into stagingAnthony Liguori2-2/+2
* agraf/s390-for-upstream-1.3: sclp: Fix uninitialized var in handle_write_event_buf(). s390: Fix ram_size updating in machine init Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-28Merge remote-tracking branch 'agraf/ppc-for-upstream-1.3' into stagingAnthony Liguori2-3/+5
* agraf/ppc-for-upstream-1.3: fbdev: fix pixman compile on old pixman vl.c: Fix broken -usb option pseries: Fix bug in PCI MSI allocation kvm: fix incorrect length in a loop over kvm dirty pages map PPC: Fix missing TRACE exception hw/ide/macio: Fix segfault caused by NULL DMAContext* Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-28virtio-scsi: Fix subtle (guest) endian bugDavid Gibson1-2/+2
The virtio-scsi config space is, by specification, in guest endian (which is ill-defined, but there you go). In virtio_scsi_get_config() we set up all the fields in there, using stl_raw(). Which is a problem for the max_channel and max_target fields, which are 16-bit, not 32-bit. For little-endian targets we get away with it by accident, since the first two bytes will still be correct, and the extra two bytes written (with zeroes) will be overwritten correctly by the next store. But for big-endian guests, this means the max_target field ends up as zero, which means the guest will only recognize a single disk on the virtio-scsi bus. This patch fixes the problem. Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Paul 'Rusty' Russell <rusty@rustcorp.com.au> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2012-11-28virtio-scsi: Fix some endian bugs with virtio-scsiDavid Gibson1-3/+5
The virtio-scsi specification does not specify the correct endianness for fields in the request structure. It's therefore best to assume that it is "guest native" endian since that's the (stupid and poorly defined) norm in virtio. However, the qemu device for virtio-scsi has no byteswaps at all, and so will break if the guest has different endianness from the host. This patch fixes it by adding tswap() calls for the sense_len and resid fields in the request structure. In theory status_qualifier needs swaps as well, but that field is never actually touched. The tag field is a uint64_t, but since its value is completely arbitrary, it might as well be uint8_t[8] and so it does not need swapping. Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Paul 'Rusty' Russell <rusty@rustcorp.com.au> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2012-11-27rtc: Only call rtc_set_cmos when Register B SET flag is disabled.Alex Horn1-1/+5
This bug occurs when the SET flag of Register B is enabled. When an RTC data register (i.e. any of the ten time/calender CMOS bytes) is set, the data is (as expected) correctly stored in the cmos_data array. However, since the SET flag is enabled, the function rtc_set_time is not invoked. As a result, the field base_rtc in RTCState remains uninitialized. This causes a problem on subsequent writes which can end up overwriting data. To see this, consider writing data to Register A after having written data to any of the RTC data registers; the following figure illustrates the call stack for the Register A write operation: +- cmos_io_port_write +-- check_update_timer +---- get_next_alarm +------ rtc_update_time In rtc_update_time, get_guest_rtc calculates the wrong time and overwrites the previously written RTC data register values. Signed-off-by: Alex Horn <alex.horn@cs.ox.ac.uk> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-27virtio-rng: do not use g_assert_cmpintPaolo Bonzini1-2/+1
g_assert_cmpint is not available on glib 2.12, which is the minimum version required to build QEMU (we only require 2.16 to run tests, since that is the first version including GTester). Do not use it in hardware models, use a normal assertion instead. This fixes the buildbot failure for default_x86_64_rhel5. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26virtio-rng: fix typos, commentsAmit Shah1-4/+3
Fix typos, whitespace and update comments to match current implementation. Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26virtio-rng: disable timer on device removalAmit Shah1-0/+2
Disable the rate-limit timer on device remove (e.g. hot-unplug). Signed-off-by: Amit Shah <amit.shah@redhat.com> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26virtio-rng: remove extra request for entropyAmit Shah1-7/+0
If we got fewer bytes from the backend than requested, don't poke the backend for more bytes; the guest will ask for more (or if the guest has already asked for more, the backend knows about it via handle_input()). Signed-off-by: Amit Shah <amit.shah@redhat.com> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26virtio-rng: use virtqueue_get_avail_bytes, fix migrationAmit Shah1-64/+12
Popping an elem from the vq just to find out its length causes problems with save/load later on. Use the new virtqueue_get_avail_bytes() function instead, saves us the complexity in the migration code, as well as makes the migration endian-safe. Signed-off-by: Amit Shah <amit.shah@redhat.com> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26i8259: Fix PIC_COMMON() macroAndreas Färber1-1/+1
It used a wrong struct type name since its introduction in 8f04ee0882aec9fe91fb70f767edf5dacff59835 (isa: pic: convert to QEMU Object Model), apparently it is unused so far. Signed-off-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26qdev: simplify (de)allocation of busesPaolo Bonzini4-16/+3
All conditional deallocation can now be done with object_delete. Remove the @qom_allocated and @glib_allocated fields; replace the latter with a direct assignment of the @free function pointer. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26qdev: move bus removal to object_unparentPaolo Bonzini1-3/+13
Add an ObjectClass method that is done at object_unparent time. It should remove any backlinks to the object in the composition tree, so that object_delete will be able to drop the last reference and free the object. Use it for qdev buses. Reviewed-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26sclp: Fix uninitialized var in handle_write_event_buf().Cornelia Huck1-1/+2
Some gcc versions rightly complain about a possibly unitialized rc, so let's move setting it before the QTAILQ_FOREACH(). Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com> Signed-off-by: Alexander Graf <agraf@suse.de>
2012-11-26s390: Fix ram_size updating in machine initHeinz Graalfs1-1/+0
The global variable 'ram_size' is hidden by the local variable declaration in s390_init(). Since we want to update the global ram size in certain cases we must not use a local ram_size variable. - This fixes booting with unusual ram sizes like -m 67001 - This changes behaviour back to the situation before commit 5f072e1f3075bd869e0ace9f2545a85992ac0084 (create struct for machine initialization arguments) Signed-off-by: Heinz Graalfs <graalfs@linux.vnet.ibm.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Alexander Graf <agraf@suse.de>
2012-11-26pseries: Fix bug in PCI MSI allocationAlexey Kardashevskiy1-1/+1
In one of the recent reworks to the XICS code, a bug was introduced where we use the wrong sense and allocate level interrupts instead of message interrupts for PCI MSIs. This patch fixes it. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de>
2012-11-26hw/ide/macio: Fix segfault caused by NULL DMAContext*Peter Maydell1-2/+4
Pass qemu_sglist_init the global dma_context_memory rather than a NULL pointer; this fixes a segfault in dma_memory_map() when the guest starts using DMA. Reported-by: Amadeusz Sławiński <amade@asmblr.net> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Alexander Graf <agraf@suse.de>
2012-11-26hmp: do not crash on invalid SCSI hotplugPaolo Bonzini1-1/+7
Commit 0d93692 (qdev: Convert busses to QEMU Object Model, 2012-05-02) removed a check on the type of the bus where a SCSI disk is hotplugged. However, hot-plugging to the wrong kind of device now causes a crash due to either a NULL pointer dereference (avoided by the previous patch) or a failed QOM cast. Instead, in this case we need to use object_dynamic_cast and check for the result, similar to what was done before that commit. Reported-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26q35: Add kvmclock supportJan Kiszka1-0/+3
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26q35: Fix non-PCI IRQ processing in ich9_lpc_update_apicJan Kiszka1-2/+4
Avoid passing a non-PCI IRQ to ich9_gsi_to_pirq. It's wrong and triggers an assertion. Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26q35: Suppress SMM BIOS initialization under KVMJan Kiszka1-0/+7
Same as for i44fx: KVM does not support SMM yet. Signal it initialized to Seabios to avoid failures. Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26ich9: Add i82801b11 dmi-to-pci bridgeJason Baron2-0/+126
Add the dmi-to-pci i82801b11 bridge chip. This is the pci bridge chip that q35 uses on its host bus for PCI bus arbitration. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26q35: Introduce q35 pc based chipset emulatorIsaku Yamahata5-1/+682
pc q35 based chipset emulator to support pci express natively. Based on Anthony Liguori's suggestion, the machine name is 'q35-next', with an alias of 'q35'. At this point, there are no compatibility guarantees. When the chipset stabilizes more, we will begin to version the machine names. Major features which still need to be added: -Migration support (mostly around ahci) -ACPI hotplug support (pcie hotplug support is working) -Passthrough support Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26ich9: Add smbusJason Baron2-1/+160
Add support for the ich9 smbus chip. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26ich9: Add the lpc chipJason Baron2-0/+524
Add support for the ICH9 LPC chip. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26ich9: Add acpi support and definitionsJason Baron5-1/+582
Lay the groundwork for subsequent ich9 support. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26pc/piix_pci: factor out smram/pam logicIsaku Yamahata4-53/+200
Factor out smram/pam logic for use by other chipsets, namely q35 at this point. Note: Should be factored out into a generic North Bridge Class. [jbaron@redhat.com: changes for updated memory API] Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26pc_piix: Move kvm irq routing functions out of pc_piix.cJason Baron2-43/+42
Rename: kvm_piix3_gsi_handlei() -> kvm_pc_gsi_handler() kvm_piix3_setup_irq_routing() -> kvm_pc_setup_irq_routing() This is in preparation for other users, namely q35 at this time. Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26pc: Move ioapic_init() from pc_piix.c to pc.cJason Baron3-24/+27
Move ioapic_init() from pc_piix.c to pc.c, to make it a common function. Rename ioapic_init() -> ioapic_init_gsi(). Move to pc.h so q35 can use them as well. Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26pc, pc_piix: split out pc nic initializationIsaku Yamahata3-8/+17
Factor out pc nic initialization. This simplifies the pc initialization and will reduce the code duplication of q35 pc initialization. Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Jason Baron <jbaron@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-26Merge remote-tracking branch 'kraxel/usb.72' into stagingAnthony Liguori4-80/+116
* kraxel/usb.72: usb-redir: Don't handle interrupt output packets async usb-redir: Split usb_handle_interrupt_data into separate in/out functions usb-smartcard-reader: Properly NAK interrupt eps when we've no events usb-bt: Return NAK instead of STALL when interrupt ep has no data uhci: Fix double unlink uhci: Don't allow the guest to set port-enabled when there is no dev connected uhci: Add a completions_only flag for async completions Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2012-11-21usb-redir: Don't handle interrupt output packets asyncHans de Goede1-12/+14
Instead report them as successfully completed directly on submission, this has 2 advantages: 1) This matches the timing of interrupt output packets on real hardware, with the previous async handling, if an ep has an interval of say 500 ms, then there would be 500+ ms between the submission and the guest seeing the completion, as we wont do the write back until the qh gets polled again. And in the mean time the guest may very well have timed out, as the guest can reasonable expect a much quicker completion. 2) This fixes interrupt output packets potentially getting send twice surrounding a migration. As we delay the writeback to guest memory until the qh gets polled again, there is a window between completion and writeback where migration can happen, in this case the destination will not know about the completion, and it will execute the packet *again* But it does also come with a disadvantage: 1) If the actual interrupt out to the real usb device fails, there is no way to report this back to the guest. This patch assumes however that interrupt outs in practice never fail, as they are only used by specialized drivers, which are unlikely to issue illegal requests (unlike general class drivers which often issue requests which some devices don't implement). And that thus the advantages outway the disadvantage. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-21usb-redir: Split usb_handle_interrupt_data into separate in/out functionsHans de Goede1-65/+71
No functional changes. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-21usb-smartcard-reader: Properly NAK interrupt eps when we've no eventsHans de Goede1-0/+2
When we've no data to return from the interrupt endpoint, return NAK rather then a 0 length packet. CC: Alon Levy <alevy@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-21usb-bt: Return NAK instead of STALL when interrupt ep has no dataHans de Goede1-4/+21
I noticed this while making all devices with interrupt endpoints properly do wakeup. While at it also add wakeup support. Note that I've not tested this, but returning STALL for an interrupt ep which has no data is cleary the wrong thing to do. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-21uhci: Fix double unlinkHans de Goede1-1/+0
uhci_async_cancel() already does a uhci_async_unlink(). Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-21uhci: Don't allow the guest to set port-enabled when there is no dev connectedHans de Goede1-0/+4
It is possible for device disconnect and the guest trying to reset the port (because of USB xact errors prior to the disconnect getting signaled) to race, when we hit this race, the guest will write the port-control register with its pre-disconnect value + the reset bit set, after which we have a disconnected device with its port-enabled bit set in its port-control register, which is no good :) Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2012-11-21uhci: Add a completions_only flag for async completionsHans de Goede1-4/+10
Add a completions_only flag, and set this when running process_frame for async completion handling, this fixes 2 issues in a single patch: 1) It makes sure async completed packets get written to guest mem immediately, even if all the bandwidth for the frame was consumed from the timer run process_frame. This is necessary as delaying their writeback to the next frame can cause the completion to get lost on migration. 2) The calling of process_frame from a bh on async completion causes iso tds to get server more often they should, messing up usb sound class device timing. By only processing completed packets, the iso tds get skipped fixing this. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>