Skip to content
Snippets Groups Projects
  1. Apr 17, 2012
    • Gerd Hoffmann's avatar
      usb: use USBDescriptor for device qualifier descriptors. · 3cfeee61
      Gerd Hoffmann authored
      
      Add device qualifier substruct to USBDescriptor,
      use it in the descriptor generator code.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      3cfeee61
    • Gerd Hoffmann's avatar
      usb: add USBDescriptor, use for device descriptors. · d3f904ea
      Gerd Hoffmann authored
      
      This patch adds a new type for the binary representation of usb
      descriptors.  It is put into use for the descriptor generator code
      where the struct replaces the hard-coded offsets.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      d3f904ea
    • Hans de Goede's avatar
      usb-ehci: frindex always is a 14 bits counter · 58ea88d8
      Hans de Goede authored
      
      frindex always is a 14 bits counter, and not a 13 bits one as we were
      emulating. There are some subtle hints to this in the spec, first of all
      "Table 2-12. FRINDEX - Frame Index Register" says:
      "Bit 13:0 Frame Index. The value in this register increments at the end of
      each time frame (e.g. micro-frame). Bits [N:3] are used for the Frame List
      current index. This means that each location of the frame list is accessed
      8 times (frames or micro-frames) before moving to the next index. The
      following illustrates values of N based on the value of the Frame List
      Size field in the USBCMD register.
      
      USBCMD[Frame List Size]	Number Elements		 N
      00b				1024		12
      01b				 512		11
      10b				 256		10
      11b			    Reserved"
      
      Notice how the text talks about "Bits [N:3]" are used ..., it does
      NOT say that when N == 12 (our case) the counter will wrap from 8191 to 0,
      or in otherwords that it is a 13 bits counter (bits 0 - 12).
      
      The other hint is in "Table 2-10. USBSTS USB Status Register Bit Definitions":
      
      "Bit 3 Frame List Rollover - R/WC. The Host Controller sets this bit to a one
      when the Frame List Index (see Section 2.3.4) rolls over from its maximum value
      to zero. The exact value at which the rollover occurs depends on the frame
      list size. For example, if the frame list size (as programmed in the Frame
      List Size field of the USBCMD register) is 1024, the Frame Index Register
      rolls over every time FRINDEX[13] toggles. Similarly, if the size is 512,
      the Host Controller sets this bit to a one every time FRINDEX[12] toggles."
      
      Notice how this text talks about setting bit 3 when bit 13 of frindex toggles
      (when there are 1024 entries, so our case), so this indicates that frindex
      has a bit 13 making it a 14 bit counter.
      
      Besides these clear hints the real proof is in the pudding. Before this
      patch I could not stream data from a USB2 webcam under Windows XP, after
      this cam using a USB2 webcam under Windows XP works fine, and no regressions
      with other operating systems were seen.
      
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      58ea88d8
    • Gerd Hoffmann's avatar
      usb-ehci: fix ehci_child_detach · 088351a7
      Gerd Hoffmann authored
      
      Looks like a cut+paste bug from ehci_detach.  When the device itself is
      detached from a ehci port (ehci_detach op) we have to clear the
      device pointer for the companion port too.  When a device gets removed
      from a downstream port of a usb hub (ehci_child_detach op) the ehci port
      where the usb hub is plugged in is not affected.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      088351a7
    • Gerd Hoffmann's avatar
      usb-hub: add tracepoints · 529f8f9f
      Gerd Hoffmann authored
      
      Add tracepoints to the usb hub emulation.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      529f8f9f
    • Gerd Hoffmann's avatar
      usb_packet_set_state: handle p->ep == NULL · f5bf14bf
      Gerd Hoffmann authored
      
      usb_packet_set_state can be called with p->ep = NULL.  The tracepoint
      there tries to log endpoint information, which leads to a segfault.
      This patch makes usb_packet_set_state handle the NULL pointer properly.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      f5bf14bf
    • Gerd Hoffmann's avatar
      usb-host: add property to turn off pipelining · 39c20577
      Gerd Hoffmann authored
      
      Add a property to usb-host to disable the bulk endpoint pipelining.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      39c20577
    • Gerd Hoffmann's avatar
      usb-host: add usb packet to request tracepoints · 19b89252
      Gerd Hoffmann authored
      
      Add pointer to USBPacket to all tracepoints tracking requests to make it
      easier to identify them when multiple requests are in flight.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      19b89252
    • Gerd Hoffmann's avatar
      usb-host: trace canceled requests · 6aebe407
      Gerd Hoffmann authored
      
      Add tracepoints to track canceled requests.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      6aebe407
    • Gerd Hoffmann's avatar
      usb-host: trace emulated requests · e382e751
      Gerd Hoffmann authored
      
      Add tracepoint to track completion of emulated control requests.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      e382e751
    • Gerd Hoffmann's avatar
      Add bootindex support to usb-host and usb-redir · 65bb3a5c
      Gerd Hoffmann authored
      
      When passing through a usb pendrive seabios will present it in the F12
      boot menu and will happily boot from it.
      
      This patch adds bootorder support so you can even make it the default
      boot device.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      65bb3a5c
    • Gerd Hoffmann's avatar
      usb-uhci: queuing fix · ee008ba6
      Gerd Hoffmann authored
      
      When we queue up usb packets we may happen to find a already queued
      packet, which also might be finished at that point already.  We don't
      want continue processing the packet at this point though, so lets
      just signal back we've found a in-flight packet when in queuing mode.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      ee008ba6
    • Gerd Hoffmann's avatar
      usb-uhci: stop queue filling when we find a in-flight td · 52b0fecd
      Gerd Hoffmann authored
      
      Not only QHs can form rings, but TDs too.  With the new
      queuing/pipelining support we are following TD chains and
      can actually walk in circles.  An assert() prevents us from
      entering an endless loop then.
      
      Fix is easy:  Just stop queuing when we figure the TD we are
      about to queue up is in flight already.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      52b0fecd
    • Gerd Hoffmann's avatar
      usb/vmstate: add parent dev path · eeb0cf9a
      Gerd Hoffmann authored
      
      ... to make vmstate id string truely unique with multiple host
      controllers, i.e. move from "1/usb-ptr" to "0000:00:01.3/1/usb-ptr"
      (usb tabled connected to piix3 uhci).
      
      This obviously breaks migration.  To handle this the usb bus
      property "full-path" is added.  When setting this to false old
      behavior is maintained.  This way current qemu will be compatible
      with old versions when started using '-M pc-$oldversion'.
      
      Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
      eeb0cf9a
  2. Apr 16, 2012
    • Peter Portante's avatar
      qemu-timer.c: Remove 250us timeouts · 158fd3ce
      Peter Portante authored
      
      Basically, the main wait loop calls qemu_run_all_timers() unconditionally. The
      first thing this routine used to do is to see if a timer had been serviced,
      and then reset the loop timeout to the next deadline.
      
      However, the new deadlines had not been calculated at that point, as
      qemu_run_timers() had not been called yet for each of the clocks. So
      qemu_rearm_alarm_timer() would end up with a negative or zero deadline, and
      default to setting a 250us timeout for the loop.
      
      As qemu_run_timers() is called for each clock, the real deadlines would be put
      in place, but because a loop timeout was already set, the loop timeout would
      not be changed.
      
      Once that 250us timeout fired, the real deadline would be used for the
      subsequent timeout.
      
      For idle VMs, this effectively doubles the number of times through the loop,
      doubling the number of select() system calls, timer calls, etc. putting added
      scheduling pressure on the kernel. And under cgroups, this really causes a big
      problem because the cgroup code does not scale well.
      
      By simply running the timers before trying to rearm the timer, we always rearm
      with a non-zero deadline, effectively halving the number of system calls.
      
      Signed-off-by: default avatarPeter Portante <pportant@redhat.com>
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      158fd3ce
    • Anthony Liguori's avatar
      Merge remote-tracking branch 'kiszka/queues/pending' into staging · fc34e77b
      Anthony Liguori authored
      
      * kiszka/queues/pending:
        vapic: Disable for pre-1.1 machines
        Kick io-thread on qemu_chr_accept_input
        pcnet: Properly handle TX requests during Link Fail
        pcnet: Clear ERR in CSR0 on stop
        signrom: Rewrite as python script
      
      Conflicts:
      	hw/pc_piix.c
      
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      fc34e77b
    • Anthony Liguori's avatar
      Merge remote-tracking branch 'mst/tags/for_anthony' into staging · 52346e8c
      Anthony Liguori authored
      * mst/tags/for_anthony:
        pci: fix corrupted pci conf index register by unaligned write
        acpi: explicitly account for >1 device per slot
        acpi_piix4: Re-define PCI hotplug eject register read
        acpi_piix4: Remove PCI_RMV_BASE write code
        acpi_piix4: Fix PCI hotplug race
        acpi_piix4: Disallow write to up/down PCI hotplug registers
        virtio-pci: change virtio balloon PCI class code
        ivshmem: add missing msix calls
        vhost: readd assert statement
        vhost: Fix size of dirty log sync on resize
        pc: reduce duplication in compat machine types
        piix_pci: fix typo in i400FX chipset init code
      52346e8c
    • Anthony Liguori's avatar
      Merge remote-tracking branch 'sstabellini/for_anthony' into staging · 8a6b8708
      Anthony Liguori authored
      * sstabellini/for_anthony:
        xen: introduce an event channel for buffered io event notifications
        xen-mapcache: don't unmap locked entry during mapcache invalidation
        Xen, mapcache: Fix the compute of the size of bucket.
        xen: handle backend deletion from xenstore
        Xen: Add xen-apic support and hook it up.
        Xen: basic HVM MSI injection support.
      8a6b8708
    • Jan Kiszka's avatar
      vapic: Disable for pre-1.1 machines · 9bea6a29
      Jan Kiszka authored
      
      The kvmvapic was not present in older QEMU versions, thus must be
      disabled in compat machines.
      
      Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      9bea6a29
    • Jan Kiszka's avatar
      Kick io-thread on qemu_chr_accept_input · 98c8ee1d
      Jan Kiszka authored
      
      Once a chr frontend is able to receive input again, we need to inform
      the io-thread about this fact. Otherwise, main_loop_wait may continue to
      select without the related backend file descriptor in its set. This can
      cause high input latencies if only low-rate events arrive otherwise.
      
      Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      98c8ee1d
    • Jan Kiszka's avatar
      pcnet: Properly handle TX requests during Link Fail · ef45c914
      Jan Kiszka authored
      
      As long as we have no link and we aren't in internal loopback mode, no
      packet must be sent. Instead, LCAR needs to be set in any active TX
      descriptor and also CERR in CSR0.
      
      Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      ef45c914
    • Jan Kiszka's avatar
      pcnet: Clear ERR in CSR0 on stop · 6655124d
      Jan Kiszka authored
      
      pcnet_stop already clears any reason (BABL, CERR, MISS, MERR) why ERR
      (bit 15) should be set in CRS0. So we have to clear that bit as well.
      
      Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      6655124d
    • Jan Kiszka's avatar
      signrom: Rewrite as python script · 0d6b9cc7
      Jan Kiszka authored
      
      Now that we have a hard dependency on python anyway, we can replace the
      slow shell script to calculate the option ROM checksum with a fast AND
      portable python version. Tested both with python 2.7 and 3.1.
      
      Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      0d6b9cc7
  3. Apr 15, 2012
Loading